mirror of
https://github.com/anklimov/lighthub
synced 2025-12-06 03:39:49 +03:00
remove old stuff, templates for Emit strings
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
export PORT=cu.usbmodem14101
|
||||
export PORT=cu.usbmodem141101
|
||||
echo . | stty -f /dev/$PORT speed 1200
|
||||
../tools/mac/tool-bossac/bossac -U false -p $PORT -i -e -w -v -b firmware.bin -R
|
||||
../tools/mac/tool-bossac/bossac -U false -p $PORT -i -w -v -b firmware.bin -R
|
||||
@@ -11,7 +11,7 @@ public:
|
||||
virtual ~abstractCh(){};
|
||||
virtual int Poll(short cause) {return 0;}
|
||||
virtual int Setup() =0; //Should initialize hardware and reserve resources
|
||||
virtual int Anounce () {return 0;};
|
||||
// virtual int Anounce () {return 0;};
|
||||
virtual int Stop() {return 0;}; //Should free resources
|
||||
virtual int Status() {return CST_UNKNOWN;}
|
||||
virtual void setStatus(uint8_t status) {}
|
||||
|
||||
@@ -13,7 +13,7 @@ public:
|
||||
virtual bool isAllowed(itemCmd cmd){return true;};
|
||||
virtual itemCmd getDefaultOnVal(){return itemCmd().Percents255(255);};
|
||||
virtual int getChanType(){return 0;}
|
||||
virtual int getDefaultStorageType(){return 0;} /// Remove?? Now getChanType used instead
|
||||
// virtual int getDefaultStorageType(){return 0;} /// Remove?? Now getChanType used instead
|
||||
virtual int Status() override;
|
||||
virtual void setStatus(uint8_t status) override;
|
||||
int Setup() override;
|
||||
|
||||
@@ -16,7 +16,7 @@ short colorChannel::getChannelAddr(short n)
|
||||
return item->getArg(n);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
int colorChannel::getDefaultStorageType()
|
||||
{
|
||||
|
||||
@@ -33,7 +33,7 @@ int colorChannel::getDefaultStorageType()
|
||||
return ST_VOID;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
int colorChannel::isActive()
|
||||
{
|
||||
itemCmd st;
|
||||
@@ -58,7 +58,6 @@ case S_NOTFOUND:
|
||||
// turn on and set
|
||||
toExecute = true;
|
||||
case S_SET:
|
||||
//case S_ESET:
|
||||
case S_HSV:
|
||||
PixelCtrl(cmd, subItem, toExecute, authorized);
|
||||
return 1;
|
||||
|
||||
@@ -15,7 +15,7 @@ public:
|
||||
numArgs = item->getArgCount(); // and how many addresses is configured
|
||||
};
|
||||
int Ctrl(itemCmd cmd, char* subItem=NULL, bool toExecute=true, bool authorized=false) override;
|
||||
int getDefaultStorageType()override;
|
||||
//int getDefaultStorageType()override;
|
||||
virtual int PixelCtrl(itemCmd cmd, char* subItem=NULL, bool show=true, bool authorized = false ) =0;
|
||||
short getChannelAddr(short n =0);
|
||||
// int isActive() override;
|
||||
|
||||
@@ -104,8 +104,15 @@ int subitem2cmd(char *payload) {
|
||||
}
|
||||
|
||||
int txt2subItem(char *payload) {
|
||||
int cmd = S_NOTFOUND;
|
||||
if (!payload || !strlen(payload)) return S_NOTFOUND;
|
||||
for(uint8_t i=1; i<suffixNum ;i++)
|
||||
if (strncmp_P(payload, suffix_P[i], strlen_P(suffix_P[i])) == 0)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
return S_NOTFOUND;
|
||||
/*
|
||||
int cmd = S_NOTFOUND;
|
||||
// Check for command
|
||||
if (strcmp_P(payload, SET_P) == 0) cmd = S_SET;
|
||||
else if (strcmp_P(payload, CTRL_P) == 0) cmd = S_CTRL;
|
||||
@@ -120,7 +127,8 @@ int txt2subItem(char *payload) {
|
||||
else if (strcmp_P(payload, VAL_P) == 0) cmd = S_VAL;
|
||||
else if (strcmp_P(payload, DEL_P) == 0) cmd = S_DELAYED;
|
||||
else if (strcmp_P(payload, _RAW_P) == 0) cmd = S_RAW;
|
||||
return cmd;
|
||||
return cmd; */
|
||||
|
||||
}
|
||||
|
||||
//const short defval[4] = {0, 0, 0, 0}; //Type,Arg,Val,Cmd
|
||||
@@ -1801,9 +1809,14 @@ int Item::SendStatus(int sendFlags) {
|
||||
|
||||
strncat(addrstr, "/", sizeof(addrstr)-1);
|
||||
|
||||
// if (sendFlags & FLAG_SEND_DELAYED)
|
||||
// strncat_P(addrstr, DEL_P, sizeof(addrstr)-1);
|
||||
// else strncat_P(addrstr, SET_P, sizeof(addrstr)-1);
|
||||
|
||||
if (sendFlags & FLAG_SEND_DELAYED)
|
||||
strncat_P(addrstr, DEL_P, sizeof(addrstr)-1);
|
||||
else strncat_P(addrstr, SET_P, sizeof(addrstr)-1);
|
||||
strncat_P(addrstr, suffix_P[S_DELAYED], sizeof(addrstr)-1);
|
||||
else strncat_P(addrstr, suffix_P[S_SET], sizeof(addrstr)-1);
|
||||
|
||||
|
||||
// Preparing parameters payload //////////
|
||||
switch (st.getArgType()) {
|
||||
@@ -1872,7 +1885,8 @@ int Item::SendStatus(int sendFlags) {
|
||||
strncat(addrstr, subItem, sizeof(addrstr)-1);
|
||||
}
|
||||
strncat(addrstr, "/", sizeof(addrstr)-1);
|
||||
strncat_P(addrstr, CMD_P, sizeof(addrstr)-1);
|
||||
// strncat_P(addrstr, CMD_P, sizeof(addrstr)-1);
|
||||
strncat_P(addrstr, suffix_P[S_CMD], sizeof(addrstr)-1);
|
||||
|
||||
debugSerial<<F("Pub: ")<<addrstr<<F("->")<<cmdstr<<endl;
|
||||
if (mqttClient.connected() && !ethernetIdleCount)
|
||||
@@ -1909,7 +1923,8 @@ int Item::SendStatus(int sendFlags) {
|
||||
strncat(addrstr, subItem, sizeof(addrstr)-1);
|
||||
}
|
||||
strncat(addrstr, "/", sizeof(addrstr)-1);
|
||||
strncat_P(addrstr, CTRL_P, sizeof(addrstr)-1);
|
||||
//strncat_P(addrstr, CTRL_P, sizeof(addrstr)-1);
|
||||
strncat_P(addrstr, suffix_P[S_CTRL], sizeof(addrstr)-1);
|
||||
|
||||
debugSerial<<F("Pub: ")<<addrstr<<F("->")<<cmdstr<<endl;
|
||||
if (mqttClient.connected() && !ethernetIdleCount)
|
||||
@@ -2006,38 +2021,6 @@ int Item::checkRetry() {
|
||||
return M_CLEAN;
|
||||
}
|
||||
|
||||
/*
|
||||
bool Item::resumeModbus()
|
||||
{
|
||||
|
||||
if (modbusBusy) return false;
|
||||
bool success = true;
|
||||
|
||||
//debugSerial<<F("Pushing MB: ");
|
||||
configLocked++;
|
||||
if (items) {
|
||||
aJsonObject * item = items->child;
|
||||
while (items && item)
|
||||
if (item->type == aJson_Array && aJson.getArraySize(item)>1) {
|
||||
Item it(item);
|
||||
if (it.isValid()) {
|
||||
|
||||
short res = it.checkModbusRetry();
|
||||
if (res<=0) success = false;
|
||||
|
||||
} //isValid
|
||||
yield();
|
||||
item = item->next;
|
||||
} //if
|
||||
debugSerial<<endl;
|
||||
}
|
||||
configLocked--;
|
||||
if (success) isPendedModbusWrites=false;
|
||||
return true;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
//////////////////// Begin of legacy MODBUS code - to be moved in separate module /////////////////////
|
||||
|
||||
|
||||
@@ -2409,14 +2392,6 @@ int Item::checkModbusDimmer() {
|
||||
uint16_t reg = getArg(MODBUS_CMD_ARG_REG);
|
||||
int _regType = MODBUS_HOLDING_REG_TYPE;
|
||||
if (numpar >= (MODBUS_CMD_ARG_REG_TYPE+1)) _regType = aJson.getArrayItem(itemArg, MODBUS_CMD_ARG_REG_TYPE)->valueint;
|
||||
// short mask = getArg(2);
|
||||
// debugSerial<<F("Modbus polling "));
|
||||
// debugSerial<<addr);
|
||||
// debugSerial<<F("=>"));
|
||||
// debugSerial<<reg, HEX);
|
||||
// debugSerial<<F("(T:"));
|
||||
// debugSerial<<_regType);
|
||||
// debugSerial<<F(")"));
|
||||
|
||||
int data;
|
||||
|
||||
|
||||
@@ -37,6 +37,11 @@ e-mail anklimov@gmail.com
|
||||
#define S_TEMP 12
|
||||
#define S_RAW 13
|
||||
|
||||
typedef char suffixstr[5];
|
||||
const suffixstr suffix_P[] PROGMEM =
|
||||
{"","cmd","set","val","del","HSV","RGB","fan","mode","ctrl","hue","sat","temp","raw"};
|
||||
#define suffixNum sizeof(suffix_P)/sizeof(suffixstr)
|
||||
|
||||
#define S_ADDITIONAL 13
|
||||
|
||||
#define CH_DIMMER 0 //DMX 1-4 ch
|
||||
@@ -63,16 +68,6 @@ e-mail anklimov@gmail.com
|
||||
#define CH_HUMIDIFIER 21
|
||||
#define CH_MERCURY 22
|
||||
|
||||
//#define CHANNEL_TYPES 13
|
||||
|
||||
//static uint32_t pollInterval[CHANNEL_TYPES] = {0,0,0,0,MODB};
|
||||
//static uint32_t nextPollTime[CHANNEL_TYPES] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||
|
||||
#define CH_WHITE 127//
|
||||
|
||||
|
||||
|
||||
|
||||
#define POLLING_SLOW 1
|
||||
#define POLLING_FAST 2
|
||||
#define POLLING_INT 3
|
||||
@@ -157,24 +152,16 @@ class Item
|
||||
int VacomSetFan (itemCmd st);
|
||||
int VacomSetHeat(itemCmd st);
|
||||
int modbusDimmerSet(itemCmd st);
|
||||
|
||||
int modbusDimmerSet(int addr, uint16_t _reg, int _regType, int _mask, uint16_t value);
|
||||
void mb_fail(int result=0);
|
||||
void Parse();
|
||||
int checkModbusDimmer();
|
||||
int checkModbusDimmer(int data);
|
||||
|
||||
int checkRetry();
|
||||
//boolean checkVCRetry();
|
||||
//boolean checkHeatRetry();
|
||||
void sendDelayedStatus();
|
||||
//bool resumeModbus();
|
||||
|
||||
|
||||
int checkFM();
|
||||
char defaultSubItem[16];
|
||||
int defaultSuffixCode;
|
||||
|
||||
};
|
||||
|
||||
typedef union
|
||||
|
||||
@@ -230,7 +230,7 @@ debugSerial<<F("Deleting conf. RAM was:")<<freeRam();
|
||||
topics = NULL;
|
||||
mqttArr = NULL;
|
||||
deviceName = NULL;
|
||||
topics = NULL;
|
||||
|
||||
#ifdef _dmxout
|
||||
dmxArr = NULL;
|
||||
#endif
|
||||
|
||||
@@ -42,7 +42,7 @@ public:
|
||||
int Stop() override;
|
||||
int isActive() override;
|
||||
int getChanType() override;
|
||||
int getDefaultStorageType(){return ST_FLOAT_CELSIUS;};
|
||||
// int getDefaultStorageType(){return ST_FLOAT_CELSIUS;};
|
||||
int Ctrl(itemCmd cmd, char* subItem=NULL, bool toExecute=true, bool authorized = false) override;
|
||||
void SubmitParameters(const char * name, itemCmd value);
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ public:
|
||||
int Stop() override;
|
||||
int getChanType() override;
|
||||
int Ctrl(itemCmd cmd, char* subItem=NULL, bool toExecute=true, bool authorized = false) override;
|
||||
int getDefaultStorageType(){return ST_INT32;};
|
||||
//int getDefaultStorageType(){return ST_INT32;};
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
@@ -38,7 +38,7 @@ public:
|
||||
int Stop() override;
|
||||
int getChanType() override;
|
||||
int Ctrl(itemCmd cmd, char* subItem=NULL, bool toExecute=true, bool authorized = false) override;
|
||||
int getDefaultStorageType(){return ST_INT32;};
|
||||
//int getDefaultStorageType(){return ST_INT32;};
|
||||
//int Ctrl(short cmd, short n=0, int * Parameters=NULL, int suffixCode=0, char* subItem=NULL) override;
|
||||
|
||||
protected:
|
||||
|
||||
@@ -26,7 +26,7 @@ public:
|
||||
int Stop() override;
|
||||
//int isActive() override;
|
||||
int getChanType() override;
|
||||
int getDefaultStorageType(){return ST_PERCENTS255;};
|
||||
//int getDefaultStorageType(){return ST_PERCENTS255;};
|
||||
//int Ctrl(short cmd, short n=0, int * Parameters=NULL, int suffixCode=0, char* subItem=NULL) override;
|
||||
int Ctrl(itemCmd cmd, char* subItem=NULL, bool toExecute=true, bool authorized = false) override;
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ public:
|
||||
int Stop() override;
|
||||
//int isActive() override;
|
||||
int getChanType() override;
|
||||
int getDefaultStorageType(){return ST_PERCENTS255;};
|
||||
//int getDefaultStorageType(){return ST_PERCENTS255;};
|
||||
int Ctrl(itemCmd cmd, char* subItem=NULL, bool toExecute=true, bool authorized = false) override;
|
||||
protected:
|
||||
void getConfig();
|
||||
|
||||
@@ -31,7 +31,7 @@ public:
|
||||
int Stop() override;
|
||||
int isActive() override;
|
||||
int getChanType() override;
|
||||
int getDefaultStorageType(){return ST_FLOAT;};
|
||||
//int getDefaultStorageType(){return ST_FLOAT;};
|
||||
int Ctrl(itemCmd cmd, char* subItem=NULL, bool toExecute=true, bool authorized = false) override;
|
||||
void alarm(bool);
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ public:
|
||||
int Stop() override;
|
||||
int getChanType() override;
|
||||
int Ctrl(itemCmd cmd, char* subItem=NULL, bool toExecute=true, bool authorized = false) override;
|
||||
int getDefaultStorageType(){return ST_INT32;};
|
||||
//int getDefaultStorageType(){return ST_INT32;};
|
||||
//int Ctrl(short cmd, short n=0, int * Parameters=NULL, int suffixCode=0, char* subItem=NULL) override;
|
||||
|
||||
protected:
|
||||
|
||||
0
lighthub/templateStr.cpp
Normal file
0
lighthub/templateStr.cpp
Normal file
106
lighthub/templateStr.h
Normal file
106
lighthub/templateStr.h
Normal file
@@ -0,0 +1,106 @@
|
||||
#ifndef _TEMPLATE_STREAM_H_
|
||||
#define _TEMPLATE_STREAM_H_
|
||||
|
||||
#include <Stream.h>
|
||||
//#define KEYLEN 8
|
||||
extern aJsonObject * topics;
|
||||
|
||||
class templateStream : public Stream
|
||||
{
|
||||
public:
|
||||
templateStream(char *s, short sfx=0) : str(s), pos(0), val(NULL), valpos(0), bucket(0),suffix(sfx) { }
|
||||
|
||||
// Stream methods
|
||||
virtual int available() { return str[pos]; }
|
||||
virtual int read() {
|
||||
if (bucket)
|
||||
|
||||
{ int ch = bucket;
|
||||
bucket=0;
|
||||
return ch;
|
||||
};
|
||||
|
||||
if (str[pos]=='$')
|
||||
{
|
||||
if (str[pos+1]=='{')
|
||||
{
|
||||
unsigned int i = 0;
|
||||
while (str[pos+2+i] && str[pos+2+i]!='}') i++;
|
||||
if (i && (str[pos+2+i]=='}'))
|
||||
{
|
||||
str[pos+2+i]='\0';
|
||||
val=resolveKey(str+pos+2);
|
||||
str[pos+2+i]='}';
|
||||
pos+=3+i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (val)
|
||||
{
|
||||
char ch = val[valpos];
|
||||
if (ch)
|
||||
{
|
||||
valpos++;
|
||||
return ch;
|
||||
}
|
||||
else val = NULL;
|
||||
|
||||
}
|
||||
|
||||
if (str)
|
||||
{
|
||||
char ch = str[pos];
|
||||
if (ch)
|
||||
{
|
||||
pos++;
|
||||
return ch;
|
||||
}
|
||||
else
|
||||
{
|
||||
str=NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
else return -1;
|
||||
|
||||
}
|
||||
virtual int peek()
|
||||
{
|
||||
int bucket = read();
|
||||
return bucket;
|
||||
}
|
||||
|
||||
virtual void flush() { };
|
||||
// Print methods
|
||||
virtual size_t write(uint8_t c) { return 0; };
|
||||
virtual char * resolveKey(char *key)
|
||||
{
|
||||
if (topics && topics->type == aJson_Object)
|
||||
{
|
||||
aJsonObject *valObj = aJson.getObjectItem(topics, key);
|
||||
if (valObj->type == aJson_String) return valObj->valuestring;
|
||||
|
||||
}
|
||||
if (suffix && (suffix<=suffixNum) && !strcmp(key,"sfx"))
|
||||
{
|
||||
buffer[0]='/';
|
||||
strncpy_P(buffer+1,suffix_P[suffix],sizeof(buffer)-2);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
private:
|
||||
char *str;
|
||||
unsigned int pos;
|
||||
char *val;
|
||||
unsigned int valpos;
|
||||
int bucket;
|
||||
short suffix;
|
||||
char buffer[8];
|
||||
};
|
||||
|
||||
#endif // _TEMPLATE_STREAM_H_
|
||||
@@ -82,17 +82,29 @@ const char on_P[] PROGMEM = "on";
|
||||
|
||||
*/
|
||||
|
||||
#define ON_P commands_P[CMD_ON]
|
||||
#define OFF_P commands_P[CMD_OFF]
|
||||
#define REST_P commands_P[CMD_RESTORE]
|
||||
#define TOGGLE_P commands_P[CMD_TOGGLE]
|
||||
#define HALT_P commands_P[CMD_HALT]
|
||||
#define XON_P commands_P[CMD_XON]
|
||||
#define XOFF_P commands_P[CMD_XOFF]
|
||||
#define HEAT_P commands_P[CMD_HEAT]
|
||||
#define COOL_P commands_P[CMD_COOL]
|
||||
#define AUTO_P commands_P[CMD_AUTO]
|
||||
#define FAN_ONLY_P commands_P[CMD_FAN]
|
||||
#define DRY_P commands_P[CMD_DRY]
|
||||
#define HIGH_P commands_P[CMD_HIGH]
|
||||
#define MED_P commands_P[CMD_MED]
|
||||
#define LOW_P commands_P[CMD_LOW]
|
||||
#define ENABLE_P commands_P[CMD_ENABLE]
|
||||
#define DISABLE_P commands_P[CMD_DISABLE]
|
||||
#define FREEZE_P commands_P[CMD_FREEZE]
|
||||
#define UNFREEZE_P commands_P[CMD_UNFREEZE]
|
||||
|
||||
const char ERROR_P[] PROGMEM = "ERR";
|
||||
|
||||
//Commands
|
||||
|
||||
const char ON_P[] PROGMEM = "ON";
|
||||
const char OFF_P[] PROGMEM = "OFF";
|
||||
const char REST_P[] PROGMEM = "REST";
|
||||
const char TOGGLE_P[] PROGMEM = "TOGGLE";
|
||||
const char HALT_P[] PROGMEM = "HALT";
|
||||
const char XON_P[] PROGMEM = "XON";
|
||||
const char XOFF_P[] PROGMEM = "XOFF";
|
||||
/*
|
||||
const char INCREASE_P[] PROGMEM = "INCREASE";
|
||||
const char DECREASE_P[] PROGMEM = "DECREASE";
|
||||
@@ -102,6 +114,15 @@ const char FALSE_P[] PROGMEM = "FALSE";
|
||||
const char ENABLED_P[] PROGMEM = "ENABLED";
|
||||
const char DISABLED_P[] PROGMEM = "DISABLED";
|
||||
*/
|
||||
|
||||
/*
|
||||
const char ON_P[] PROGMEM = "ON";
|
||||
const char OFF_P[] PROGMEM = "OFF";
|
||||
const char REST_P[] PROGMEM = "REST";
|
||||
const char TOGGLE_P[] PROGMEM = "TOGGLE";
|
||||
const char HALT_P[] PROGMEM = "HALT";
|
||||
const char XON_P[] PROGMEM = "XON";
|
||||
const char XOFF_P[] PROGMEM = "XOFF";
|
||||
const char HEAT_P[] PROGMEM = "HEAT";
|
||||
const char COOL_P[] PROGMEM = "COOL";
|
||||
const static char AUTO_P[] PROGMEM = "AUTO";
|
||||
@@ -112,13 +133,15 @@ const char DRY_P[] PROGMEM = "DRY";
|
||||
const char HIGH_P[] PROGMEM = "HIGH";
|
||||
const char MED_P[] PROGMEM = "MEDIUM";
|
||||
const char LOW_P[] PROGMEM = "LOW";
|
||||
const char ERROR_P[] PROGMEM = "ERR";
|
||||
|
||||
const char ENABLE_P[] PROGMEM = "ENABLE";
|
||||
const char DISABLE_P[] PROGMEM = "DISABLE";
|
||||
const char FREEZE_P[] PROGMEM = "FREEZE";
|
||||
const char UNFREEZE_P[] PROGMEM = "UNFREEZE";
|
||||
*/
|
||||
|
||||
// SubTopics
|
||||
/*
|
||||
const char SET_P[] PROGMEM = "set";
|
||||
const char CMD_P[] PROGMEM = "cmd";
|
||||
const char MODE_P[] PROGMEM = "mode";
|
||||
@@ -132,7 +155,7 @@ const char VAL_P[] PROGMEM = "val";
|
||||
const char DEL_P[] PROGMEM = "del";
|
||||
const char _RAW_P[] PROGMEM = "raw";
|
||||
const char CTRL_P[] PROGMEM = "ctrl";
|
||||
|
||||
*/
|
||||
/*
|
||||
const char RPM_P[] PROGMEM = "rpm";
|
||||
const char STATE_P[] PROGMEM = "state";
|
||||
|
||||
@@ -27,6 +27,7 @@ e-mail anklimov@gmail.com
|
||||
#include "item.h"
|
||||
#include <PubSubClient.h>
|
||||
#include <HardwareSerial.h>
|
||||
#include "templateStr.h"
|
||||
|
||||
#ifdef CRYPT
|
||||
#include "SHA256.h"
|
||||
@@ -690,8 +691,17 @@ switch (cmdType)
|
||||
//else itemCommand = _itemCmd.toString(Buffer,sizeof(Buffer));
|
||||
|
||||
char * emitCommand;
|
||||
short suffix=0;
|
||||
// aJsonObject * dict=NULL;
|
||||
|
||||
if(ecmd && ecmd->type == aJson_String) emitCommand = ecmd->valuestring;
|
||||
else emitCommand = _itemCmd.toString(Buffer,sizeof(Buffer));
|
||||
else
|
||||
{
|
||||
emitCommand = _itemCmd.toString(Buffer,sizeof(Buffer));
|
||||
// dict = aJson.createObject();
|
||||
// aJson.addStringToObject(dict, "sfx", )
|
||||
suffix=_itemCmd.getSuffix();
|
||||
}
|
||||
|
||||
//debugSerial << F("IN:") << (pin) << F(" : ") <<endl;
|
||||
if (item) {
|
||||
@@ -705,7 +715,12 @@ switch (cmdType)
|
||||
|
||||
|
||||
if (emit && emitCommand && emit->type == aJson_String) {
|
||||
debugSerial << F("Emit: ")<<emit->valuestring<< F(" -> ")<<emitCommand<<endl;
|
||||
|
||||
templateStream ts(emit->valuestring,suffix);
|
||||
char addrstr[MQTT_TOPIC_LENGTH];
|
||||
//ts.setTimeout(0);
|
||||
addrstr[ts.readBytesUntil('\0',addrstr,sizeof(addrstr))]='\0';
|
||||
debugSerial << F("Emit: ")<<emit->valuestring<<" "<<addrstr<< F(" -> ")<<emitCommand<<endl;
|
||||
/*
|
||||
TODO implement
|
||||
#ifdef WITH_DOMOTICZ
|
||||
@@ -720,8 +735,8 @@ switch (cmdType)
|
||||
*/
|
||||
|
||||
|
||||
char addrstr[MQTT_TOPIC_LENGTH];
|
||||
strncpy(addrstr,emit->valuestring,sizeof(addrstr));
|
||||
|
||||
//strncpy(addrstr,emit->valuestring,sizeof(addrstr));
|
||||
if (mqttClient.connected() && !ethernetIdleCount)
|
||||
{
|
||||
if (!strchr(addrstr,'/')) setTopic(addrstr,sizeof(addrstr),T_OUT,emit->valuestring);
|
||||
@@ -916,5 +931,8 @@ if (oneWire && oneWire->checkPresence())
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#pragma message(VAR_NAME_VALUE(debugSerial))
|
||||
#pragma message(VAR_NAME_VALUE(SERIAL_BAUD))
|
||||
|
||||
Reference in New Issue
Block a user