mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-28 13:16:32 +00:00
Add support for ADC0 Moisture
Add support for ``AdcParam`` parameters to control ADC0 Moisture formula by Federico Leoni (#7309)
This commit is contained in:
parent
dac9fa8acf
commit
def4378499
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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"
|
||||
|
||||
/********************************************************************************************/
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************************************************************\
|
||||
|
@ -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} = <tr><th>, {m} = </th><td>, {e} = </td></tr>
|
||||
|
||||
const char HTTP_SNS_MOISTURE[] PROGMEM = "{s} " D_JSON_MOISTURE "{m}%s %{e}";
|
||||
const char HTTP_SNS_DARKNESS[] PROGMEM = "{s} " D_JSON_DARKNESS "{m}%s %{e}";
|
||||
const char HTTP_SNS_CHIRPVER[] PROGMEM = "{s} CHIRP-sensor %u at address{m}0x%x{e}"
|
||||
"{s} FW-version{m}%s {e}"; ;
|
||||
const char HTTP_SNS_CHIRPSLEEP[] PROGMEM = "{s} {m} is sleeping ...{e}";
|
||||
const char HTTP_SNS_DARKNESS[] PROGMEM = "{s} " D_JSON_DARKNESS "{m}%s %%{e}";
|
||||
const char HTTP_SNS_CHIRPVER[] PROGMEM = "{s} CHIRP-sensor %u at address{m}0x%x{e}"
|
||||
"{s} FW-version{m}%s {e}"; ;
|
||||
const char HTTP_SNS_CHIRPSLEEP[] PROGMEM = "{s} {m} is sleeping ...{e}";
|
||||
#endif // USE_WEBSERVER
|
||||
|
||||
|
||||
/********************************************************************************************/
|
||||
|
||||
void ChirpShow(bool json)
|
||||
@ -420,8 +415,6 @@ void ChirpShow(bool json)
|
||||
for (uint32_t i = 0; i < chirp_found_sensors; i++) {
|
||||
if (chirp_sensor[i].version) {
|
||||
// convert double values to string
|
||||
char str_moisture[33];
|
||||
dtostrfd(chirp_sensor[i].moisture, 0, str_moisture);
|
||||
char str_temperature[33];
|
||||
double t_temperature = ((double) chirp_sensor[i].temperature )/10.0;
|
||||
dtostrfd(t_temperature, Settings.flag2.temperature_resolution, str_temperature);
|
||||
@ -434,9 +427,10 @@ void ChirpShow(bool json)
|
||||
else{
|
||||
sprintf(str_version, "%x", chirp_sensor[i].version);
|
||||
}
|
||||
|
||||
if (json) {
|
||||
if(!chirp_sensor[i].explicitSleep) {
|
||||
ResponseAppend_P(PSTR(",\"%s%u\":{\"" D_JSON_MOISTURE "\":%s"),chirp_name, i, str_moisture);
|
||||
ResponseAppend_P(PSTR(",\"%s%u\":{\"" D_JSON_MOISTURE "\":%d"), chirp_name, i, chirp_sensor[i].moisture);
|
||||
if(chirp_sensor[i].temperature!=-1){ // this is the error code -> no temperature
|
||||
ResponseAppend_P(PSTR(",\"" D_JSON_TEMPERATURE "\":%s"),str_temperature);
|
||||
}
|
||||
@ -447,9 +441,11 @@ void ChirpShow(bool json)
|
||||
}
|
||||
#ifdef USE_DOMOTICZ
|
||||
if (0 == tele_period) {
|
||||
DomoticzTempHumSensor(str_temperature, str_moisture);
|
||||
DomoticzSensor(DZ_ILLUMINANCE,chirp_sensor[i].light); // this is not LUX!!
|
||||
}
|
||||
char str_moisture[33];
|
||||
dtostrfd(chirp_sensor[i].moisture, 0, str_moisture);
|
||||
DomoticzTempHumSensor(str_temperature, str_moisture);
|
||||
DomoticzSensor(DZ_ILLUMINANCE,chirp_sensor[i].light); // this is not LUX!!
|
||||
}
|
||||
#endif // USE_DOMOTICZ
|
||||
#ifdef USE_WEBSERVER
|
||||
} else {
|
||||
@ -458,10 +454,10 @@ void ChirpShow(bool json)
|
||||
WSContentSend_PD(HTTP_SNS_CHIRPSLEEP);
|
||||
}
|
||||
else {
|
||||
WSContentSend_PD(HTTP_SNS_MOISTURE, str_moisture);
|
||||
WSContentSend_PD(HTTP_SNS_MOISTURE, "", chirp_sensor[i].moisture);
|
||||
WSContentSend_PD(HTTP_SNS_DARKNESS, str_light);
|
||||
if(chirp_sensor[i].temperature!=-1){ // this is the error code -> no temperature
|
||||
WSContentSend_PD(HTTP_SNS_TEMP, " ",str_temperature, TempUnit());
|
||||
if (chirp_sensor[i].temperature!=-1) { // this is the error code -> no temperature
|
||||
WSContentSend_PD(HTTP_SNS_TEMP, "", str_temperature, TempUnit());
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user