From def43784998c18f0821caef253326ced45455b36 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 24 Dec 2019 12:20:04 +0100 Subject: [PATCH] Add support for ADC0 Moisture Add support for ``AdcParam`` parameters to control ADC0 Moisture formula by Federico Leoni (#7309) --- RELEASENOTES.md | 1 + tasmota/CHANGELOG.md | 1 + tasmota/i18n.h | 55 +++++++++++++++++++------------------- tasmota/tasmota_template.h | 2 +- tasmota/xsns_02_analog.ino | 14 +++++----- tasmota/xsns_48_chirp.ino | 34 +++++++++++------------ 6 files changed, 52 insertions(+), 55 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 88442445a..3515a7433 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -57,6 +57,7 @@ The following binary downloads have been compiled with ESP8266/Arduino library c - Change number of rule ``Var``s and ``Mem``s from 5 to 16 (#4933) - Add support for max 150 characters in most command parameter strings (#3686, #4754) - Add support for GPS as NTP server by Christian Baars and Adrian Scillato +- Add support for ``AdcParam`` parameters to control ADC0 Moisture formula by Federico Leoni (#7309) - Add Zigbee coalesce sensor attributes into a single message - Add Zigbee better support for Xiaomi Double Switch and Xiaomi Vibration sensor - Add Deepsleep start delay based on Teleperiod if ``Teleperiod`` differs from 10 or 300 diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index cb2bfe0c5..372a2507f 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -4,6 +4,7 @@ - Changed Settings variable namings - Add Zigbee better support for Xiaomi Double Switch and Xiaomi Vibration sensor +- Add support for ``AdcParam`` parameters to control ADC0 Moisture formula by Federico Leoni (#7309) ### 8.0.0.1 20191221 diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 24b0e1f19..1ae20dcde 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -50,6 +50,7 @@ #define D_JSON_COUNT "Count" #define D_JSON_COUNTER "Counter" #define D_JSON_CURRENT "Current" // As in Voltage and Current +#define D_JSON_DARKNESS "Darkness" #define D_JSON_DATA "Data" #define D_JSON_DISTANCE "Distance" #define D_JSON_DNSSERVER "DNSServer" @@ -458,7 +459,6 @@ #define D_CMND_LONGITUDE "Longitude" // Commands xdrv_16_tuyadimmer.ino - #define D_CMND_TUYA_MCU "TuyaMCU" #define D_CMND_TUYA_MCU_SEND_STATE "TuyaSend" #define D_JSON_TUYA_MCU_RECEIVED "TuyaReceived" @@ -485,34 +485,33 @@ #define D_CMND_ZIGBEE_SEND "ZigbeeSend" #define D_JSON_ZIGBEE_ZCL_SENT "ZigbeeZCLSent" - // Commands xdrv_25_A4988_Stepper.ino - #ifdef USE_A4988_STEPPER - #define D_CMND_MOTOR "MOTOR" - #define D_JSON_MOTOR_MOVE "doMove" - #define D_JSON_MOTOR_ROTATE "doRotate" - #define D_JSON_MOTOR_TURN "doTurn" - #define D_JSON_MOTOR_SPR "setSPR" - #define D_JSON_MOTOR_RPM "setRPM" - #define D_JSON_MOTOR_MIS "setMIS" - #endif +// Commands xdrv_25_A4988_Stepper.ino +#define D_CMND_MOTOR "MOTOR" +#define D_JSON_MOTOR_MOVE "doMove" +#define D_JSON_MOTOR_ROTATE "doRotate" +#define D_JSON_MOTOR_TURN "doTurn" +#define D_JSON_MOTOR_SPR "setSPR" +#define D_JSON_MOTOR_RPM "setRPM" +#define D_JSON_MOTOR_MIS "setMIS" - // Commands xdrv_27_Shutter.ino - #ifdef USE_SHUTTER - #define D_PRFX_SHUTTER "Shutter" - #define D_CMND_SHUTTER_OPEN "Open" - #define D_CMND_SHUTTER_CLOSE "Close" - #define D_CMND_SHUTTER_STOP "Stop" - #define D_CMND_SHUTTER_POSITION "Position" - #define D_CMND_SHUTTER_OPENTIME "OpenDuration" - #define D_CMND_SHUTTER_CLOSETIME "CloseDuration" - #define D_CMND_SHUTTER_RELAY "Relay" - #define D_CMND_SHUTTER_SETHALFWAY "SetHalfway" - #define D_CMND_SHUTTER_SETCLOSE "SetClose" - #define D_CMND_SHUTTER_INVERT "Invert" - #define D_CMND_SHUTTER_CLIBRATION "Calibration" - #define D_CMND_SHUTTER_MOTORDELAY "MotorDelay" - #define D_CMND_SHUTTER_FREQUENCY "Frequency" - #endif +// Commands xdrv_27_Shutter.ino +#define D_PRFX_SHUTTER "Shutter" +#define D_CMND_SHUTTER_OPEN "Open" +#define D_CMND_SHUTTER_CLOSE "Close" +#define D_CMND_SHUTTER_STOP "Stop" +#define D_CMND_SHUTTER_POSITION "Position" +#define D_CMND_SHUTTER_OPENTIME "OpenDuration" +#define D_CMND_SHUTTER_CLOSETIME "CloseDuration" +#define D_CMND_SHUTTER_RELAY "Relay" +#define D_CMND_SHUTTER_SETHALFWAY "SetHalfway" +#define D_CMND_SHUTTER_SETCLOSE "SetClose" +#define D_CMND_SHUTTER_INVERT "Invert" +#define D_CMND_SHUTTER_CLIBRATION "Calibration" +#define D_CMND_SHUTTER_MOTORDELAY "MotorDelay" +#define D_CMND_SHUTTER_FREQUENCY "Frequency" + +// Commands xsns_02_analog.ino +#define D_CMND_ADCPARAM "AdcParam" /********************************************************************************************/ diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 6b936d14a..685546b91 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -311,9 +311,9 @@ enum UserSelectableAdc0 { ADC0_LIGHT, // Light sensor ADC0_BUTTON, // Button ADC0_BUTTON_INV, + ADC0_MOIST, // Moisture // ADC0_SWITCH, // Switch // ADC0_SWITCH_INV, - ADC0_MOIST, // Moisture ADC0_END }; // Programmer selectable ADC0 functionality diff --git a/tasmota/xsns_02_analog.ino b/tasmota/xsns_02_analog.ino index 4e75dbbe7..3dd974918 100644 --- a/tasmota/xsns_02_analog.ino +++ b/tasmota/xsns_02_analog.ino @@ -146,7 +146,7 @@ void AdcEverySecond(void) } void AdcShow(bool json) -{ +{ if (ADC0_INPUT == my_adc0) { uint16_t analog = AdcRead(5); @@ -193,12 +193,12 @@ void AdcShow(bool json) #ifdef USE_WEBSERVER } else { WSContentSend_PD(HTTP_SNS_ILLUMINANCE, "", adc_light); - #endif // USE_WEBSERVER } } else if (ADC0_MOIST == my_adc0) { uint16_t adc_moist = AdcGetMoist(); + if (json) { ResponseAppend_P(JSON_SNS_MOISTURE, "ANALOG", adc_moist); #ifdef USE_WEBSERVER @@ -206,14 +206,13 @@ void AdcShow(bool json) WSContentSend_PD(HTTP_SNS_MOISTURE, "", adc_moist); #endif // USE_WEBSERVER } - } + } } /*********************************************************************************************\ * Commands \*********************************************************************************************/ -#define D_CMND_ADCPARAM "AdcParam" const char kAdcCommands[] PROGMEM = "|" // No prefix D_CMND_ADC "|" D_CMND_ADCS "|" D_CMND_ADCPARAM; @@ -248,7 +247,7 @@ void CmndAdcs(void) void CmndAdcParam(void) { if (XdrvMailbox.data_len) { - if ((ADC0_TEMP == XdrvMailbox.payload) || (ADC0_LIGHT == XdrvMailbox.payload) || (ADC0_MOIST == XdrvMailbox.payload)) { + if ((ADC0_TEMP == XdrvMailbox.payload) || (ADC0_LIGHT == XdrvMailbox.payload) || (ADC0_MOIST == XdrvMailbox.payload)) { // if ((XdrvMailbox.payload == my_adc0) && ((ADC0_TEMP == my_adc0) || (ADC0_LIGHT == my_adc0))) { if (strstr(XdrvMailbox.data, ",") != nullptr) { // Process parameter entry char sub_string[XdrvMailbox.data_len +1]; @@ -283,10 +282,11 @@ void CmndAdcParam(void) if ((ADC0_TEMP == my_adc0) || (ADC0_LIGHT == my_adc0)) { Response_P(PSTR("{\"" D_CMND_ADCPARAM "\":[%d,%d,%d,%s]}"), Settings.adc_param_type, Settings.adc_param1, Settings.adc_param2, param3); - } else if (ADC0_MOIST == my_adc0) { + } + else if (ADC0_MOIST == my_adc0) { Response_P(PSTR("{\"" D_CMND_ADCPARAM "\":[%d,%d,%d]}"), Settings.adc_param_type, Settings.adc_param1, Settings.adc_param2); - } + } } /*********************************************************************************************\ diff --git a/tasmota/xsns_48_chirp.ino b/tasmota/xsns_48_chirp.ino index 131a0cc24..f761e6afc 100644 --- a/tasmota/xsns_48_chirp.ino +++ b/tasmota/xsns_48_chirp.ino @@ -397,22 +397,17 @@ void ChirpEvery100MSecond(void) } /********************************************************************************************/ + // normaly in i18n.h - -// #define D_JSON_MOISTURE "Moisture" // on i18n.h -#define D_JSON_DARKNESS "Darkness" - #ifdef USE_WEBSERVER // {s} =