diff --git a/lighthub/abstractin.cpp b/lighthub/abstractin.cpp new file mode 100644 index 0000000..ba43754 --- /dev/null +++ b/lighthub/abstractin.cpp @@ -0,0 +1,32 @@ + +#include "abstractin.h" +#include +#include "utils.h" +#include +#include "inputs.h" + +extern PubSubClient mqttClient; + +int abstractIn::publish(int value, char* subtopic) +{ + char valstr[16]; + printUlongValueToStr(valstr, value); + publish(valstr,subtopic); +}; + +int abstractIn::publish(float value, char* subtopic) +{ + char valstr[16]; + printFloatValueToStr(value, valstr); + publish(valstr,subtopic); +}; + +int abstractIn::publish(char * value, char* subtopic) +{ + char addrstr[MQTT_TOPIC_LENGTH]; + aJsonObject *emit = aJson.getObjectItem(in->inputObj, "emit"); + strncpy(addrstr,emit->valuestring,sizeof(addrstr)); + if (!strchr(addrstr,'/')) setTopic(addrstr,sizeof(addrstr),T_OUT,emit->valuestring); + strncat(addrstr,subtopic,sizeof(addrstr)); + if (mqttClient.connected()) mqttClient.publish(addrstr, value, true); +}; diff --git a/lighthub/abstractin.h b/lighthub/abstractin.h index 192173c..7e45a17 100644 --- a/lighthub/abstractin.h +++ b/lighthub/abstractin.h @@ -1,3 +1,6 @@ +#pragma once +#include "Arduino.h" + class Input; class abstractIn { public: @@ -7,5 +10,8 @@ public: protected: Input * in; +int publish(int value, char* subtopic = NULL); +int publish(float value, char* subtopic = NULL ); +int publish(char * value, char* subtopic = NULL); friend Input; }; diff --git a/lighthub/inputs.cpp b/lighthub/inputs.cpp index 99bf4f9..bd60610 100644 --- a/lighthub/inputs.cpp +++ b/lighthub/inputs.cpp @@ -362,6 +362,7 @@ void Input::dht22Poll() { float humidity = roundf(dhtSensorData.humidity); #else DHT dht(pin, DHT22); + dht.begin(); float temp = dht.readTemperature(); float humidity = dht.readHumidity(); #endif diff --git a/lighthub/main.cpp b/lighthub/main.cpp index 8b195ea..2ee46dd 100644 --- a/lighthub/main.cpp +++ b/lighthub/main.cpp @@ -1180,10 +1180,11 @@ lan_status loadConfigFromHttp(int arg_cnt, char **args) wdt_res(); //debugSerial<<"making GET request");get htclient.beginRequest(); - htclient.get(URI); + responseStatusCode = htclient.get(URI); htclient.endRequest(); - + if (responseStatusCode == HTTP_SUCCESS) + { // read the status code and body of the response responseStatusCode = htclient.responseStatusCode(); response = htclient.responseBody(); @@ -1205,8 +1206,12 @@ lan_status loadConfigFromHttp(int arg_cnt, char **args) applyConfig(); debugSerial<