mirror of
https://github.com/anklimov/lighthub
synced 2025-12-06 11:49:51 +03:00
@@ -10,7 +10,7 @@
|
|||||||
-DNO_HOMIE
|
-DNO_HOMIE
|
||||||
-DCSSHDC_DISABLE
|
-DCSSHDC_DISABLE
|
||||||
-DSPILED_DISABLE
|
-DSPILED_DISABLE
|
||||||
-DAC_DISABLE
|
#-DAC_DISABLE
|
||||||
-DSYSLOG_ENABLE
|
-DSYSLOG_ENABLE
|
||||||
-DPID_DISABLE
|
-DPID_DISABLE
|
||||||
-DOTA
|
-DOTA
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ int abstractCh::publishTopic(const char* topic, const char * value, const char*
|
|||||||
{
|
{
|
||||||
strncpy(addrstr,topic,sizeof(addrstr));
|
strncpy(addrstr,topic,sizeof(addrstr));
|
||||||
if (!strchr(addrstr,'/')) setTopic(addrstr,sizeof(addrstr),T_OUT,topic);
|
if (!strchr(addrstr,'/')) setTopic(addrstr,sizeof(addrstr),T_OUT,topic);
|
||||||
strncat(addrstr,subtopic,sizeof(addrstr));
|
strncat(addrstr,subtopic,sizeof(addrstr)-1);
|
||||||
if (mqttClient.connected() && lanStatus == OPERATION && !ethernetIdleCount)
|
if (mqttClient.connected() && lanStatus == OPERATION && !ethernetIdleCount)
|
||||||
{
|
{
|
||||||
mqttClient.publish(addrstr, value, true);
|
mqttClient.publish(addrstr, value, true);
|
||||||
|
|||||||
@@ -388,6 +388,14 @@ void Item::setVal(long int par) // Only store if VAL is int (autogenerated or c
|
|||||||
itemVal->type = aJson_Int;
|
itemVal->type = aJson_Int;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Item::setFloatVal(float par) // Only store if VAL is int (autogenerated or config-defined)
|
||||||
|
{
|
||||||
|
if (!itemVal || (itemVal->type != aJson_Int && itemVal->type != aJson_Float && itemVal->type != aJson_NULL)) return;
|
||||||
|
//debugSerial<<F(" Store ")<<F(" Val=")<<par<<endl;
|
||||||
|
itemVal->valuefloat = par;
|
||||||
|
itemVal->type = aJson_Float;
|
||||||
|
}
|
||||||
|
|
||||||
void Item::setSubtype(uint8_t par) // Only store if VAL is int (autogenerated or config-defined)
|
void Item::setSubtype(uint8_t par) // Only store if VAL is int (autogenerated or config-defined)
|
||||||
{
|
{
|
||||||
if (!itemVal || (itemVal->type != aJson_Int && itemVal->type != aJson_Float && itemVal->type != aJson_NULL)) return;
|
if (!itemVal || (itemVal->type != aJson_Int && itemVal->type != aJson_Float && itemVal->type != aJson_NULL)) return;
|
||||||
@@ -1067,9 +1075,9 @@ switch (itemType) {
|
|||||||
pinMode(iaddr, OUTPUT);
|
pinMode(iaddr, OUTPUT);
|
||||||
|
|
||||||
if (inverse)
|
if (inverse)
|
||||||
digitalWrite(iaddr, k = ((icmd == CMD_ON) ? LOW : HIGH));
|
digitalWrite(iaddr, k = ((icmd == CMD_ON || icmd == CMD_AUTO) ? LOW : HIGH));
|
||||||
else
|
else
|
||||||
digitalWrite(iaddr, k = ((icmd == CMD_ON) ? HIGH : LOW));
|
digitalWrite(iaddr, k = ((icmd == CMD_ON || icmd == CMD_AUTO) ? HIGH : LOW));
|
||||||
debugSerial<<F("Pin:")<<iaddr<<F("=")<<k<<endl;
|
debugSerial<<F("Pin:")<<iaddr<<F("=")<<k<<endl;
|
||||||
status2Send |= SEND_COMMAND | SEND_IMMEDIATE;
|
status2Send |= SEND_COMMAND | SEND_IMMEDIATE;
|
||||||
res=1;
|
res=1;
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ class Item
|
|||||||
void setFlag (short flag);
|
void setFlag (short flag);
|
||||||
void clearFlag (short flag);
|
void clearFlag (short flag);
|
||||||
void setVal(long int par);
|
void setVal(long int par);
|
||||||
|
void setFloatVal(float par);
|
||||||
void setSubtype(uint8_t par);
|
void setSubtype(uint8_t par);
|
||||||
int Poll(int cause);
|
int Poll(int cause);
|
||||||
int SendStatus(int sendFlags);
|
int SendStatus(int sendFlags);
|
||||||
|
|||||||
@@ -361,13 +361,19 @@ itemCmd itemCmd::assignFrom(itemCmd from, short chanType)
|
|||||||
param.v=constrain(from.param.asfloat,0.,255.);
|
param.v=constrain(from.param.asfloat,0.,255.);
|
||||||
break;
|
break;
|
||||||
case ST_VOID:
|
case ST_VOID:
|
||||||
break;
|
break;
|
||||||
|
case ST_STRING:
|
||||||
|
cmd.itemArgType=from.cmd.itemArgType;
|
||||||
|
param.asString=from.param.asString;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
debugSerial<<F("Wrong Assignment ")<<from.cmd.itemArgType<<F("->")<<cmd.itemArgType<<endl;
|
debugSerial<<F("Wrong Assignment ")<<from.cmd.itemArgType<<F("->")<<cmd.itemArgType<<endl;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ST_VOID:
|
case ST_VOID:
|
||||||
cmd.itemArgType=from.cmd.itemArgType;
|
cmd.itemArgType=from.cmd.itemArgType;
|
||||||
|
param=from.param;
|
||||||
|
break;
|
||||||
|
|
||||||
case ST_INT32:
|
case ST_INT32:
|
||||||
case ST_UINT32:
|
case ST_UINT32:
|
||||||
@@ -379,12 +385,17 @@ itemCmd itemCmd::assignFrom(itemCmd from, short chanType)
|
|||||||
param.h=from.param.h;
|
param.h=from.param.h;
|
||||||
param.s=from.param.s;
|
param.s=from.param.s;
|
||||||
cmd.itemArgType=ST_HSV255;
|
cmd.itemArgType=ST_HSV255;
|
||||||
|
break;
|
||||||
|
case ST_STRING:
|
||||||
|
cmd.itemArgType=from.cmd.itemArgType;
|
||||||
|
param.asString=from.param.asString;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
param.asInt32=from.param.asInt32;
|
param.asInt32=from.param.asInt32;
|
||||||
cmd.itemArgType=from.cmd.itemArgType;
|
cmd.itemArgType=from.cmd.itemArgType;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ST_HS:
|
case ST_HS: //ToDo - string ?
|
||||||
param.v=from.getPercents255();
|
param.v=from.getPercents255();
|
||||||
cmd.itemArgType=ST_HSV255;
|
cmd.itemArgType=ST_HSV255;
|
||||||
break;
|
break;
|
||||||
@@ -394,6 +405,11 @@ itemCmd itemCmd::assignFrom(itemCmd from, short chanType)
|
|||||||
case ST_FLOAT_CELSIUS:
|
case ST_FLOAT_CELSIUS:
|
||||||
switch (from.cmd.itemArgType)
|
switch (from.cmd.itemArgType)
|
||||||
{
|
{
|
||||||
|
case ST_STRING:
|
||||||
|
cmd.itemArgType=from.cmd.itemArgType;
|
||||||
|
param.asString=from.param.asString;
|
||||||
|
break;
|
||||||
|
|
||||||
case ST_TENS:
|
case ST_TENS:
|
||||||
param.asfloat=from.param.asInt32/10.;
|
param.asfloat=from.param.asInt32/10.;
|
||||||
break;
|
break;
|
||||||
@@ -427,7 +443,7 @@ itemCmd itemCmd::assignFrom(itemCmd from, short chanType)
|
|||||||
param.h=from.param.h;
|
param.h=from.param.h;
|
||||||
param.s=from.param.s;
|
param.s=from.param.s;
|
||||||
cmd.itemArgType=ST_HSV255;
|
cmd.itemArgType=ST_HSV255;
|
||||||
break;
|
break;
|
||||||
case ST_VOID:
|
case ST_VOID:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -441,6 +457,10 @@ itemCmd itemCmd::assignFrom(itemCmd from, short chanType)
|
|||||||
case ST_RGB:
|
case ST_RGB:
|
||||||
switch (from.cmd.itemArgType)
|
switch (from.cmd.itemArgType)
|
||||||
{
|
{
|
||||||
|
case ST_STRING:
|
||||||
|
cmd.itemArgType=from.cmd.itemArgType;
|
||||||
|
param.asString=from.param.asString;
|
||||||
|
break;
|
||||||
case ST_RGBW:
|
case ST_RGBW:
|
||||||
// RGBW_flag=true;
|
// RGBW_flag=true;
|
||||||
case ST_RGB:
|
case ST_RGB:
|
||||||
@@ -950,13 +970,13 @@ bool itemCmd::loadItem(Item * item, uint16_t optionsFlag)
|
|||||||
|
|
||||||
Int((int32_t)item->itemVal->valueint);
|
Int((int32_t)item->itemVal->valueint);
|
||||||
//debugSerial<<F("Loaded Int:");
|
//debugSerial<<F("Loaded Int:");
|
||||||
debugOut();
|
//debugOut();
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case aJson_Float:
|
case aJson_Float:
|
||||||
Float(item->itemVal->valueint);
|
Float(item->itemVal->valuefloat);
|
||||||
//debugSerial<<F("Loaded Float:");
|
//debugSerial<<F("Loaded Float:");
|
||||||
debugOut();
|
//debugOut();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -988,7 +1008,20 @@ bool itemCmd::saveItem(Item * item, uint16_t optionsFlag)
|
|||||||
{
|
{
|
||||||
if (optionsFlag & SEND_COMMAND) item->setCmd(cmd.cmdCode);
|
if (optionsFlag & SEND_COMMAND) item->setCmd(cmd.cmdCode);
|
||||||
if (optionsFlag & SEND_PARAMETERS)
|
if (optionsFlag & SEND_PARAMETERS)
|
||||||
|
switch (cmd.itemArgType)
|
||||||
{
|
{
|
||||||
|
case ST_FLOAT:
|
||||||
|
case ST_FLOAT_CELSIUS:
|
||||||
|
item->setFloatVal(param.asfloat);
|
||||||
|
//
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ST_INT32:
|
||||||
|
case ST_UINT32:
|
||||||
|
item->setVal(param.asInt32);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
item->setSubtype(cmd.itemArgType);
|
item->setSubtype(cmd.itemArgType);
|
||||||
item->setVal(param.asInt32);
|
item->setVal(param.asInt32);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1494,16 +1494,15 @@ lan_status loadConfigFromHttp(int arg_cnt, char **args)
|
|||||||
} else {
|
} else {
|
||||||
errorSerial<<F("ERROR: Server returned ");
|
errorSerial<<F("ERROR: Server returned ");
|
||||||
errorSerial<<responseStatusCode<<endl;
|
errorSerial<<responseStatusCode<<endl;
|
||||||
// timerLanCheckTime = millis();// + 5000;
|
if (configLoaded) return IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;
|
||||||
return READ_RE_CONFIG;//-11;
|
else return READ_RE_CONFIG; //Load from NVRAM
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
debugSerial<<F("failed to connect\n");
|
debugSerial<<F("failed to connect\n");
|
||||||
// debugSerial<<F(" try again in 5 seconds\n");
|
if (configLoaded) return IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;
|
||||||
// timerLanCheckTime = millis();// + 5000;
|
else return READ_RE_CONFIG; //Load from NVRAM
|
||||||
return READ_RE_CONFIG;//-11;
|
}
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
#if defined(__SAM3X8E__) || defined(ARDUINO_ARCH_STM32) || defined (NRF5) //|| defined(ARDUINO_ARCH_ESP32) //|| defined(ARDUINO_ARCH_ESP8266)
|
#if defined(__SAM3X8E__) || defined(ARDUINO_ARCH_STM32) || defined (NRF5) //|| defined(ARDUINO_ARCH_ESP32) //|| defined(ARDUINO_ARCH_ESP8266)
|
||||||
#if defined(WIFI_ENABLE)
|
#if defined(WIFI_ENABLE)
|
||||||
@@ -1550,11 +1549,13 @@ lan_status loadConfigFromHttp(int arg_cnt, char **args)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorSerial<<F("Config retrieving failed\n");
|
errorSerial<<F("Config retrieving failed\n");
|
||||||
return READ_RE_CONFIG;//-11; //Load from NVRAM
|
if (configLoaded) return IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;
|
||||||
|
else return READ_RE_CONFIG; //Load from NVRAM
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorSerial<<F("Connect failed\n");
|
errorSerial<<F("Connect failed\n");
|
||||||
return READ_RE_CONFIG;//-11; //Load from NVRAM
|
if (configLoaded) return IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;
|
||||||
|
else return READ_RE_CONFIG; //Load from NVRAM
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1594,13 +1595,15 @@ lan_status loadConfigFromHttp(int arg_cnt, char **args)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorSerial<<F("Config retrieving failed\n");
|
errorSerial<<F("Config retrieving failed\n");
|
||||||
return READ_RE_CONFIG;//-11; //Load from NVRAM
|
if (configLoaded) return IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;
|
||||||
|
else return READ_RE_CONFIG; //Load from NVRAM
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errorSerial.printf("[HTTP] GET... failed, error: %s\n", httpClient.errorToString(httpResponseCode).c_str());
|
errorSerial.printf("[HTTP] GET... failed, error: %s\n", httpClient.errorToString(httpResponseCode).c_str());
|
||||||
httpClient.end();
|
httpClient.end();
|
||||||
return READ_RE_CONFIG;
|
if (configLoaded) return IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER;
|
||||||
}
|
else return READ_RE_CONFIG; //Load from NVRAM
|
||||||
|
}
|
||||||
httpClient.end();
|
httpClient.end();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -208,7 +208,6 @@ enum lan_status {
|
|||||||
RETAINING_COLLECTING = 5,
|
RETAINING_COLLECTING = 5,
|
||||||
OPERATION = 6,
|
OPERATION = 6,
|
||||||
OPERATION_NO_MQTT = 7,
|
OPERATION_NO_MQTT = 7,
|
||||||
|
|
||||||
DO_REINIT = -10,
|
DO_REINIT = -10,
|
||||||
REINIT = - 11,
|
REINIT = - 11,
|
||||||
DO_RECONNECT = 12,
|
DO_RECONNECT = 12,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
#define S_LOCK S_ADDITIONAL+1
|
#define S_LOCK S_ADDITIONAL+1
|
||||||
#define S_QUIET S_ADDITIONAL+2
|
#define S_QUIET S_ADDITIONAL+2
|
||||||
#define S_SWING S_ADDITIONAL+3
|
#define S_SWING S_ADDITIONAL+3
|
||||||
#define S_RAW S_ADDITIONAL+4
|
//#define S_RAW S_ADDITIONAL+4
|
||||||
|
|
||||||
extern void modbusIdle(void) ;
|
extern void modbusIdle(void) ;
|
||||||
class out_AC : public abstractOut {
|
class out_AC : public abstractOut {
|
||||||
|
|||||||
Reference in New Issue
Block a user