diff --git a/main/User_config.h b/main/User_config.h index 7886e50630..d899592cb9 100644 --- a/main/User_config.h +++ b/main/User_config.h @@ -670,4 +670,47 @@ CRGB leds2[FASTLED_IND_NUM_LEDS]; #define displayPrint(...) // only print if not in low power mode #define lpDisplayPrint(...) // print in low power mode +/*----------- SHARED WITH OMG MODULES --------------*/ + +char mqtt_topic[parameters_size + 1] = Base_Topic; +char gateway_name[parameters_size + 1] = Gateway_Name; + +unsigned long uptime(); +bool cmpToMainTopic(const char*, const char*); +void pub(const char*, const char*, bool); +// void pub(const char*, JsonObject&); +void pub(const char*, const char*); +// void pub_custom_topic(const char*, JsonObject&, boolean); + +#if defined(ESP32) +# include +Preferences preferences; +#endif + +#ifdef ZmqttDiscovery +bool disc = true; // Auto discovery with Home Assistant convention +unsigned long lastDiscovery = 0; // Time of the last discovery to trigger automaticaly to off after DiscoveryAutoOffTimer +#endif + +#if defined(ESP8266) || defined(ESP32) +# include +// Flags definition for white list, black list, discovery management +# define device_flags_init 0 << 0 +# define device_flags_isDisc 1 << 0 +# define device_flags_isWhiteL 1 << 1 +# define device_flags_isBlackL 1 << 2 +# define device_flags_connect 1 << 3 +# define isWhite(device) device->isWhtL +# define isBlack(device) device->isBlkL +# define isDiscovered(device) device->isDisc +#endif + +#if defined(ZgatewayRF) || defined(ZgatewayIR) || defined(ZgatewaySRFB) || defined(ZgatewayWeatherStation) || defined(ZgatewayRTL_433) +bool isAduplicateSignal(SIGNAL_SIZE_UL_ULL); +void storeSignalValue(SIGNAL_SIZE_UL_ULL); +#endif + +#define convertTemp_CtoF(c) ((c * 1.8) + 32) +#define convertTemp_FtoC(f) ((f - 32) * 5 / 9) + #endif diff --git a/main/config_ADC.h b/main/config_ADC.h index cac56ed2da..393f92365d 100644 --- a/main/config_ADC.h +++ b/main/config_ADC.h @@ -28,6 +28,7 @@ extern void setupADC(); extern void ADCtoMQTT(); +extern void MeasureADC(); /*----------------------------USER PARAMETERS-----------------------------*/ /*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/ #define ADCTOPIC "/ADCtoMQTT" diff --git a/main/config_AHTx0.h b/main/config_AHTx0.h index 09d4fc74bd..dba595943e 100644 --- a/main/config_AHTx0.h +++ b/main/config_AHTx0.h @@ -38,8 +38,8 @@ #ifndef config_AHTx0_h #define config_AHTx0_h -extern void setupAHTx0(); -extern void AHTx0toMQTT(); +extern void setupZsensorAHTx0(); +extern void MeasureAHTTempHum(); #define AHTx0_always true // if false when the current value of the parameter is the same as previous one don't send it by MQTT #define TimeBetweenReadingAHTx0 30000 diff --git a/main/config_BH1750.h b/main/config_BH1750.h index afb94da7ef..e1f29b65be 100644 --- a/main/config_BH1750.h +++ b/main/config_BH1750.h @@ -38,8 +38,8 @@ #ifndef config_BH1750_h #define config_BH1750_h -extern void setupBH1750(); -extern void BH1750toMQTT(); +extern void setupZsensorBH1750(); +extern void MeasureLightIntensity(); #define bh1750_always true // if false when the current value for light Level (Lux) is the same as previous one don't send it by MQTT #define TimeBetweenReadingBH1750 30000 diff --git a/main/config_BME280.h b/main/config_BME280.h index 5ddb72347c..3ea6241469 100644 --- a/main/config_BME280.h +++ b/main/config_BME280.h @@ -37,8 +37,8 @@ #ifndef config_BME280_h #define config_BME280_h -extern void setupBME280(); -extern void BME280toMQTT(); +extern void setupZsensorBME280(); +extern void MeasureTempHumAndPressure(); #ifndef bme280_always # define bme280_always true // if false when the current value of the parameter is the same as previous one don't send it by MQTT diff --git a/main/config_BT.h b/main/config_BT.h index ad442f6818..f0d84c2a90 100644 --- a/main/config_BT.h +++ b/main/config_BT.h @@ -31,6 +31,10 @@ extern bool BTtoMQTT(); extern void MQTTtoBT(char* topicOri, JsonObject& RFdata); extern void emptyBTQueue(); extern void launchBTDiscovery(bool overrideDiscovery); +extern void stopProcessing(); +extern void startProcessing(); +extern void lowPowerESP32(); +extern void stateBTMeasures(bool); #ifdef ESP32 extern int btQueueBlocked; diff --git a/main/config_DHT.h b/main/config_DHT.h index 16d733346f..89f4c8c25a 100644 --- a/main/config_DHT.h +++ b/main/config_DHT.h @@ -27,7 +27,8 @@ #define config_DHT_h extern void setupDHT(); -extern void DHTtoMQTT(); +extern void MeasureTempAndHum(); + /*----------------------------USER PARAMETERS-----------------------------*/ /*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/ #define DHTTOPIC "/DHTtoMQTT/dht1" diff --git a/main/config_DS1820.h b/main/config_DS1820.h index b40ba35123..c1003ed91e 100644 --- a/main/config_DS1820.h +++ b/main/config_DS1820.h @@ -28,7 +28,9 @@ extern void setupZsensorDS1820(); extern void DS1820toMQTT(); +extern void MeasureDS1820Temp(); extern void pubOneWire_HADiscovery(); + /*----------------------------USER PARAMETERS-----------------------------*/ /*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/ #define OW_TOPIC "/OneWiretoMQTT/ds1820" diff --git a/main/config_FASTLED.h b/main/config_FASTLED.h index fa22e7884f..7aae6602f8 100644 --- a/main/config_FASTLED.h +++ b/main/config_FASTLED.h @@ -24,6 +24,10 @@ #ifndef config_FASTLED_h #define config_FASTLED_h +extern void setupFASTLED(); +extern void FASTLEDLoop(); +extern void MQTTtoFASTLED(char*, char*); +extern void MQTTtoFASTLED(char*, JsonObject&); /*-------------------FASTLED topics & parameters----------------------*/ //FASTLED MQTT Subjects #define subjectMQTTtoFASTLED "/commands/MQTTtoFASTLED" diff --git a/main/config_GPIOInput.h b/main/config_GPIOInput.h index 5a4d9cd781..5c9a34a249 100644 --- a/main/config_GPIOInput.h +++ b/main/config_GPIOInput.h @@ -28,6 +28,7 @@ extern void setupGPIOInput(); extern void GPIOInputtoMQTT(); +extern void MeasureGPIOInput(); /*----------------------------USER PARAMETERS-----------------------------*/ /*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/ #define subjectGPIOInputtoMQTT "/GPIOInputtoMQTT" diff --git a/main/config_GPIOKeyCode.h b/main/config_GPIOKeyCode.h index 79bc9931d3..9896ccc4be 100644 --- a/main/config_GPIOKeyCode.h +++ b/main/config_GPIOKeyCode.h @@ -28,6 +28,7 @@ extern void setupGPIOKeyCode(); extern void GPIOKeyCodetoMQTT(); +extern void MeasureGPIOKeyCode(); /*----------------------------USER PARAMETERS-----------------------------*/ /*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/ #define subjectGPIOKeyCodetoMQTT "/keycode" diff --git a/main/config_HCSR501.h b/main/config_HCSR501.h index 72b2dca073..1482f76342 100644 --- a/main/config_HCSR501.h +++ b/main/config_HCSR501.h @@ -28,6 +28,7 @@ extern void setupHCSR501(); extern void HCSR501toMQTT(); +extern void MeasureHCSR501(); /*----------------------------USER PARAMETERS-----------------------------*/ /*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/ #define subjectHCSR501toMQTT "/HCSR501toMQTT" diff --git a/main/config_HTU21.h b/main/config_HTU21.h index 8d0a08aaca..7efc31b26e 100644 --- a/main/config_HTU21.h +++ b/main/config_HTU21.h @@ -38,8 +38,8 @@ #ifndef config_HTU21_h #define config_HTU21_h -extern void setupHTU21(); -extern void HTU21toMQTT(); +extern void setupZsensorHTU21(); +extern void MeasureTempHum(); #define htu21_always true // if false when the current value of the parameter is the same as previous one don't send it by MQTT #define TimeBetweenReadinghtu21 30000 diff --git a/main/config_INA226.h b/main/config_INA226.h index 66a8b90d3b..ebc37f215e 100644 --- a/main/config_INA226.h +++ b/main/config_INA226.h @@ -28,6 +28,8 @@ extern void setupINA226(); extern void INA226toMQTT(); +extern void MeasureINA226(); + /*----------------------------USER PARAMETERS-----------------------------*/ /*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/ #define subjectINA226toMQTT "/INA226toMQTT" diff --git a/main/config_ONOFF.h b/main/config_ONOFF.h index ea34458b62..4300569e92 100644 --- a/main/config_ONOFF.h +++ b/main/config_ONOFF.h @@ -29,6 +29,7 @@ extern void setupONOFF(); extern void MQTTtoONOFF(char* topicOri, char* datacallback); extern void MQTTtoONOFF(char* topicOri, JsonObject& RFdata); +extern void stateONOFFMeasures(); /*----------------------------USER PARAMETERS-----------------------------*/ /*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/ #define subjectMQTTtoONOFF "/commands/MQTTtoONOFF" diff --git a/main/config_PWM.h b/main/config_PWM.h index bf90c1fc34..c5a61229d2 100644 --- a/main/config_PWM.h +++ b/main/config_PWM.h @@ -24,6 +24,11 @@ /*-------------------PWM topics & parameters----------------------*/ // PWM MQTT Subjects + +extern void setupPWM(); +extern void PWMLoop(); +extern void MQTTtoPWM(char*, JsonObject&); + #define subjectMQTTtoPWM "/commands/MQTTtoPWM" #define subjectMQTTtoPWMset subjectMQTTtoPWM "/set" //set channel(s) with JSON struct {"r":0-1,"g":0-1,"b":0-1,"w0":0-1,"w0":0-1,"fade":} #define subjectMQTTtoPWMcalibrate subjectMQTTtoPWM "/calibrate" //set calibration data JSON struct {"gamma-r":0.5-4.0,"min-r":0-1,"max-r":0-1 etc. } diff --git a/main/config_RF.h b/main/config_RF.h index 7180547711..ec02eea509 100644 --- a/main/config_RF.h +++ b/main/config_RF.h @@ -66,6 +66,9 @@ extern void disableRTLreceive(); extern int getRTLrssiThreshold(); extern int getRTLCurrentRSSI(); extern int getRTLMessageCount(); +extern int getRTLAverageRSSI(); +extern int getOOKThresh(); + # ifdef ZmqttDiscovery extern void launchRTL_433Discovery(bool overrideDiscovery); // This structure stores the entities of the RTL 433 devices and is they have been discovered or not diff --git a/main/config_TEMT6000.h b/main/config_TEMT6000.h index c60f485379..e8dac39c49 100644 --- a/main/config_TEMT6000.h +++ b/main/config_TEMT6000.h @@ -38,8 +38,8 @@ #ifndef config_TEMT6000_h #define config_TEMT6000_h -extern void setupTEMT6000(); -extern void TEMT6000toMQTT(); +extern void setupZsensorTEMT6000(); +extern void MeasureLightIntensityTEMT6000(); #define temt6000_always true // if false only send current value if it has changed #define TEMT6000LIGHTSENSORPIN A0 //Ambient light sensor reading = ADC0 diff --git a/main/config_TSL2561.h b/main/config_TSL2561.h index 066abb56de..17d804aa03 100644 --- a/main/config_TSL2561.h +++ b/main/config_TSL2561.h @@ -39,8 +39,8 @@ #ifndef config_TSL2561_h #define config_TSL2561_h -extern void setupTSL2561(); -extern void TSL2561toMQTT(); +extern void setupZsensorTSL2561(); +extern void MeasureLightIntensityTSL2561(); #define tsl2561_always true // if false only send current value if it has changed #define TimeBetweenReadingtsl2561 30000 diff --git a/main/main.ino b/main/main.ino index 2f7b741784..5c5b4e5ecd 100644 --- a/main/main.ino +++ b/main/main.ino @@ -186,8 +186,6 @@ char mqtt_user[parameters_size + 1] = MQTT_USER; // not compulsory only if your char mqtt_pass[parameters_size + 1] = MQTT_PASS; // not compulsory only if your broker needs authentication char mqtt_server[parameters_size + 1] = MQTT_SERVER; char mqtt_port[6] = MQTT_PORT; -char mqtt_topic[parameters_size + 1] = Base_Topic; -char gateway_name[parameters_size + 1] = Gateway_Name; char ota_pass[parameters_size + 1] = ota_password; #ifdef USE_MAC_AS_GATEWAY_NAME # undef WifiManager_ssid @@ -204,24 +202,11 @@ bool connectedOnce = false; //indicate if we have been connected once to MQTT bool connected = false; //indicate whether we are currently connected. Used to detected re-connection int failure_number_ntwk = 0; // number of failure connecting to network int failure_number_mqtt = 0; // number of failure connecting to MQTT -#ifdef ZmqttDiscovery -bool disc = true; // Auto discovery with Home Assistant convention -unsigned long lastDiscovery = 0; // Time of the last discovery to trigger automaticaly to off after DiscoveryAutoOffTimer -#endif + unsigned long timer_led_measures = 0; static void* eClient = nullptr; static unsigned long last_ota_activity_millis = 0; #if defined(ESP8266) || defined(ESP32) -# include -// Flags definition for white list, black list, discovery management -# define device_flags_init 0 << 0 -# define device_flags_isDisc 1 << 0 -# define device_flags_isWhiteL 1 << 1 -# define device_flags_isBlackL 1 << 2 -# define device_flags_connect 1 << 3 -# define isWhite(device) device->isWhtL -# define isBlack(device) device->isBlkL -# define isDiscovered(device) device->isDisc static bool mqtt_secure = MQTT_SECURE_DEFAULT; static bool mqtt_cert_validate = MQTT_CERT_VALIDATE_DEFAULT; @@ -255,9 +240,7 @@ static bool esp32EthConnected = false; # include # include WiFiMulti wifiMulti; -# include # include -Preferences preferences; # ifdef MDNS_SD # include # endif @@ -284,9 +267,6 @@ ESP8266WiFiMulti wifiMulti; # include #endif -#define convertTemp_CtoF(c) ((c * 1.8) + 32) -#define convertTemp_FtoC(f) ((f - 32) * 5 / 9) - // client link to pubsub MQTT PubSubClient client;