mirror of
https://github.com/anklimov/lighthub
synced 2025-12-06 19:59:50 +03:00
NodeRed Dashbord color picker compatible parser now
(tolerant to MQTT payload arrays like here): [myhome/in/kuh/set] hsv(65, 100%, 86%) Item=kuh Sub=1 Cmd=0 Par= <65> <100> <86>
This commit is contained in:
@@ -52,7 +52,7 @@ const char SETPOINT_P[] PROGMEM = "setpoint";
|
||||
const char POWER_P[] PROGMEM = "power";
|
||||
const char VOL_P[] PROGMEM = "vol";
|
||||
const char HEAT_P[] PROGMEM = "heat";
|
||||
const char CSV_P[] PROGMEM = "csv";
|
||||
const char HSV_P[] PROGMEM = "hsv";
|
||||
const char RGB_P[] PROGMEM = "rgb";
|
||||
const char RPM_P[] PROGMEM = "rpm";
|
||||
|
||||
@@ -85,10 +85,11 @@ int txt2cmd(char *payload) {
|
||||
else if (strcmp_P(payload, FALSE_P) == 0) cmd = CMD_OFF;
|
||||
else if (strcmp_P(payload, INCREASE_P) == 0) cmd = CMD_UP;
|
||||
else if (strcmp_P(payload, DECREASE_P) == 0) cmd = CMD_DN;
|
||||
else if (*payload == '-' || (*payload >= '0' && *payload <= '9')) cmd = 0;
|
||||
else if (*payload == '{') cmd = -2;
|
||||
else if (*payload == '#') cmd = -3;
|
||||
|
||||
else if (*payload == '-' || (*payload >= '0' && *payload <= '9')) cmd = CMD_NUM; //0
|
||||
else if (*payload == '{') cmd = CMD_JSON;
|
||||
else if (*payload == '#') cmd = CMD_RGB;
|
||||
else if (strncmp_P(payload, HSV_P, 3) == 0) cmd = CMD_HSV;
|
||||
else if (strncmp_P(payload, RGB_P, strlen (RGB_P)) == 0) cmd = CMD_RGB;
|
||||
return cmd;
|
||||
}
|
||||
|
||||
@@ -104,7 +105,7 @@ int txt2subItem(char *payload) {
|
||||
else if (strcmp_P(payload, POWER_P) == 0) cmd = S_POWER;
|
||||
else if (strcmp_P(payload, VOL_P) == 0) cmd = S_VOL;
|
||||
else if (strcmp_P(payload, HEAT_P) == 0) cmd = S_HEAT;
|
||||
else if (strcmp_P(payload, CSV_P) == 0) cmd = S_CSV;
|
||||
else if (strcmp_P(payload, HSV_P) == 0) cmd = S_HSV;
|
||||
else if (strcmp_P(payload, RGB_P) == 0) cmd = S_RGB;
|
||||
return cmd;
|
||||
}
|
||||
@@ -263,8 +264,11 @@ if (subsubItem = strchr(subItem, '/'))
|
||||
if (isSet)
|
||||
{
|
||||
int cmd = txt2cmd(payload);
|
||||
debugSerial<<F("Txt2Cmd:")<<cmd<<endl;
|
||||
switch (cmd) {
|
||||
case 0: {
|
||||
case CMD_NUM:
|
||||
case CMD_HSV:
|
||||
{
|
||||
short i = 0;
|
||||
int Par[3];
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ e-mail anklimov@gmail.com
|
||||
#define S_POWER 5
|
||||
#define S_VOL 6
|
||||
#define S_HEAT 7
|
||||
#define S_CSV 8
|
||||
#define S_HSV 8
|
||||
#define S_RGB 9
|
||||
#define S_RPM 10
|
||||
|
||||
@@ -43,6 +43,12 @@ e-mail anklimov@gmail.com
|
||||
#define CH_AC_HAIER 10 //AC Haier
|
||||
#define CH_WHITE 127//
|
||||
|
||||
#define CMD_NUM 0
|
||||
#define CMD_UNKNOWN -1
|
||||
#define CMD_JSON -2
|
||||
#define CMD_RGB -3
|
||||
#define CMD_HSV -4
|
||||
|
||||
#define CMD_ON 1
|
||||
#define CMD_OFF 2
|
||||
#define CMD_RESTORE 3 //on only if was turned off by CMD_HALT
|
||||
@@ -50,8 +56,8 @@ e-mail anklimov@gmail.com
|
||||
#define CMD_HALT 5 //just Off
|
||||
#define CMD_XON 6 //just on
|
||||
#define CMD_XOFF 7 //off only if was previously turned on by CMD_XON
|
||||
#define CMD_UP 8 //just on
|
||||
#define CMD_DN 9 //off only if was previously turned on by CMD_XON
|
||||
#define CMD_UP 8 //increase
|
||||
#define CMD_DN 9 //decrease
|
||||
#define CMD_SET 0xe
|
||||
#define CMD_MASK 0xf
|
||||
|
||||
|
||||
@@ -18,6 +18,11 @@
|
||||
#define SCL_HIGH() (GPEC = (1 << twi_scl))
|
||||
#endif
|
||||
|
||||
#if defined(ARDUINO_ARCH_AVR)
|
||||
#define WAK_PIN 3 // for LightHub UEXT SCS Pin
|
||||
#endif
|
||||
|
||||
|
||||
class Input;
|
||||
class in_ccs811 : public abstractIn {
|
||||
public:
|
||||
|
||||
@@ -78,15 +78,22 @@ void SetAddr(char *out, uint8_t *addr) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// chan is pointer to pointer to string
|
||||
// Function return first retrived integer and move pointer to position next after ','
|
||||
int getInt(char **chan) {
|
||||
if (chan && *chan && **chan)
|
||||
{
|
||||
//Skip non-numeric values
|
||||
while (**chan && !(**chan == '-' || (**chan >= '0' && **chan<='9'))) *chan += 1;
|
||||
int ch = atoi(*chan);
|
||||
*chan = strchr(*chan, ',');
|
||||
|
||||
//Move pointer to next element (after ,)
|
||||
*chan = strchr(*chan, ',');
|
||||
if (*chan) *chan += 1;
|
||||
//Serial.print(F("Par:")); Serial.println(ch);
|
||||
return ch;
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user