diff --git a/lighthub/item.cpp b/lighthub/item.cpp index 4af3914..a4d3008 100644 --- a/lighthub/item.cpp +++ b/lighthub/item.cpp @@ -129,12 +129,12 @@ int Item::getArg(short n) //Return arg int or first array element if Arg is arra /* int Item::getVal(short n) //Return Val from Value array { if (!itemVal) return -1; - else if (itemVal->type==aJson_Array) + else if (itemVal->type==aJson_Array) { - aJsonObject *t = aJson.getArrayItem(itemVal,n); + aJsonObject *t = aJson.getArrayItem(itemVal,n); if (t) return t->valueint; else return -3; - } + } else return -2; } */ @@ -156,9 +156,9 @@ void Item::setVal(short n, int par) // Only store if VAL is array defined in c if (!itemVal || itemVal->type!=aJson_Array) return; Serial.print(F(" Store p="));Serial.print(n);Serial.print(F(" Val="));Serial.println(par); for (int i=aJson.getArraySize(itemVal);i<=n;i++) aJson.addItemToArray(itemVal,aJson.createItem(int(0))); //Enlarge array of Values - + aJsonObject *t = aJson.getArrayItem(itemVal,n); - if (t) t->valueint=par; + if (t) t->valueint=par; } */ @@ -182,7 +182,7 @@ boolean Item::isValid() { void Item::copyPar (aJsonObject *itemV) { int n=aJson.getArraySize(itemV); //for (int i=aJson.getArraySize(itemVal);ivalueint); + for (int i=0;ivalueint); } */ @@ -201,11 +201,11 @@ boolean Item::getEnableCMD(int delta) { #define MAXCTRLPAR 3 int Item::Ctrl(short cmd, short n, int *Parameters, boolean send) { - + Serial.print(F("Cmd="));Serial.print(cmd);Serial.print(F(" MEM="));Serial.println(freeRam()); int Par[MAXCTRLPAR] = {0, 0, 0}; - if (Parameters) + if (Parameters) for (short i=0;ichild; while (i) { Item it(i->valuestring); -// it.copyPar(itemVal); +// it.copyPar(itemVal); it.Ctrl(cmd, n, Par, send); //// was true i = i->next; } //while @@ -600,20 +622,20 @@ int Item::isActive() { short thermoSet(char * name, short cmd, short t) { - + if (items) { aJsonObject *item= aJson.getObjectItem(items, name); if (item && (item->type==aJson_Array) && (aJson.getArrayItem(item, I_TYPE)->valueint==CH_THERMO)) - { + { for (int i=aJson.getArraySize(item);i<4;i++) aJson.addItemToArray(item,aJson.createItem(int(0))); //Enlarge item to 4 elements if (!cmd) aJson.getArrayItem(item, I_VAL)->valueint=t; aJson.getArrayItem(item, I_CMD)->valueint=cmd; - - } - - } + + } + + } } @@ -623,8 +645,8 @@ if (PoolingInterval) { Pool(); next=millis()+PoolingInterval; - } - + } + }; @@ -635,31 +657,31 @@ addr 10d Снять аварию 42001 (2001=7d1) =>4 [22:20:33] Write task has completed successfully -[22:20:33] <= Response: 0A 06 07 D0 00 04 89 FF -[22:20:32] => Poll: 0A 06 07 D0 00 04 89 FF +[22:20:33] <= Response: 0A 06 07 D0 00 04 89 FF +[22:20:32] => Poll: 0A 06 07 D0 00 04 89 FF 100% 2003-> 10000 [22:24:05] Write task has completed successfully -[22:24:05] <= Response: 0A 06 07 D2 27 10 33 C0 -[22:24:05] => Poll: 0A 06 07 D2 27 10 33 C0 +[22:24:05] <= Response: 0A 06 07 D2 27 10 33 C0 +[22:24:05] => Poll: 0A 06 07 D2 27 10 33 C0 ON 2001->1 [22:24:50] Write task has completed successfully -[22:24:50] <= Response: 0A 06 07 D0 00 01 49 FC -[22:24:50] => Poll: 0A 06 07 D0 00 01 49 FC +[22:24:50] <= Response: 0A 06 07 D0 00 01 49 FC +[22:24:50] => Poll: 0A 06 07 D0 00 01 49 FC -OFF +OFF 2001->0 [22:25:35] Write task has completed successfully -[22:25:35] <= Response: 0A 06 07 D0 00 00 88 3C -[22:25:34] => Poll: 0A 06 07 D0 00 00 88 3C +[22:25:35] <= Response: 0A 06 07 D0 00 00 88 3C +[22:25:34] => Poll: 0A 06 07 D0 00 00 88 3C POLL 2101x10 -[22:27:29] <= Response: 0A 03 14 00 23 00 00 27 10 13 88 0B 9C 00 32 00 F8 00 F2 06 FA 01 3F AD D0 -[22:27:29] => Poll: 0A 03 08 34 00 0A 87 18 +[22:27:29] <= Response: 0A 03 14 00 23 00 00 27 10 13 88 0B 9C 00 32 00 F8 00 F2 06 FA 01 3F AD D0 +[22:27:29] => Poll: 0A 03 08 34 00 0A 87 18 */ @@ -749,7 +771,7 @@ int Item::SendStatus(short cmd, short n, int *Par, boolean deffered) { if (deffered) { setCmd(cmd | CMD_REPORT); Serial.println(F("Status deffered")); - // mqttClient.publish("/push", "1"); + // mqttClient.publish("/push", "1"); return 0; // Todo: Parameters? Now expected that parameters already stored by setVal() } @@ -759,7 +781,7 @@ int Item::SendStatus(short cmd, short n, int *Par, boolean deffered) { char valstr[16] = ""; strcpy_P(addrstr, outprefix); - strncat(addrstr, itemArr->name, sizeof(addrstr)); + strncat(addrstr, itemArr->name, sizeof(addrstr)); switch (cmd) { @@ -802,7 +824,7 @@ int Item::modbusDimmerSet(int addr, uint16_t _reg, int _mask, uint16_t value) { if (modbusBusy) { mb_fail(3, addr, value, 0); - + return -1; }; modbusBusy = 1; @@ -876,13 +898,13 @@ int Item::checkFM() { // aJson.addNumberToObject(out,"U", (int) node.getResponseBuffer(8)/10.); // aJson.addNumberToObject(out,"Ui", (int) node.getResponseBuffer(9)); 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); + if (item.isValid()) item.Ctrl(0,1,&val); } } Serial.println(); @@ -918,11 +940,11 @@ int Item::checkFM() { // aJson.addNumberToObject(out,"d", (int) node.getResponseBuffer(2)*a+b); int pwr = node.getResponseBuffer(3); if (pwr > 0) aJson.addNumberToObject(out, "pwr", pwr / 10.); else aJson.addNumberToObject(out, "pwr", 0); - - if (ftemp>FM_OVERHEAT_CELSIUS && set) + + if (ftemp>FM_OVERHEAT_CELSIUS && set) { - mqttClient.publish("/alarm/ovrht", itemArr->name); - Ctrl(CMD_OFF); //Shut down + mqttClient.publish("/alarm/ovrht", itemArr->name); + Ctrl(CMD_OFF); //Shut down } Serial.println(); } else { @@ -942,12 +964,12 @@ int Item::checkFM() { boolean Item::checkModbusRetry() { int cmd = getCmd(); if (cmd & CMD_RETRY) { // if last sending attempt of command was failed - int val = getVal(); + int val = getVal(); Serial.println(F("Retrying CMD")); cmd &= ~CMD_RETRY; // Clean retry flag - Ctrl(cmd,1,&val); // Execute command again + Ctrl(cmd,1,&val); // Execute command again return true; - } + } return false; } @@ -1026,28 +1048,28 @@ int Item::Poll() { switch (itemType) { case CH_MODBUS: checkModbusDimmer(); - sendDelayedStatus(); + sendDelayedStatus(); return INTERVAL_CHECK_MODBUS; break; case CH_VC: checkFM(); - sendDelayedStatus(); + sendDelayedStatus(); return INTERVAL_CHECK_MODBUS; break; case CH_RGB: //All channels with slider generate too many updates case CH_RGBW: case CH_DIMMER: - case CH_PWM: + case CH_PWM: case CH_VCTEMP: - case CH_THERMO: - sendDelayedStatus(); + case CH_THERMO: + sendDelayedStatus(); } return INTERVAL_POLLING; } void Item::sendDelayedStatus(){ HSVstore st; - int cmd=getCmd(); + int cmd=getCmd(); short params = 0; int Par[3]; if (cmd & CMD_REPORT) @@ -1062,7 +1084,7 @@ void Item::sendDelayedStatus(){ Par[1] = st.s; Par[2] = st.v; params = 3; - SendStatus(0, params, Par); // Send restored triplet. + SendStatus(0, params, Par); // Send restored triplet. break; case CH_VCTEMP: @@ -1071,17 +1093,16 @@ void Item::sendDelayedStatus(){ case CH_MODBUS: case CH_VC: case CH_THERMO: - + Par[0] = st.aslong; params = 1; SendStatus(0, params, Par); // Send restored parameter - break; + break; default: SendStatus(cmd); // Just send CMD }//itemtype cmd &= ~CMD_REPORT; // Clean report flag setCmd(cmd); - } + } } - diff --git a/lighthub/main.cpp b/lighthub/main.cpp index 69c8812..6f3f689 100644 --- a/lighthub/main.cpp +++ b/lighthub/main.cpp @@ -1,8 +1,3 @@ - - - - - /* Copyright © 2017-2018 Andrey Klimov. All rights reserved. * Licensed under the Apache License, Version 2.0 (the "License"); @@ -71,7 +66,7 @@ PWM Out */ - +#include "Arduino.h" #include "main.h" #include "options.h" @@ -86,6 +81,8 @@ EthernetClient ethClient; const char outprefix[] PROGMEM = OUTTOPIC; const char inprefix[] PROGMEM = INTOPIC; +const char configserver[] PROGMEM = CONFIG_SERVER; + aJsonObject *root = NULL; aJsonObject *items = NULL; @@ -104,6 +101,7 @@ unsigned long nextThermostatCheck = 0; aJsonObject *pollingItem = NULL; bool owReady = false; +bool configOk = false; int lanStatus = 0; #ifdef _modbus @@ -118,15 +116,17 @@ PubSubClient mqttClient(ethClient); void watchdogSetup(void) {} //Do not remove - strong re-definition WDT Init for DUE + // MQTT Callback routine -#define MQTT_SUBJECT_LENGTH 20 -#define MQTT_TOPIC_LENGTH 20 + void mqttCallback(char *topic, byte *payload, unsigned int length) { - payload[length] = 0; + Serial.print(F("\n[")); Serial.print(topic); Serial.print(F("] ")); + if (!payload) return; + payload[length] = 0; int fr = freeRam(); if (fr < 250) { @@ -266,15 +266,30 @@ int lanLoop() { switch (lanStatus) { //Initial state case 0: //Ethernet.begin(mac,ip); - + { #ifdef __ESP__ //WiFi.mode(WIFI_STA); //wifiMulti.addAP("Smartbox", ""); if((wifiMulti.run() == WL_CONNECTED)) lanStatus=1; #else + IPAddress ip; + IPAddress dns; + IPAddress gw; + IPAddress mask; + int res = 1; Serial.println(F("Starting lan")); + if (loadFlash(OFFSET_IP,ip)) + if (loadFlash(OFFSET_DNS,dns)) + if (loadFlash(OFFSET_GW,gw)) + if (loadFlash(OFFSET_MASK,mask)) Ethernet.begin(mac,ip,dns,gw,mask); + else Ethernet.begin(mac,ip,dns,gw); + else Ethernet.begin(mac,ip,dns); + else Ethernet.begin(mac,ip); + else res = Ethernet.begin(mac, 12000); + + wdt_dis(); - if (Ethernet.begin(mac, 12000) == 0) { + if (res == 0) { Serial.println(F("Failed to configure Ethernet using DHCP")); lanStatus = -10; lanCheck = millis() + 60000; @@ -284,12 +299,15 @@ if((wifiMulti.run() == WL_CONNECTED)) lanStatus=1; } wdt_en(); wdt_res(); + #endif break; + } //Have IP address case 1: - - lanStatus = getConfig(0, NULL); //got config from server or load from NVRAM + if (!configOk) + lanStatus = getConfig(0, NULL); //got config from server or load from NVRAM + else lanStatus = 2; #ifdef _artnet if (artnet) artnet->begin(); #endif @@ -313,6 +331,7 @@ if((wifiMulti.run() == WL_CONNECTED)) lanStatus=1; if (n >= 5) password = aJson.getArrayItem(mqttArr, 4)->valuestring; mqttClient.setServer(servername, port); + mqttClient.setCallback(mqttCallback); Serial.print(F("Attempting MQTT connection to ")); Serial.print(servername); @@ -322,11 +341,12 @@ if((wifiMulti.run() == WL_CONNECTED)) lanStatus=1; Serial.print(user); Serial.print(F(" ...")); + wdt_dis(); //potential unsafe for ethernetIdle(), but needed to avoid cyclic reboot if mosquitto out of order if (mqttClient.connect(client_id, user, password)) { Serial.print(F("connected as ")); Serial.println(client_id); - - + wdt_en(); + configOk=true; // ... Temporary subscribe to status topic char buf[MQTT_TOPIC_LENGTH]; @@ -349,7 +369,7 @@ if((wifiMulti.run() == WL_CONNECTED)) lanStatus=1; Serial.print(mqttClient.state()); Serial.println(F(" try again in 5 seconds")); lanCheck = millis() + 5000; - lanStatus = -12; + lanStatus = 12; } } break; @@ -379,7 +399,7 @@ if((wifiMulti.run() == WL_CONNECTED)) lanStatus=1; lanStatus = 0; break; //Reconnect - case -12: + case 12: if (millis() > lanCheck) lanStatus = 2; @@ -403,9 +423,15 @@ if((wifiMulti.run() == WL_CONNECTED)) lanStatus=1; wdt_dis(); if (lanStatus > 0) switch (Ethernet.maintain()) { + case NO_LINK: + Serial.println(F("No link")); + if (mqttClient.connected()) mqttClient.disconnect(); + lanStatus = -10; + break; case DHCP_CHECK_RENEW_FAIL: //renewed fail Serial.println(F("Error: renewed fail")); + if (mqttClient.connected()) mqttClient.disconnect(); lanStatus = -10; break; @@ -416,6 +442,7 @@ if((wifiMulti.run() == WL_CONNECTED)) lanStatus=1; case DHCP_CHECK_REBIND_FAIL: Serial.println(F("Error: rebind fail")); + if (mqttClient.connected()) mqttClient.disconnect(); lanStatus = -10; break; @@ -530,21 +557,23 @@ void cmdFunctionHelp(int arg_cnt, char **args) { printFirmwareVersionAndBuildOptions(); Serial.println(F("Use the commands: 'help' - this text\n" - "'set de:ad:be:ef:fe:00' set and store MAC-address in EEPROM\n" + "'mac de:ad:be:ef:fe:00' set and store MAC-address in EEPROM\n" + "'ip [ip[,dns[,gw[,subnet]]]]'\n" "'save' - save config in NVRAM\n" - "'get' - get config from pre-configured URL\n" + "'get' [config addr]' - get config from pre-configured URL\n" "'load' - load config from NVRAM\n" "'kill' - test watchdog")); } void cmdFunctionKill(int arg_cnt, char **args) { - for (short i = 17; i > 0; i--) { + for (short i = 1; i < 20; i++) { delay(1000); Serial.println(i); }; } void applyConfig() { + if (!root) return; #ifdef _dmxout int maxChannels; aJsonObject *dmxoutArr = aJson.getObjectItem(root, "dmx"); @@ -591,17 +620,19 @@ void applyConfig() { items = aJson.getObjectItem(root, "items"); // Digital output related Items initialization -{ +pollingItem=NULL; +if (items) { aJsonObject * item = items->child; while (items && item) if (item->type == aJson_Array && aJson.getArraySize(item)>1) { - int cmd = CMD_OFF; - int pin = aJson.getArrayItem(item, I_ARG)->valueint; - if (aJson.getArraySize(item) > I_CMD) cmd = aJson.getArrayItem(item, I_CMD)->valueint; - - switch (aJson.getArrayItem(item, I_TYPE)->valueint) { - case CH_RELAY: + Item it(item); + if (it.isValid()) { + int pin=it.getArg(); + int cmd = it.getCmd(); + switch (it.itemType) { case CH_THERMO: + if (cmd<1) it.setCmd(CMD_OFF); + case CH_RELAY: { int k; pinMode(pin, OUTPUT); @@ -613,11 +644,11 @@ while (items && item) } break; } //switch + } //isValid item = item->next; } //if - -} pollingItem = items->child; +} inputs = aJson.getObjectItem(root, "in"); mqttArr = aJson.getObjectItem(root, "mqtt"); printConfigSummary(); @@ -660,6 +691,7 @@ int loadConfigFromEEPROM(int arg_cnt, char **args) } Serial.println(F("Loaded")); applyConfig(); + ethClient.stop(); //Refresh MQTT connect to get retained info return 1; } else { Serial.println(F("No stored config")); @@ -719,6 +751,23 @@ void cmdFunctionSave(int arg_cnt, char **args) Serial.println(F("Saved to EEPROM")); } +void cmdFunctionIp(int arg_cnt, char **args) +//(char* tokens) +{ IPAddress ip0 (0,0,0,0); + IPAddress ip; + DNSClient dns; + switch (arg_cnt) { + case 5: if (dns.inet_aton(args[4],ip)) saveFlash(OFFSET_MASK,ip); else saveFlash(OFFSET_MASK,ip0); + case 4: if (dns.inet_aton(args[3],ip)) saveFlash(OFFSET_GW,ip); else saveFlash(OFFSET_GW,ip0); + case 3: if (dns.inet_aton(args[2],ip)) saveFlash(OFFSET_DNS,ip); else saveFlash(OFFSET_DNS,ip0); + case 2: if (dns.inet_aton(args[1],ip)) saveFlash(OFFSET_IP,ip); else saveFlash(OFFSET_IP,ip0); + break; + case 1: //dynamic IP + saveFlash(OFFSET_IP,ip0); + } +Serial.println(F("Saved")); +} + void cmdFunctionSetMac(int arg_cnt, char **args) { @@ -741,22 +790,40 @@ void cmdFunctionSetMac(int arg_cnt, char **args) { } void cmdFunctionGet(int arg_cnt, char **args) { - getConfig(arg_cnt, args); - restoreState(); + lanStatus=getConfig(arg_cnt, args); + ethClient.stop(); //Refresh MQTT connect to get retained info + //restoreState(); } void printBool(bool arg) { (arg) ? Serial.println(F("on")) : Serial.println(F("off")); } -void saveFlash(short n, char *str) {} +void saveFlash(short n, char *str) { + short i; + short len=strlen(str); + if (len>31) len=31; + for(int i=0;i 0) { + char configServer[32]=""; + if (arg_cnt > 1) { strncpy(configServer, args[1], sizeof(configServer) - 1); - saveFlash(0, configServer); - } else loadFlash(0, configServer); + saveFlash(OFFSET_CONFIGSERVER, configServer); + } else if (!loadFlash(OFFSET_CONFIGSERVER, configServer)) + strncpy_P(configServer,configserver,sizeof(configServer)); snprintf(URI, sizeof(URI), "/%02x-%02x-%02x-%02x-%02x-%02x.config.json", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); @@ -794,8 +862,11 @@ int getConfig(int arg_cnt, char **args) Serial.println(F("got Config")); aJsonFileStream as = aJsonFileStream(result); + noInterrupts(); aJson.deleteItem(root); root = aJson.parse(&as); + interrupts(); + // Serial.println(F("Parsed.")); hclient.closeStream(result); // this is very important -- be sure to close the STREAM if (!root) { @@ -806,7 +877,7 @@ int getConfig(int arg_cnt, char **args) // char *outstr = aJson.print(root); // Serial.println(outstr); // free(outstr); - + Serial.println(F("Applying.")); applyConfig(); @@ -829,11 +900,12 @@ int getConfig(int arg_cnt, char **args) #else //Non AVR code String response; - - HttpClient htclient = HttpClient(ethClient, configServer, 80); + EthernetClient configEthClient; + HttpClient htclient = HttpClient(configEthClient, configServer, 80); + //htclient.stop(); //_socket =MAX htclient.setHttpResponseTimeout(4000); wdt_res(); - //Serial.println("making GET request"); + //Serial.println("making GET request");get htclient.beginRequest(); htclient.get(URI); htclient.endRequest(); @@ -1013,9 +1085,10 @@ void setupCmdArduino() { cmdAdd("save", cmdFunctionSave); cmdAdd("load", cmdFunctionLoad); cmdAdd("get", cmdFunctionGet); - cmdAdd("set", cmdFunctionSetMac); + cmdAdd("mac", cmdFunctionSetMac); cmdAdd("kill", cmdFunctionKill); cmdAdd("req", cmdFunctionReq); + cmdAdd("ip", cmdFunctionIp); } void loop_main() { @@ -1046,7 +1119,7 @@ void loop_main() { } - if (inputs) inputLoop(); + inputLoop(); #if defined (_espdmx) dmxout.update(); @@ -1072,6 +1145,11 @@ void owIdle(void) { dmxout.update(); #endif } +void ethernetIdle(void){ + wdt_res(); + inputLoop(); +// Serial.print("."); + }; void modbusIdle(void) { wdt_res(); @@ -1080,8 +1158,10 @@ void modbusIdle(void) { #ifdef _artnet if (artnet) artnet->read(); #endif + inputLoop(); } + #ifdef _dmxin DMXCheck(); #endif @@ -1092,6 +1172,7 @@ void modbusIdle(void) { } void inputLoop(void) { + if (!inputs) return; if (millis() > nextInputCheck) { aJsonObject *input = inputs->child; while (input) { diff --git a/lighthub/main.h b/lighthub/main.h index 7ab3165..c4f607d 100644 --- a/lighthub/main.h +++ b/lighthub/main.h @@ -41,6 +41,7 @@ #include "item.h" #include "inputs.h" #include "FastLED.h" +#include "Dns.h" //#include "hsv2rgb.h" #if defined(__SAM3X8E__) @@ -95,7 +96,7 @@ extern Artnet *artnet; #endif -void watchdogSetup(void); +//void watchdogSetup(void); void mqttCallback(char *topic, byte *payload, unsigned int length); @@ -141,9 +142,13 @@ void printBool(bool arg); void saveFlash(short n, char *str); -void loadFlash(short n, char *str); +int loadFlash(short n, char *str, short l=32); -int getConfig(int arg_cnt, char **args); +void saveFlash(short n, IPAddress& ip); + +int loadFlash(short n, IPAddress& ip); + +int getConfig(int arg_cnt=0, char **args=NULL); void preTransmission(); diff --git a/lighthub/options.h b/lighthub/options.h index e59515f..89dcefd 100644 --- a/lighthub/options.h +++ b/lighthub/options.h @@ -1,6 +1,6 @@ // Configuration of drivers enabled #ifndef PIO_SRC_REV -#define PIO_SRC_REV v0.996 +#define PIO_SRC_REV v0.997 #endif #define TXEnablePin 13 @@ -13,9 +13,16 @@ #define THERMO_OVERHEAT_CELSIUS 38 #define FM_OVERHEAT_CELSIUS 40. -#define EEPROM_offset 32+6 -#define INTERVAL_CHECK_INPUT 50 +#define OFFSET_MAC 0 +#define OFFSET_IP OFFSET_MAC+6 +#define OFFSET_DNS OFFSET_IP+4 +#define OFFSET_GW OFFSET_DNS+4 +#define OFFSET_MASK OFFSET_GW+4 +#define OFFSET_CONFIGSERVER OFFSET_MASK+4 +#define EEPROM_offset OFFSET_CONFIGSERVER+32 + +#define INTERVAL_CHECK_INPUT 50 #define INTERVAL_CHECK_MODBUS 2000 #define INTERVAL_POLLING 100 #define THERMOSTAT_CHECK_PERIOD 5000 @@ -32,15 +39,23 @@ #define DEFAULT_FIRMWARE_MAC {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0} #endif +#ifndef MY_CONFIG_SERVER +#define CONFIG_SERVER "lazyhome.ru" +#else +#define CONFIG_SERVER QUOTE(MY_CONFIG_SERVER) +#endif #ifndef OUTTOPIC -#define OUTTOPIC "/myhome/s_out/" +#define OUTTOPIC "/myhome/s_out1/" #endif #ifndef INTOPIC -#define INTOPIC "/myhome/in/" +#define INTOPIC "/myhome/in1/" #endif +#define MQTT_SUBJECT_LENGTH 20 +#define MQTT_TOPIC_LENGTH 20 + #ifndef DMX_DISABLE #define _dmxin #define _dmxout @@ -66,12 +81,12 @@ //All options available #define modbusSerial Serial2 #define dmxin DMXSerial -#define dmxout DmxSimple +#define dmxout DmxSimple #endif #if defined(__SAM3X8E__) #define modbusSerial Serial2 -#define dmxout DmxDue1 +#define dmxout DmxDue1 #define dmxin DmxDue1 #endif diff --git a/platformio.ini b/platformio.ini index f6781f1..44c1662 100644 --- a/platformio.ini +++ b/platformio.ini @@ -27,7 +27,7 @@ lib_deps = https://github.com/anklimov/Arduino-Temperature-Control-Library.git https://github.com/anklimov/DS2482_OneWire https://github.com/anklimov/DmxDue - https://github.com/arduino-libraries/ArduinoHttpClient + https://github.com/anklimov/ArduinoHttpClient https://github.com/anklimov/aJson https://github.com/anklimov/CmdArduino https://github.com/anklimov/ModbusMaster @@ -75,7 +75,7 @@ lib_deps = https://github.com/anklimov/Arduino-Temperature-Control-Library.git https://github.com/anklimov/DS2482_OneWire https://github.com/anklimov/DmxDue - https://github.com/arduino-libraries/ArduinoHttpClient + https://github.com/anklimov/ArduinoHttpClient https://github.com/anklimov/aJson https://github.com/anklimov/CmdArduino https://github.com/anklimov/ModbusMaster