6.5.0.10 Enable ADC0 by default

6.5.0.10 20190513
 * Enable ADC0 by default in my_user_config.h (#5671)
 * Add user configurable ADC0 to Module and Template configuration compatible with current FLAG options (#5671)
This commit is contained in:
Theo Arends 2019-05-13 15:56:01 +02:00
parent f9f3e29eab
commit ad54ece2fb
34 changed files with 203 additions and 121 deletions

View File

@ -1,4 +1,8 @@
/* 6.5.0.9 20190418
/* 6.5.0.10 20190513
* Enable ADC0 by default in my_user_config.h (#5671)
* Add user configurable ADC0 to Module and Template configuration compatible with current FLAG options (#5671)
*
* 6.5.0.9 20190418
* Add command SetOption63 0/1 to disable relay state feedback scan at restart (#5594, #5663)
* Fix TasmotaSerial at 9600 bps solving DFPlayer comms (#5528)
* Fix Shelly 2.5 overtemp

View File

@ -215,6 +215,8 @@
#define D_CMND_WEIGHT_RESOLUTION "WeightRes"
#define D_CMND_MODULE "Module"
#define D_CMND_MODULES "Modules"
#define D_CMND_ADC "ADC"
#define D_CMND_ADCS "ADCs"
#define D_CMND_GPIO "GPIO"
#define D_JSON_NOT_SUPPORTED "Not supported"
#define D_CMND_GPIOS "GPIOs"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Параметри на модула"
#define D_MODULE_TYPE "Тип на модула"
#define D_PULLUP_ENABLE "Без pull-up за бутон/ключ"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Сериен вход"
#define D_SERIAL_OUT "Сериен изход"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Име"
#define D_BASE_TYPE "Базиран на"
#define D_TEMPLATE_FLAGS "Опции"
#define D_ALLOW_ADC0 "ADC0 вход"
#define D_ALLOW_ADC0_TEMP "Температура от ADC0"
#define D_ALLOW_PULLUP "Потребителски избор на pull-up"
#define D_SAVE_CONFIGURATION "Запазване на конфигурацията"
#define D_CONFIGURATION_SAVED "Конфигурацията е запазена"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Nastavení modulu"
#define D_MODULE_TYPE "Typ modulu"
#define D_PULLUP_ENABLE "Tlačítko/Spínač bez pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial In"
#define D_SERIAL_OUT "Serial Out"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Název"
#define D_BASE_TYPE "Vzor z"
#define D_TEMPLATE_FLAGS "Volby"
#define D_ALLOW_ADC0 "ADC0 vstup"
#define D_ALLOW_ADC0_TEMP "ADC0 teplota"
#define D_ALLOW_PULLUP "Pull-up volba uživatele"
#define D_SAVE_CONFIGURATION "Ulož nastavení"
#define D_CONFIGURATION_SAVED "Nastavení uloženo"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Geräte-Einstellungen"
#define D_MODULE_TYPE "Gerätetyp"
#define D_PULLUP_ENABLE "Kein Taster/Schalter Pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "serieller Eingang [serial in]"
#define D_SERIAL_OUT "serieller Ausgang [serial out]"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "basiert auf"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 Temperatur"
#define D_ALLOW_PULLUP "Nutzer pull-up Auswahl"
#define D_SAVE_CONFIGURATION "Konfiguration speichern"
#define D_CONFIGURATION_SAVED "Konfiguration gespeichert"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Παράμετροι μονάδας"
#define D_MODULE_TYPE "Τύπος μονάδας"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial In"
#define D_SERIAL_OUT "Serial Out"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Όνομα"
#define D_BASE_TYPE "Βασίζεται στο"
#define D_TEMPLATE_FLAGS "Επιλογές"
#define D_ALLOW_ADC0 "Είσοδος ADC0"
#define D_ALLOW_ADC0_TEMP "Θερμοκρασία ADC0"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Αποθήκευση ρυθμίσεων"
#define D_CONFIGURATION_SAVED "Οι ρυθμίσεις αποθηκεύτηκαν"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Module parameters"
#define D_MODULE_TYPE "Module type"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial In"
#define D_SERIAL_OUT "Serial Out"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Save configuration"
#define D_CONFIGURATION_SAVED "Configuration saved"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Parámetros del módulo"
#define D_MODULE_TYPE "Tipo de módulo"
#define D_PULLUP_ENABLE "Botón/Llave sin pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial In"
#define D_SERIAL_OUT "Serial Out"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Nombre"
#define D_BASE_TYPE "Basada en"
#define D_TEMPLATE_FLAGS "Opciones"
#define D_ALLOW_ADC0 "Entrada ADC0"
#define D_ALLOW_ADC0_TEMP "Temperatura por ADC0"
#define D_ALLOW_PULLUP "Habilitar pull-up"
#define D_SAVE_CONFIGURATION "Grabar configuración"
#define D_CONFIGURATION_SAVED "Configuración grabada"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Paramètres module"
#define D_MODULE_TYPE "Type de module"
#define D_PULLUP_ENABLE "Inter. sans pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Entrée série"
#define D_SERIAL_OUT "Sortie série"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Nom"
#define D_BASE_TYPE "Basé sur"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "Entrée ADC0"
#define D_ALLOW_ADC0_TEMP "Température ADC0"
#define D_ALLOW_PULLUP "Pull-up utilisateur"
#define D_SAVE_CONFIGURATION "Enregistrer la configuration"
#define D_CONFIGURATION_SAVED "Configuration enregistrée"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "מודול פרמטרים"
#define D_MODULE_TYPE "סוג מודול"
#define D_PULLUP_ENABLE "pull-up אין לחצן/מתג"
#define D_ADC "ADC"
#define D_GPIO " רגל "
#define D_SERIAL_IN "כניסת סריאל"
#define D_SERIAL_OUT "יציאת סריאל"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "שם"
#define D_BASE_TYPE "מבוסס על"
#define D_TEMPLATE_FLAGS "אפשריות"
#define D_ALLOW_ADC0 "ADC0 כניסת"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "pull-up בחירת משתמש עבור"
#define D_SAVE_CONFIGURATION "שמירת הגדרות"
#define D_CONFIGURATION_SAVED "הגדרות נשמרו"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Modul paraméterek"
#define D_MODULE_TYPE "Alkalmazott modul"
#define D_PULLUP_ENABLE "Nincs felhúzó ellenállás"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Soros BE"
#define D_SERIAL_OUT "Soros KI"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Beállítások mentése"
#define D_CONFIGURATION_SAVED "Beállítások elmentve"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Parametri del modulo"
#define D_MODULE_TYPE "Tipo modulo"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial In"
#define D_SERIAL_OUT "Serial Out"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Salva configurazione"
#define D_CONFIGURATION_SAVED "Configurazione salvata"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "모듈 상세"
#define D_MODULE_TYPE "모듈 타입"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial In"
#define D_SERIAL_OUT "Serial Out"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "이름"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "옵션"
#define D_ALLOW_ADC0 "ADC0 입력"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "설정 저장"
#define D_CONFIGURATION_SAVED "설정 저장 완료"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Module parameters"
#define D_MODULE_TYPE "Module soort"
#define D_PULLUP_ENABLE "Geen schakelaar pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serieel In"
#define D_SERIAL_OUT "Serieel Uit"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Naam"
#define D_BASE_TYPE "Op basis van"
#define D_TEMPLATE_FLAGS "Opties"
#define D_ALLOW_ADC0 "ADC0 ingang"
#define D_ALLOW_ADC0_TEMP "ADC0 temperatuur"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Bewaar configuratie"
#define D_CONFIGURATION_SAVED "Configuratie opgeslagen"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Parametry modułu"
#define D_MODULE_TYPE "Typ modułu"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial In"
#define D_SERIAL_OUT "Serial Out"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Zapisz ustawienia"
#define D_CONFIGURATION_SAVED "Ustawienia zapisane"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Parâmetros do módulo"
#define D_MODULE_TYPE "Tipo de módulo"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Entrada serial"
#define D_SERIAL_OUT "Saída serial"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Gravar configuração"
#define D_CONFIGURATION_SAVED "Configuração gravada"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Parametros do Módulo"
#define D_MODULE_TYPE "Tipo de Módulo"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial Entrada"
#define D_SERIAL_OUT "Serial Saída"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Salvar configuração"
#define D_CONFIGURATION_SAVED "Configuração guardada"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Параметры модуля"
#define D_MODULE_TYPE "Тип модуля"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial вход"
#define D_SERIAL_OUT "Serial выход"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Сохранить конфигурацию"
#define D_CONFIGURATION_SAVED "Конфигурация сохранена "

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Nastavenia modulu"
#define D_MODULE_TYPE "Typ modulu"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial In"
#define D_SERIAL_OUT "Serial Out"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Ulož nastavenia"
#define D_CONFIGURATION_SAVED "Nastavenia uložené"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Modulparameterar"
#define D_MODULE_TYPE "Modultyp"
#define D_PULLUP_ENABLE "Ingen knapp/brytare pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Seriell in"
#define D_SERIAL_OUT "Seriell ut"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Spara konfiguration"
#define D_CONFIGURATION_SAVED "Konfiguration sparad"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Modül parametreleri"
#define D_MODULE_TYPE "Modul türü"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial In"
#define D_SERIAL_OUT "Serial Out"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Ayarları Kaydet"
#define D_CONFIGURATION_SAVED "Ayarlar kaydedildi"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "Параметри модулю"
#define D_MODULE_TYPE "Тип модулю"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial вхід"
#define D_SERIAL_OUT "Serial вихід"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "Зберегти конфігурацію"
#define D_CONFIGURATION_SAVED "Конфігурація збережена "

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "模块设置"
#define D_MODULE_TYPE "模块类型"
#define D_PULLUP_ENABLE "没有按钮/开关上拉"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "串口输入(RX)"
#define D_SERIAL_OUT "串口输出(TX)"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "名称"
#define D_BASE_TYPE "基于"
#define D_TEMPLATE_FLAGS "选项"
#define D_ALLOW_ADC0 "ADC0 输入"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "用户上拉选择"
#define D_SAVE_CONFIGURATION "保存设置"
#define D_CONFIGURATION_SAVED "设置已保存"

View File

@ -257,6 +257,7 @@
#define D_MODULE_PARAMETERS "模塊設置"
#define D_MODULE_TYPE "模塊類型"
#define D_PULLUP_ENABLE "No Button/Switch pull-up"
#define D_ADC "ADC"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "串口輸入(RX)"
#define D_SERIAL_OUT "串口輸出(TX)"
@ -306,9 +307,6 @@
#define D_TEMPLATE_NAME "Name"
#define D_BASE_TYPE "Based on"
#define D_TEMPLATE_FLAGS "Options"
#define D_ALLOW_ADC0 "ADC0 input"
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
#define D_ALLOW_PULLUP "User pull-up selection"
#define D_SAVE_CONFIGURATION "保存設置"
#define D_CONFIGURATION_SAVED "設置已保存"

View File

@ -294,7 +294,7 @@
// #define SUPPORT_MQTT_EVENT // Support trigger event with MQTT subscriptions (+3k5 code)
// -- Internal Analog input -----------------------
#define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices
//#define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices
// -- One wire sensors ----------------------------
// WARNING: Select none for default one DS18B20 sensor or enable one of the following two options for multiple sensors

View File

@ -285,7 +285,7 @@ struct SYSCFG {
uint8_t ws_color[4][3]; // 475
uint8_t ws_width[3]; // 481
myio my_gp; // 484
uint8_t test_step; // 495
uint8_t my_adc0; // 495
uint16_t light_pixels; // 496
uint8_t light_color[5]; // 498
uint8_t light_correction; // 49D

View File

@ -1164,6 +1164,9 @@ void SettingsDelta(void)
if (Settings.version < 0x06050007) {
Settings.ledmask = APP_LEDMASK;
}
if (Settings.version < 0x0605000A) {
Settings.my_adc0 = ADC0_NONE;
}
Settings.version = VERSION;
SettingsSave(1);

View File

@ -72,7 +72,7 @@ enum TasmotaCommands {
CMND_BACKLOG, CMND_DELAY, CMND_POWER, CMND_FANSPEED, CMND_STATUS, CMND_STATE, CMND_POWERONSTATE, CMND_PULSETIME,
CMND_BLINKTIME, CMND_BLINKCOUNT, CMND_SENSOR, CMND_SAVEDATA, CMND_SETOPTION, CMND_TEMPERATURE_RESOLUTION, CMND_HUMIDITY_RESOLUTION,
CMND_PRESSURE_RESOLUTION, CMND_POWER_RESOLUTION, CMND_VOLTAGE_RESOLUTION, CMND_FREQUENCY_RESOLUTION, CMND_CURRENT_RESOLUTION, CMND_ENERGY_RESOLUTION, CMND_WEIGHT_RESOLUTION,
CMND_MODULE, CMND_MODULES, CMND_GPIO, CMND_GPIOS, CMND_PWM, CMND_PWMFREQUENCY, CMND_PWMRANGE, CMND_COUNTER, CMND_COUNTERTYPE,
CMND_MODULE, CMND_MODULES, CMND_ADC, CMND_ADCS, CMND_GPIO, CMND_GPIOS, CMND_PWM, CMND_PWMFREQUENCY, CMND_PWMRANGE, CMND_COUNTER, CMND_COUNTERTYPE,
CMND_COUNTERDEBOUNCE, CMND_BUTTONDEBOUNCE, CMND_SWITCHDEBOUNCE, CMND_SLEEP, CMND_UPGRADE, CMND_UPLOAD, CMND_OTAURL, CMND_SERIALLOG, CMND_SYSLOG,
CMND_LOGHOST, CMND_LOGPORT, CMND_IPADDRESS, CMND_NTPSERVER, CMND_AP, CMND_SSID, CMND_PASSWORD, CMND_HOSTNAME,
CMND_WIFICONFIG, CMND_FRIENDLYNAME, CMND_SWITCHMODE, CMND_INTERLOCK, CMND_TEMPLATE,
@ -82,7 +82,7 @@ const char kTasmotaCommands[] PROGMEM =
D_CMND_BACKLOG "|" D_CMND_DELAY "|" D_CMND_POWER "|" D_CMND_FANSPEED "|" D_CMND_STATUS "|" D_CMND_STATE "|" D_CMND_POWERONSTATE "|" D_CMND_PULSETIME "|"
D_CMND_BLINKTIME "|" D_CMND_BLINKCOUNT "|" D_CMND_SENSOR "|" D_CMND_SAVEDATA "|" D_CMND_SETOPTION "|" D_CMND_TEMPERATURE_RESOLUTION "|" D_CMND_HUMIDITY_RESOLUTION "|"
D_CMND_PRESSURE_RESOLUTION "|" D_CMND_POWER_RESOLUTION "|" D_CMND_VOLTAGE_RESOLUTION "|" D_CMND_FREQUENCY_RESOLUTION "|" D_CMND_CURRENT_RESOLUTION "|" D_CMND_ENERGY_RESOLUTION "|" D_CMND_WEIGHT_RESOLUTION "|"
D_CMND_MODULE "|" D_CMND_MODULES "|" D_CMND_GPIO "|" D_CMND_GPIOS "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|" D_CMND_COUNTER "|" D_CMND_COUNTERTYPE "|"
D_CMND_MODULE "|" D_CMND_MODULES "|" D_CMND_ADC "|" D_CMND_ADCS "|" D_CMND_GPIO "|" D_CMND_GPIOS "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|" D_CMND_COUNTER "|" D_CMND_COUNTERTYPE "|"
D_CMND_COUNTERDEBOUNCE "|" D_CMND_BUTTONDEBOUNCE "|" D_CMND_SWITCHDEBOUNCE "|" D_CMND_SLEEP "|" D_CMND_UPGRADE "|" D_CMND_UPLOAD "|" D_CMND_OTAURL "|" D_CMND_SERIALLOG "|" D_CMND_SYSLOG "|"
D_CMND_LOGHOST "|" D_CMND_LOGPORT "|" D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|"
D_CMND_WIFICONFIG "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_INTERLOCK "|" D_CMND_TEMPLATE "|"
@ -154,6 +154,7 @@ uint8_t devices_present = 0; // Max number of devices supported
uint8_t seriallog_level; // Current copy of Settings.seriallog_level
uint8_t syslog_level; // Current copy of Settings.syslog_level
uint8_t my_module_type; // Current copy of Settings.module or user template type
uint8_t my_adc0; // Active copy of Module ADC0
//uint8_t mdns_delayed_start = 0; // mDNS delayed start
bool serial_local = false; // Handle serial locally;
bool fallback_topic_flag = false; // Use Topic or FallbackTopic
@ -169,7 +170,7 @@ bool spi_flg = false; // SPI configured
bool soft_spi_flg = false; // Software SPI configured
bool ntp_force_sync = false; // Force NTP sync
myio my_module; // Active copy of Module GPIOs (17 x 8 bits)
gpio_flag my_module_flag; // Active copy of Module GPIO flags
gpio_flag my_module_flag; // Active copy of Template GPIO flags
StateBitfield global_state; // Global states (currently Wifi and Mqtt) (8 bits)
char my_version[33]; // Composed version string
char my_image[33]; // Code image and/or commit
@ -917,6 +918,26 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
}
mqtt_data[0] = '\0';
}
#ifndef USE_ADC_VCC
else if (CMND_ADC == command_code) {
if (ValidAdc() && (payload >= 0) && (payload < ADC0_END)) {
Settings.my_adc0 = payload;
restart_flag = 2;
}
Response_P(PSTR("{\"" D_CMND_ADC "0\":\"%d (%s)\"}"), Settings.my_adc0, GetTextIndexed(stemp1, sizeof(stemp1), Settings.my_adc0, kAdc0Names));
}
else if (CMND_ADCS == command_code) {
Response_P(PSTR("{\"" D_CMND_ADCS "\":["));
for (uint8_t i = 0; i < ADC0_END; i++) {
if (jsflg) {
ResponseAppend_P(PSTR(","));
}
jsflg = true;
ResponseAppend_P(PSTR("\"%d (%s)\""), i, GetTextIndexed(stemp1, sizeof(stemp1), i, kAdc0Names));
}
ResponseAppend_P(PSTR("]}"));
}
#endif // USE_ADC_VCC
else if ((CMND_GPIO == command_code) && (index < sizeof(Settings.my_gp))) {
myio cmodule;
ModuleGpios(&cmodule);
@ -2373,13 +2394,23 @@ void GpioInit(void)
Settings.my_gp.io[i] = GPIO_NONE; // Fix not supported sensor ids in module
}
else if (Settings.my_gp.io[i] > GPIO_NONE) {
my_module.io[i] = Settings.my_gp.io[i];
my_module.io[i] = Settings.my_gp.io[i]; // Set User selected Module sensors
}
if ((def_gp.io[i] > GPIO_NONE) && (def_gp.io[i] < GPIO_USER)) {
my_module.io[i] = def_gp.io[i];
my_module.io[i] = def_gp.io[i]; // Force Template override
}
}
if ((Settings.my_adc0 >= ADC0_END) && (Settings.my_adc0 < ADC0_USER)) {
Settings.my_adc0 = ADC0_NONE; // Fix not supported sensor ids in module
}
else if (Settings.my_adc0 > ADC0_NONE) {
my_adc0 = Settings.my_adc0; // Set User selected Module sensors
}
my_module_flag = ModuleFlag();
uint8_t template_adc0 = my_module_flag.data &15;
if ((template_adc0 > ADC0_NONE) && (template_adc0 < ADC0_USER)) {
my_adc0 = template_adc0; // Force Template override
}
for (uint16_t i = 0; i < GPIO_MAX; i++) {
pin[i] = 99;

View File

@ -248,6 +248,32 @@ const char kSensorNames[] PROGMEM =
D_SENSOR_ADE7953_IRQ "|"
;
// User selectable ADC0 functionality
enum UserSelectableAdc0 {
ADC0_NONE, // Not used
ADC0_INPUT, // Analog input
ADC0_TEMP, // Thermistor
ADC0_LIGHT, // Light sensor
ADC0_BUTTON, // Button
ADC0_BUTTON_INV,
// ADC0_SWITCH, // Switch
// ADC0_SWITCH_INV,
ADC0_END };
// Programmer selectable ADC0 functionality
enum ProgramSelectableAdc0 {
ADC0_FIX_START = 14,
ADC0_USER, // User configurable needs to be 15
ADC0_MAX };
// Text in webpage Module Parameters and commands ADC
const char kAdc0Names[] PROGMEM =
D_SENSOR_NONE "|" D_ANALOG_INPUT "|"
D_TEMPERATURE "|" D_LIGHT "|"
D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "i|"
// D_SENSOR_SWITCH "|" D_SENSOR_SWITCH "i|"
;
/********************************************************************************************/
// Supported hardware modules
@ -340,24 +366,17 @@ typedef struct MYCFGIO {
uint8_t io[MAX_GPIO_PIN - MIN_FLASH_PINS];
} mycfgio;
#define GPIO_FLAG_USED 2 // Currently two flags used
#define GPIO_FLAG_USED 0 // Currently two flags used
#define GPIO_FLAG_ADC0 1 // Allow ADC0 when define USE_ADC_VCC is disabled
#define GPIO_FLAG_ADC0_TEMP 2 // Allow ADC0 as Temperature sensor when define USE_ADC_VCC is disabled
#define GPIO_FLAG_SPARE02 4
#define GPIO_FLAG_SPARE03 8
#define GPIO_FLAG_SPARE04 16
#define GPIO_FLAG_SPARE05 32
#define GPIO_FLAG_SPARE06 64
#define GPIO_FLAG_SPARE07 128
#define GPIO_FLAG_SPARE04 16
#define GPIO_FLAG_SPARE05 32
#define GPIO_FLAG_SPARE06 64
#define GPIO_FLAG_SPARE07 128
typedef union {
uint8_t data;
struct {
uint8_t adc0 : 1; // Allow ADC0 when define USE_ADC_VCC is disabled
uint8_t adc0_temp : 1; // Allow ADC0 as Temperature sensor when define USE_ADC_VCC is disabled
uint8_t spare02 : 1;
uint8_t spare03 : 1;
uint8_t adc0 : 4; // Allow ADC0 when define USE_ADC_VCC is disabled
uint8_t spare04 : 1;
uint8_t spare05 : 1;
uint8_t spare06 : 1;
@ -742,7 +761,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
GPIO_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status
GPIO_USER, // GPIO14 Optional sensor
0, 0,
GPIO_FLAG_ADC0 // ADC0 Analog input
ADC0_USER // ADC0 Analog input
},
{ "Sonoff TH", // Sonoff TH10/16 (ESP8266)
GPIO_KEY1, // GPIO00 Button
@ -940,7 +959,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
GPIO_USER, // GPIO14 Optional sensor
GPIO_USER, // GPIO15 Optional sensor
GPIO_LED1, // GPIO16 Green/Blue Led (1 = On, 0 = Off) - Link and Power status
GPIO_FLAG_ADC0 // ADC0 A0 Analog input
ADC0_USER // ADC0 A0 Analog input
},
{ "EXS Relay(s)", // ES-Store Latching relay(s) (ESP8266)
// https://ex-store.de/ESP8266-WiFi-Relay-V31
@ -1001,7 +1020,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
GPIO_USER, // GPIO14 D5
GPIO_USER, // GPIO15 D8
GPIO_USER, // GPIO16 D0 Wemos Wake
GPIO_FLAG_ADC0 // ADC0 A0 Analog input
ADC0_USER // ADC0 A0 Analog input
},
{ "Sonoff Dev", // Sonoff Dev (ESP8266)
GPIO_KEY1, // GPIO00 E-FW Button
@ -1021,7 +1040,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
GPIO_USER, // GPIO14 Optional sensor
0, // GPIO15
0, // GPIO16
GPIO_FLAG_ADC0 // ADC0 A0 Analog input
ADC0_USER // ADC0 A0 Analog input
},
{ "H801", // Lixada H801 Wifi (ESP8266)
GPIO_USER, // GPIO00 E-FW Button
@ -1228,7 +1247,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
GPIO_USER, // GPIO14 Optional sensor
0,
GPIO_LED1, // GPIO16 Led (1 = On, 0 = Off) - Link and Power status
GPIO_FLAG_ADC0 // ADC0 A0 Analog input
ADC0_USER // ADC0 A0 Analog input
},
{ "Witty Cloud", // Witty Cloud Dev Board (ESP8266)
// https://www.aliexpress.com/item/ESP8266-serial-WIFI-Witty-cloud-Development-Board-ESP-12F-module-MINI-nodemcu/32643464555.html
@ -1249,7 +1268,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
GPIO_USER, // GPIO14 D5 optional sensor
GPIO_PWM1, // GPIO15 D8 RGB LED Red
GPIO_USER, // GPIO16 D0 optional sensor
GPIO_FLAG_ADC0 // ADC0 A0 Light sensor / Requires USE_ADC_VCC in user_config.h to be disabled
ADC0_USER // ADC0 A0 Light sensor / Requires USE_ADC_VCC in user_config.h to be disabled
},
{ "Yunshan Relay", // Yunshan Wifi Relay (ESP8266)
// https://www.ebay.com/p/Esp8266-220v-10a-Network-Relay-WiFi-Module/1369583381
@ -1307,7 +1326,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
GPIO_USER, // GPIO14 Optional sensor / I2C SCL pad
GPIO_LED1, // GPIO15 Led (1 = On, 0 = Off) - Link and Power status
0,
GPIO_FLAG_ADC0 // ADC0 A0 Analog input
ADC0_USER // ADC0 A0 Analog input
},
{ "KMC 70011", // KMC 70011
// https://www.amazon.com/KMC-Timing-Monitoring-Network-125V-240V/dp/B06XRX2GTQ
@ -1599,7 +1618,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
GPIO_KEY1, // GPIO14 Button
0,
GPIO_USER, // GPIO16
GPIO_FLAG_ADC0 // ADC0 A0 Analog input
ADC0_USER // ADC0 A0 Analog input
},
{ "Teckin", // https://www.amazon.de/gp/product/B07D5V139R
0,
@ -1944,7 +1963,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
GPIO_SM16716_DAT, // GPIO14 SM16716 Data
0, // GPIO15 wired to GND
GPIO_USER, // GPIO16 N.C.
GPIO_FLAG_ADC0 // ADC0 A0 Analog input
ADC0_USER // ADC0 A0 Analog input
}
};

View File

@ -20,6 +20,6 @@
#ifndef _SONOFF_VERSION_H_
#define _SONOFF_VERSION_H_
const uint32_t VERSION = 0x06050009;
const uint32_t VERSION = 0x0605000A;
#endif // _SONOFF_VERSION_H_

View File

@ -1000,6 +1000,13 @@ bool ValidGPIO(uint8_t pin, uint8_t gpio)
return (GPIO_USER == ValidPin(pin, gpio)); // Only allow GPIO_USER pins
}
bool ValidAdc()
{
gpio_flag flag = ModuleFlag();
uint8_t template_adc0 = flag.data &15;
return (ADC0_USER == template_adc0);
}
bool GetUsedInModule(uint8_t val, uint8_t *arr)
{
int offset = 0;

View File

@ -35,6 +35,7 @@ uint8_t dual_hex_code = 0; // Sonoff dual input flag
uint8_t key_no_pullup = 0; // key no pullup flag (1 = no pullup)
uint8_t key_inverted = 0; // Key inverted flag (1 = inverted)
uint8_t buttons_found = 0; // Number of buttons found flag
uint8_t button_adc = 99; // ADC0 button number
/********************************************************************************************/
@ -56,6 +57,12 @@ void ButtonInit(void)
buttons_found++;
pinMode(pin[GPIO_KEY1 +i], bitRead(key_no_pullup, i) ? INPUT : ((16 == pin[GPIO_KEY1 +i]) ? INPUT_PULLDOWN_16 : INPUT_PULLUP));
}
#ifndef USE_ADC_VCC
else if ((99 == button_adc) && ((ADC0_BUTTON == my_adc0) || (ADC0_BUTTON_INV == my_adc0))) {
buttons_found++;
button_adc = i;
}
#endif // USE_ADC_VCC
}
}
@ -112,12 +119,22 @@ void ButtonHandler(void)
}
dual_button_code = 0;
}
} else {
if (pin[GPIO_KEY1 +button_index] < 99) {
button_present = 1;
button = (digitalRead(pin[GPIO_KEY1 +button_index]) != bitRead(key_inverted, button_index));
}
else if (pin[GPIO_KEY1 +button_index] < 99) {
button_present = 1;
button = (digitalRead(pin[GPIO_KEY1 +button_index]) != bitRead(key_inverted, button_index));
}
#ifndef USE_ADC_VCC
if (button_adc == button_index) {
button_present = 1;
if (ADC0_BUTTON_INV == my_adc0) {
button = (AdcRead(1) < 128);
}
else if (ADC0_BUTTON == my_adc0) {
button = (AdcRead(1) > 128);
}
}
#endif // USE_ADC_VCC
if (button_present) {
XdrvMailbox.index = button_index;

View File

@ -178,6 +178,7 @@ const char HTTP_SCRIPT_TEMPLATE[] PROGMEM =
"eb('s1').value=k;" // Set NAME if not yet set
"}"
"os=o.shift();" // Complete GPIO sensor list
"as=o.shift();" // Complete ADC0 list
"g=o.shift().split(',');" // Array separator
"j=0;"
"for(i=0;i<13;i++){" // Supports 13 GPIOs
@ -186,7 +187,10 @@ const char HTTP_SCRIPT_TEMPLATE[] PROGMEM =
"sk(g[i],j);" // Set GPIO
"j++;"
"}"
"g=o.shift();"
"g=o.shift();" // FLAG
"os=as;"
"sk(g&15,17);" // Set ADC0
"g>>=4;"
"for(i=0;i<" STR(GPIO_FLAG_USED) ";i++){"
"p=(g>>i)&1;"
"eb('c'+i).checked=p;" // Set FLAG checkboxes
@ -210,17 +214,24 @@ const char HTTP_SCRIPT_TEMPLATE[] PROGMEM =
"window.onload=ld('tp?m=1',x2);"; // ?m related to WebServer->hasArg("m")
const char HTTP_SCRIPT_MODULE1[] PROGMEM =
"function x1(a){"
"function x1(a){" // Module Type
"os=a.responseText;"
"sk(%d,99);"
"}"
"function x2(b){"
"function x2(b){" // GPIOs
"os=b.responseText;";
const char HTTP_SCRIPT_MODULE2[] PROGMEM =
"}"
"function x3(a){" // ADC0
"os=a.responseText;"
"sk(%d,17);"
"}"
"function sl(){"
"ld('md?m=1',x1);" // ?m related to WebServer->hasArg("m")
"ld('md?g=1',x2);" // ?m related to WebServer->hasArg("m")
"ld('md?m=1',x1);" // ?m related to WebServer->hasArg("m")
"ld('md?g=1',x2);" // ?g related to WebServer->hasArg("g")
"if(eb('g17')){"
"ld('md?a=1',x3);" // ?a related to WebServer->hasArg("a")
"}"
"}"
"window.onload=sl;";
@ -228,7 +239,7 @@ const char HTTP_SCRIPT_INFO_BEGIN[] PROGMEM =
"function i(){"
"var s,o=\"";
const char HTTP_SCRIPT_INFO_END[] PROGMEM =
"\";" // "}1" and "}2" means do not use "}x" in Information text
"\";" // "}1" and "}2" means do not use "}x" in Information text
"s=o.replace(/}1/g,\"</td></tr><tr><th>\").replace(/}2/g,\"</th><td>\");"
"eb('i').innerHTML=s;"
"}"
@ -298,8 +309,7 @@ const char HTTP_FORM_TEMPLATE[] PROGMEM =
const char HTTP_FORM_TEMPLATE_FLAG[] PROGMEM =
"<p></p>" // Keep close so do not use <br/>
"<fieldset><legend><b>&nbsp;" D_TEMPLATE_FLAGS "&nbsp;</b></legend><p>"
"<input id='c0' name='c0' type='checkbox'><b>" D_ALLOW_ADC0 "</b><br/>"
"<input id='c1' name='c1' type='checkbox'><b>" D_ALLOW_ADC0_TEMP "</b><br/>"
// "<input id='c0' name='c0' type='checkbox'><b>" D_OPTION_TEXT "</b><br/>"
"</p></fieldset>";
const char HTTP_FORM_MODULE[] PROGMEM =
@ -1070,16 +1080,22 @@ void HandleTemplateConfiguration(void)
WSContentBegin(200, CT_PLAIN);
WSContentSend_P(PSTR("%s}1"), AnyModuleName(module).c_str()); // NAME: Generic
for (uint8_t i = 0; i < sizeof(kGpioNiceList); i++) { // GPIO: }2'0'>None (0)}3}2'17'>Button1 (17)}3...
if (1 == i) {
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, 255, D_SENSOR_USER, 255); // }2'255'>User (255)}3
}
uint8_t midx = pgm_read_byte(kGpioNiceList + i);
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, midx, GetTextIndexed(stemp, sizeof(stemp), midx, kSensorNames), midx);
}
WSContentSend_P(PSTR("}1")); // Field separator
for (uint8_t i = 0; i < ADC0_END; i++) { // FLAG: }2'0'>None (0)}3}2'17'>Analog (17)}3...
if (1 == i) {
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, ADC0_USER, D_SENSOR_USER, ADC0_USER); // }2'15'>User (15)}3
}
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, i, GetTextIndexed(stemp, sizeof(stemp), i, kAdc0Names), i);
}
WSContentSend_P(PSTR("}1")); // Field separator
for (uint8_t i = 0; i < sizeof(cmodule); i++) { // 17,148,29,149,7,255,255,255,138,255,139,255,255
if ((i < 6) || ((i > 8) && (i != 11))) { // Ignore flash pins GPIO06, 7, 8 and 11
WSContentSend_P(PSTR("%s%d"), (i>0)?",":"", cmodule.io[i]);
@ -1109,8 +1125,12 @@ void HandleTemplateConfiguration(void)
((9==i)||(10==i)) ? WebColor(COL_TEXT_WARNING) : WebColor(COL_TEXT), i, (0==i) ? " style='width:200px'" : "", i, i);
}
}
WSContentSend_P(PSTR("<tr><td><b><font color='#%06x'>" D_ADC "0</font></b></td><td><select id='g17' name='g17'></select></td></tr>"), WebColor(COL_TEXT));
WSContentSend_P(PSTR("</table>"));
WSContentSend_P(HTTP_FORM_TEMPLATE_FLAG);
gpio_flag flag = ModuleFlag();
if (flag.data > ADC0_USER) {
WSContentSend_P(HTTP_FORM_TEMPLATE_FLAG);
}
WSContentSend_P(HTTP_FORM_END);
WSContentSpaceButton(BUTTON_CONFIGURATION);
WSContentStop();
@ -1136,10 +1156,11 @@ void TemplateSaveSettings(void)
j++;
}
uint8_t flag = 0;
WebGetArg("g17", tmp, sizeof(tmp)); // FLAG - ADC0
uint8_t flag = atoi(tmp);
for (uint8_t i = 0; i < GPIO_FLAG_USED; i++) {
snprintf_P(webindex, sizeof(webindex), PSTR("c%d"), i);
uint8_t state = WebServer->hasArg(webindex) << i; // FLAG
uint8_t state = WebServer->hasArg(webindex) << i +4; // FLAG
flag += state;
}
WebGetArg("g99", tmp, sizeof(tmp)); // BASE
@ -1195,6 +1216,17 @@ void HandleModuleConfiguration(void)
return;
}
#ifndef USE_ADC_VCC
if (WebServer->hasArg("a")) {
WSContentBegin(200, CT_PLAIN);
for (uint8_t j = 0; j < ADC0_END; j++) {
WSContentSend_P(HTTP_MODULE_TEMPLATE_REPLACE, j, GetTextIndexed(stemp, sizeof(stemp), j, kAdc0Names), j);
}
WSContentEnd();
return;
}
#endif // USE_ADC_VCC
AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_MODULE);
WSContentStart_P(S_CONFIGURE_MODULE);
@ -1205,7 +1237,7 @@ void HandleModuleConfiguration(void)
WSContentSend_P(PSTR("sk(%d,%d);"), my_module.io[i], i); // g0 - g16
}
}
WSContentSend_P(HTTP_SCRIPT_MODULE2);
WSContentSend_P(HTTP_SCRIPT_MODULE2, Settings.my_adc0);
WSContentSendStyle();
WSContentSend_P(HTTP_FORM_MODULE, AnyModuleName(MODULE).c_str());
for (uint8_t i = 0; i < sizeof(cmodule); i++) {
@ -1217,6 +1249,11 @@ void HandleModuleConfiguration(void)
(WEMOS==my_module_type)?stemp:"", i, (0==i)? D_SENSOR_BUTTON "1":(1==i)? D_SERIAL_OUT :(3==i)? D_SERIAL_IN :((9==i)||(10==i))? sesp8285 :(12==i)? D_SENSOR_RELAY "1":(13==i)? D_SENSOR_LED "1i":(14==i)? D_SENSOR :"", i, i);
}
}
#ifndef USE_ADC_VCC
if (ValidAdc()) {
WSContentSend_P(PSTR("<tr><td>%s <b>" D_ADC "0</b></td><td style='width:176px'><select id='g17' name='g17'></select></td></tr>"), (WEMOS==my_module_type)?"A0":"");
}
#endif // USE_ADC_VCC
WSContentSend_P(PSTR("</table>"));
WSContentSend_P(HTTP_FORM_END);
WSContentSpaceButton(BUTTON_CONFIGURATION);
@ -1248,6 +1285,12 @@ void ModuleSaveSettings(void)
}
}
}
#ifndef USE_ADC_VCC
WebGetArg("g17", tmp, sizeof(tmp));
Settings.my_adc0 = (!strlen(tmp)) ? 0 : atoi(tmp);
gpios += F(", " D_ADC "0 "); gpios += String(Settings.my_adc0);
#endif // USE_ADC_VCC
AddLog_P2(LOG_LEVEL_INFO, PSTR(D_LOG_MODULE "%s " D_CMND_MODULE "%s"), ModuleName().c_str(), gpios.c_str());
}

View File

@ -58,7 +58,7 @@ uint16_t AdcRead(uint8_t factor)
#ifdef USE_RULES
void AdcEvery250ms(void)
{
if (my_module_flag.adc0) {
if (ADC0_INPUT == my_adc0) {
uint16_t new_value = AdcRead(5);
if ((new_value < adc_last_value -10) || (new_value > adc_last_value +10)) {
adc_last_value = new_value;
@ -72,7 +72,7 @@ void AdcEvery250ms(void)
void AdcEverySecond(void)
{
if (my_module_flag.adc0_temp) {
if (ADC0_TEMP == my_adc0) {
int adc = AdcRead(2);
// Steinhart-Hart equation for thermistor as temperature sensor
double Rt = (adc * ANALOG_R21) / (1024.0 * ANALOG_V33 - (double)adc);
@ -88,7 +88,7 @@ float AdcTemperature(void)
void AdcShow(bool json)
{
if (my_module_flag.adc0) {
if (ADC0_INPUT == my_adc0) {
uint16_t analog = AdcRead(5);
if (json) {
@ -99,7 +99,7 @@ void AdcShow(bool json)
#endif // USE_WEBSERVER
}
}
if (my_module_flag.adc0_temp) {
if (ADC0_TEMP == my_adc0) {
char temperature[33];
dtostrfd(adc_temp, Settings.flag2.temperature_resolution, temperature);
@ -131,7 +131,7 @@ bool Xsns02(uint8_t function)
{
bool result = false;
if (my_module_flag.adc0 || my_module_flag.adc0_temp) {
if ((ADC0_INPUT == my_adc0) || (ADC0_TEMP == my_adc0)) {
switch (function) {
#ifdef USE_RULES
case FUNC_EVERY_250_MSECOND: