mirror of
https://github.com/anklimov/lighthub
synced 2025-12-08 04:39:49 +03:00
Persistent logic improvement, CMD_ON refinig, Vacom Air channel may open airGate if active
This commit is contained in:
@@ -58,6 +58,7 @@ int txt2cmd(char *payload) {
|
|||||||
else if (strcmp(payload, "HALT") == 0) cmd = CMD_HALT;
|
else if (strcmp(payload, "HALT") == 0) cmd = CMD_HALT;
|
||||||
else if (*payload == '-' || (*payload >= '0' && *payload <= '9')) cmd = 0;
|
else if (*payload == '-' || (*payload >= '0' && *payload <= '9')) cmd = 0;
|
||||||
else if (*payload == '{') cmd = -2;
|
else if (*payload == '{') cmd = -2;
|
||||||
|
else if (*payload == '#') cmd = -3;
|
||||||
|
|
||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
@@ -245,7 +246,7 @@ int Item::Ctrl(short cmd, short n, int *Par, boolean send) {
|
|||||||
st.s = Par[1];
|
st.s = Par[1];
|
||||||
st.v = Par[2];
|
st.v = Par[2];
|
||||||
setVal(st.aslong);
|
setVal(st.aslong);
|
||||||
//SendCmd(0,3,Par); // Send back triplet ?
|
if (send) SendCmd(0,3,Par); // Send back triplet ?
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CH_PWM:
|
case CH_PWM:
|
||||||
@@ -265,7 +266,7 @@ int Item::Ctrl(short cmd, short n, int *Par, boolean send) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CMD_ON:
|
case CMD_ON:
|
||||||
if (getCmd() != CMD_ON) {
|
if (itemType!=CH_RGBW || getCmd() != CMD_ON) {
|
||||||
short params = 0;
|
short params = 0;
|
||||||
//retrive stored values
|
//retrive stored values
|
||||||
st.aslong = getVal();
|
st.aslong = getVal();
|
||||||
@@ -278,16 +279,17 @@ int Item::Ctrl(short cmd, short n, int *Par, boolean send) {
|
|||||||
Par[0] = st.h;
|
Par[0] = st.h;
|
||||||
Par[1] = st.s;
|
Par[1] = st.s;
|
||||||
Par[2] = st.v;
|
Par[2] = st.v;
|
||||||
|
if (!Par[2]) Par[2]=80; //If RGB value==0 set to 80%
|
||||||
params = 3;
|
params = 3;
|
||||||
SendCmd(0, params, Par); // Send restored triplet. In any cases
|
SendCmd(0, params, Par); // Send restored triplet. In any cases
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CH_VCTEMP:
|
||||||
|
case CH_PWM:
|
||||||
case CH_DIMMER: //Everywhere, in flat VAL
|
case CH_DIMMER: //Everywhere, in flat VAL
|
||||||
case CH_MODBUS:
|
case CH_MODBUS:
|
||||||
case CH_VC:
|
case CH_VC:
|
||||||
case CH_VCTEMP:
|
|
||||||
case CH_PWM:
|
|
||||||
|
|
||||||
Par[0] = st.aslong;
|
Par[0] = st.aslong;
|
||||||
params = 1;
|
params = 1;
|
||||||
@@ -840,18 +842,26 @@ int Item::checkFM() {
|
|||||||
Serial.print(F("-"));
|
Serial.print(F("-"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
int RPM;
|
||||||
// aJson.addNumberToObject(out,"gsw", (int) node.getResponseBuffer(1));
|
// aJson.addNumberToObject(out,"gsw", (int) node.getResponseBuffer(1));
|
||||||
aJson.addNumberToObject(out, "V", (int) node.getResponseBuffer(2) / 100.);
|
aJson.addNumberToObject(out, "V", (int) node.getResponseBuffer(2) / 100.);
|
||||||
// aJson.addNumberToObject(out,"f", (int) node.getResponseBuffer(3)/100.);
|
// aJson.addNumberToObject(out,"f", (int) node.getResponseBuffer(3)/100.);
|
||||||
aJson.addNumberToObject(out, "RPM", (int) node.getResponseBuffer(4));
|
aJson.addNumberToObject(out, "RPM", RPM=(int) node.getResponseBuffer(4));
|
||||||
aJson.addNumberToObject(out, "I", (int) node.getResponseBuffer(5) / 100.);
|
aJson.addNumberToObject(out, "I", (int) node.getResponseBuffer(5) / 100.);
|
||||||
aJson.addNumberToObject(out, "M", (int) node.getResponseBuffer(6) / 10.);
|
aJson.addNumberToObject(out, "M", (int) node.getResponseBuffer(6) / 10.);
|
||||||
// aJson.addNumberToObject(out,"P", (int) node.getResponseBuffer(7)/10.);
|
// aJson.addNumberToObject(out,"P", (int) node.getResponseBuffer(7)/10.);
|
||||||
// aJson.addNumberToObject(out,"U", (int) node.getResponseBuffer(8)/10.);
|
// aJson.addNumberToObject(out,"U", (int) node.getResponseBuffer(8)/10.);
|
||||||
// aJson.addNumberToObject(out,"Ui", (int) node.getResponseBuffer(9));
|
// aJson.addNumberToObject(out,"Ui", (int) node.getResponseBuffer(9));
|
||||||
aJson.addNumberToObject(out, "sw", (int) node.getResponseBuffer(0));
|
aJson.addNumberToObject(out, "sw", (int) node.getResponseBuffer(0));
|
||||||
|
|
||||||
|
if (RPM && itemArg->type == aJson_Array)
|
||||||
|
{ aJsonObject *airGateObj = aJson.getArrayItem(itemArg, 1);
|
||||||
|
if (airGateObj) {
|
||||||
|
int val = 100;
|
||||||
|
Item item(airGateObj->valuestring);
|
||||||
|
if (item.isValid()) item.Ctrl(0,1,&val);
|
||||||
|
}
|
||||||
|
}
|
||||||
Serial.println();
|
Serial.println();
|
||||||
} else {
|
} else {
|
||||||
Serial.print(F("Modbus polling error="));
|
Serial.print(F("Modbus polling error="));
|
||||||
|
|||||||
@@ -62,6 +62,19 @@ typedef union
|
|||||||
};
|
};
|
||||||
} HSVstore;
|
} HSVstore;
|
||||||
|
|
||||||
|
|
||||||
|
typedef union
|
||||||
|
{
|
||||||
|
long int aslong;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
int8_t r;
|
||||||
|
int8_t g;
|
||||||
|
int8_t b;
|
||||||
|
int8_t v;
|
||||||
|
};
|
||||||
|
} RGBVstore;
|
||||||
|
|
||||||
class Item
|
class Item
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -186,7 +186,19 @@ void mqttCallback(char *topic, byte *payload, unsigned int length) {
|
|||||||
case -1: //Not known command
|
case -1: //Not known command
|
||||||
case -2: //JSON input (not implemented yet
|
case -2: //JSON input (not implemented yet
|
||||||
break;
|
break;
|
||||||
|
case -3: //RGB color in #RRGGBB notation
|
||||||
|
{
|
||||||
|
CRGB rgb;
|
||||||
|
if (sscanf(payload,"#%2X%2X%2X",&rgb.r,&rgb.g,&rgb.b)==3)
|
||||||
|
{ int Par[3];
|
||||||
|
CHSV hsv=rgb2hsv_approximate(rgb);
|
||||||
|
Par[0]=map(hsv.h,0,255,0,365);
|
||||||
|
Par[1]=map(hsv.s,0,255,0,100);
|
||||||
|
Par[2]=map(hsv.v,0,255,0,100);
|
||||||
|
item.Ctrl(0, 3, Par, !retaining);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case CMD_ON:
|
case CMD_ON:
|
||||||
|
|
||||||
if (item.getEnableCMD(500) || lanStatus == 4)
|
if (item.getEnableCMD(500) || lanStatus == 4)
|
||||||
@@ -885,8 +897,8 @@ void printFirmwareVersionAndBuildOptions() {
|
|||||||
#endif
|
#endif
|
||||||
Serial.print(F("Config server:"));
|
Serial.print(F("Config server:"));
|
||||||
Serial.println(F(CONFIG_SERVER));
|
Serial.println(F(CONFIG_SERVER));
|
||||||
Serial.print(F("Firmware MAC Address "));
|
// Serial.print(F("Firmware MAC Address "));
|
||||||
Serial.println(F(QUOTE(CUSTOM_FIRMWARE_MAC)));
|
// Serial.println(F(QUOTE(CUSTOM_FIRMWARE_MAC))); //Q Macros didn't working with 6 args
|
||||||
#ifdef DISABLE_FREERAM_PRINT
|
#ifdef DISABLE_FREERAM_PRINT
|
||||||
Serial.println(F("(-)FreeRam printing"));
|
Serial.println(F("(-)FreeRam printing"));
|
||||||
#else
|
#else
|
||||||
@@ -897,9 +909,9 @@ void printFirmwareVersionAndBuildOptions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setupMacAddress() {
|
void setupMacAddress() {
|
||||||
byte firmwareMacAddress[6];
|
byte firmwareMacAddress[6]=CUSTOM_FIRMWARE_MAC;
|
||||||
const char *macStr = QUOTE(CUSTOM_FIRMWARE_MAC);
|
// const char *macStr = QUOTE(CUSTOM_FIRMWARE_MAC);
|
||||||
parseBytes(macStr, ':', firmwareMacAddress, 6, 16);
|
// parseBytes(macStr, ':', firmwareMacAddress, 6, 16);
|
||||||
|
|
||||||
bool isMacValid = false;
|
bool isMacValid = false;
|
||||||
for (short i = 0; i < 6; i++) {
|
for (short i = 0; i < 6; i++) {
|
||||||
|
|||||||
@@ -41,6 +41,8 @@
|
|||||||
#include "item.h"
|
#include "item.h"
|
||||||
#include "inputs.h"
|
#include "inputs.h"
|
||||||
#include "Dhcp.h"
|
#include "Dhcp.h"
|
||||||
|
#include "FastLED.h"
|
||||||
|
//#include "hsv2rgb.h"
|
||||||
|
|
||||||
#if defined(__SAM3X8E__)
|
#if defined(__SAM3X8E__)
|
||||||
|
|
||||||
@@ -178,4 +180,4 @@ int getConfig(int arg_cnt, char **args);
|
|||||||
|
|
||||||
void printFirmwareVersionAndBuildOptions();
|
void printFirmwareVersionAndBuildOptions();
|
||||||
|
|
||||||
#endif //LIGHTHUB_MAIN_H
|
#endif //LIGHTHUB_MAIN_H
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Configuration of drivers enabled
|
// Configuration of drivers enabled
|
||||||
#ifndef PIO_SRC_REV
|
#ifndef PIO_SRC_REV
|
||||||
#define PIO_SRC_REV v0.99.1
|
#define PIO_SRC_REV v0.992
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define TXEnablePin 13
|
#define TXEnablePin 13
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CUSTOM_FIRMWARE_MAC
|
#ifndef CUSTOM_FIRMWARE_MAC
|
||||||
#define CUDTOM_FIRMWARE_MAC {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0}
|
#define CUSTOM_FIRMWARE_MAC {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user