mirror of https://github.com/arendst/Tasmota.git
Adding Analog Temperature support for Shelly 2.5
Adding Analog Temperature support for Shelly 2.5
This commit is contained in:
parent
f1cccc19be
commit
2c6df2b86b
|
@ -307,6 +307,7 @@
|
|||
#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 "Запазване на конфигурацията"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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ž nastavení"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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 "Αποθήκευση ρυθμίσεων"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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 "Grabar configuración"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#define D_BASE_TYPE "Basé sur"
|
||||
#define D_TEMPLATE_FLAGS "Options"
|
||||
#define D_ALLOW_ADC0 "Entrée ADC0"
|
||||
#define D_ALLOW_ADC0_TEMP "ADC0 temperature"
|
||||
#define D_ALLOW_PULLUP "Pull-up utilisateur"
|
||||
|
||||
#define D_SAVE_CONFIGURATION "Enregistrer la configuration"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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 "שמירת הגדרות"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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 "설정 저장"
|
||||
|
|
|
@ -291,8 +291,8 @@
|
|||
#define D_TELEMETRY_PERIOD "Telemetry periode"
|
||||
|
||||
#define D_OTHER_PARAMETERS "Overige parameters"
|
||||
#define D_TEMPLATE "Template"
|
||||
#define D_ACTIVATE "Activate"
|
||||
#define D_TEMPLATE "Sjabloon"
|
||||
#define D_ACTIVATE "Activeer"
|
||||
#define D_WEB_ADMIN_PASSWORD "Web Admin Wachtwoord"
|
||||
#define D_MQTT_ENABLE "MQTT ingeschakeld"
|
||||
#define D_FRIENDLY_NAME "Beschrijvende naam"
|
||||
|
@ -301,12 +301,13 @@
|
|||
#define D_SINGLE_DEVICE "een apparaat"
|
||||
#define D_MULTI_DEVICE "meer apparaten"
|
||||
|
||||
#define D_CONFIGURE_TEMPLATE "Configure Template"
|
||||
#define D_TEMPLATE_PARAMETERS "Template parameters"
|
||||
#define D_TEMPLATE_NAME "Name"
|
||||
#define D_BASE_TYPE "Based on"
|
||||
#define D_TEMPLATE_FLAGS "Options"
|
||||
#define D_ALLOW_ADC0 "ADC0 input"
|
||||
#define D_CONFIGURE_TEMPLATE "Configureer Sjabloon"
|
||||
#define D_TEMPLATE_PARAMETERS "Sjabloon parameters"
|
||||
#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"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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 "Сохранить конфигурацию"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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 "Зберегти конфігурацію"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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 "保存设置"
|
||||
|
|
|
@ -307,6 +307,7 @@
|
|||
#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 "保存設置"
|
||||
|
|
|
@ -338,22 +338,22 @@ typedef struct MYCFGIO {
|
|||
uint8_t io[MAX_GPIO_PIN - MIN_FLASH_PINS];
|
||||
} mycfgio;
|
||||
|
||||
#define GPIO_FLAG_USED 1 // Currently only one flag used
|
||||
#define GPIO_FLAG_USED 2 // Currently two flags used
|
||||
|
||||
#define GPIO_FLAG_ADC0 1 // Allow ADC0 when define USE_ADC_VCC is disabled
|
||||
#define GPIO_FLAG_SPARE01 2 // Allow input pull-up control using SetOption62 - Superseded by user template editing
|
||||
#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_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
|
||||
|
||||
typedef union {
|
||||
uint8_t data;
|
||||
struct {
|
||||
uint8_t adc0 : 1; // Allow ADC0 when define USE_ADC_VCC is disabled
|
||||
uint8_t spare01 : 1;
|
||||
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 spare04 : 1;
|
||||
|
|
|
@ -299,6 +299,7 @@ const char HTTP_FORM_TEMPLATE_FLAG[] PROGMEM =
|
|||
"<p></p>" // Keep close so do not use <br/>
|
||||
"<fieldset><legend><b> " D_TEMPLATE_FLAGS " </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/>"
|
||||
"</p></fieldset>";
|
||||
|
||||
const char HTTP_FORM_MODULE[] PROGMEM =
|
||||
|
|
|
@ -22,7 +22,16 @@
|
|||
* ADC support
|
||||
\*********************************************************************************************/
|
||||
|
||||
#define XSNS_02 2
|
||||
#define XSNS_02 2
|
||||
|
||||
#define TO_CELSIUS(x) ((x) - 273.15)
|
||||
#define TO_KELVIN(x) ((x) + 273.15)
|
||||
|
||||
#define ANALOG_V33 3.3
|
||||
#define ANALOG_R21 32000.0
|
||||
#define ANALOG_R0 10000.0
|
||||
#define ANALOG_T0 TO_KELVIN(25.0)
|
||||
#define ANALOG_B 3350.0
|
||||
|
||||
uint16_t adc_last_value = 0;
|
||||
|
||||
|
@ -40,26 +49,58 @@ uint16_t AdcRead(void)
|
|||
#ifdef USE_RULES
|
||||
void AdcEvery250ms(void)
|
||||
{
|
||||
uint16_t new_value = AdcRead();
|
||||
if ((new_value < adc_last_value -10) || (new_value > adc_last_value +10)) {
|
||||
adc_last_value = new_value;
|
||||
uint16_t value = adc_last_value / 10;
|
||||
Response_P(PSTR("{\"ANALOG\":{\"A0div10\":%d}}"), (value > 99) ? 100 : value);
|
||||
XdrvRulesProcess();
|
||||
if (my_module_flag.adc0) {
|
||||
uint16_t new_value = AdcRead();
|
||||
if ((new_value < adc_last_value -10) || (new_value > adc_last_value +10)) {
|
||||
adc_last_value = new_value;
|
||||
uint16_t value = adc_last_value / 10;
|
||||
Response_P(PSTR("{\"ANALOG\":{\"A0div10\":%d}}"), (value > 99) ? 100 : value);
|
||||
XdrvRulesProcess();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // USE_RULES
|
||||
|
||||
void AdcShow(bool json)
|
||||
{
|
||||
uint16_t analog = AdcRead();
|
||||
if (my_module_flag.adc0) {
|
||||
uint16_t analog = AdcRead();
|
||||
|
||||
if (json) {
|
||||
ResponseAppend_P(PSTR(",\"ANALOG\":{\"A0\":%d}"), analog);
|
||||
if (json) {
|
||||
ResponseAppend_P(PSTR(",\"ANALOG\":{\"A0\":%d}"), analog);
|
||||
#ifdef USE_WEBSERVER
|
||||
} else {
|
||||
WSContentSend_PD(HTTP_SNS_ANALOG, "", 0, analog);
|
||||
} else {
|
||||
WSContentSend_PD(HTTP_SNS_ANALOG, "", 0, analog);
|
||||
#endif // USE_WEBSERVER
|
||||
}
|
||||
}
|
||||
if (my_module_flag.adc0_temp) {
|
||||
int adc = analogRead(A0);
|
||||
// Formule used by Shelly 2.5 analog temperature sensor
|
||||
double Rt = (adc * ANALOG_R21) / (1024.0 * ANALOG_V33 - (double)adc);
|
||||
double T = ANALOG_B / (ANALOG_B/ANALOG_T0 + log(Rt/ANALOG_R0));
|
||||
double temp = ConvertTemp(TO_CELSIUS(T));
|
||||
|
||||
char temperature[33];
|
||||
dtostrfd(temp, Settings.flag2.temperature_resolution, temperature);
|
||||
|
||||
if (json) {
|
||||
ResponseAppend_P(JSON_SNS_TEMP, "ANALOG", temperature);
|
||||
#ifdef USE_DOMOTICZ
|
||||
if (0 == tele_period) {
|
||||
DomoticzSensor(DZ_TEMP, temperature);
|
||||
}
|
||||
#endif // USE_DOMOTICZ
|
||||
#ifdef USE_KNX
|
||||
if (0 == tele_period) {
|
||||
KnxSensor(KNX_TEMPERATURE, temp);
|
||||
}
|
||||
#endif // USE_KNX
|
||||
#ifdef USE_WEBSERVER
|
||||
} else {
|
||||
WSContentSend_PD(HTTP_SNS_TEMP, "", temperature, TempUnit());
|
||||
#endif // USE_WEBSERVER
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,7 +112,7 @@ bool Xsns02(uint8_t function)
|
|||
{
|
||||
bool result = false;
|
||||
|
||||
if (my_module_flag.adc0) {
|
||||
if (my_module_flag.adc0 || my_module_flag.adc0_temp) {
|
||||
switch (function) {
|
||||
#ifdef USE_RULES
|
||||
case FUNC_EVERY_250_MSECOND:
|
||||
|
|
Loading…
Reference in New Issue