mirror of https://github.com/arendst/Tasmota.git
Merge pull request #13111 from s-hadinger/denky_idf44
Fix Teleinfo for Denky D4
This commit is contained in:
commit
b382431cbc
|
@ -562,21 +562,9 @@ void TInfoDrvInit(void) {
|
||||||
// If one TInfo RX pin declared use it
|
// If one TInfo RX pin declared use it
|
||||||
if (PinUsed(GPIO_TELEINFO_RX)) {
|
if (PinUsed(GPIO_TELEINFO_RX)) {
|
||||||
tic_rx_pin = Pin(GPIO_TELEINFO_RX);
|
tic_rx_pin = Pin(GPIO_TELEINFO_RX);
|
||||||
} else {
|
|
||||||
// Case we are on denky V4 board without any TInfo RX pin selected
|
|
||||||
#ifdef ARDUINO_DENKY_PICOV3
|
|
||||||
tic_rx_pin = 8;
|
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR("TIC: Denky D4 board, RX on GPIO%d"), tic_rx_pin);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// Enable teleinfo
|
|
||||||
if (tic_rx_pin != NOT_A_PIN) {
|
|
||||||
TasmotaGlobal.energy_driver = XNRG_15;
|
TasmotaGlobal.energy_driver = XNRG_15;
|
||||||
Energy.voltage_available = false;
|
Energy.voltage_available = false;
|
||||||
Energy.phase_count = 1;
|
Energy.phase_count = 1;
|
||||||
} else {
|
|
||||||
AddLog(LOG_LEVEL_ERROR, PSTR("TIC: Device has no RX pin"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -589,6 +577,7 @@ Comments: -
|
||||||
====================================================================== */
|
====================================================================== */
|
||||||
void TInfoInit(void)
|
void TInfoInit(void)
|
||||||
{
|
{
|
||||||
|
if (!PinUsed(GPIO_TELEINFO_RX)) { return; } // ignore if pin not set
|
||||||
int baudrate;
|
int baudrate;
|
||||||
|
|
||||||
// Deprecated SetOption102 - Set Baud rate for Teleinfo serial communication (0 = 1200 or 1 = 9600)
|
// Deprecated SetOption102 - Set Baud rate for Teleinfo serial communication (0 = 1200 or 1 = 9600)
|
||||||
|
@ -611,8 +600,6 @@ void TInfoInit(void)
|
||||||
pinMode(en_pin, OUTPUT);
|
pinMode(en_pin, OUTPUT);
|
||||||
digitalWrite(en_pin, HIGH);
|
digitalWrite(en_pin, HIGH);
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR("TIC: Enable with GPIO%d"), en_pin);
|
AddLog(LOG_LEVEL_INFO, PSTR("TIC: Enable with GPIO%d"), en_pin);
|
||||||
} else {
|
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR("TIC: always enabled"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
|
@ -626,11 +613,7 @@ void TInfoInit(void)
|
||||||
TInfoSerial = new TasmotaSerial(tic_rx_pin, -1, 1, 0, serial_buffer_size);
|
TInfoSerial = new TasmotaSerial(tic_rx_pin, -1, 1, 0, serial_buffer_size);
|
||||||
#endif // ESP32
|
#endif // ESP32
|
||||||
|
|
||||||
// Trick here even using SERIAL_7E1 or TS_SERIAL_7E1
|
if (TInfoSerial->begin(baudrate, SERIAL_7E1)) {
|
||||||
// this is not working, need to call SetSerialConfig after
|
|
||||||
if (TInfoSerial->begin(baudrate)) {
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
if (TInfoSerial->hardwareSerial() ) {
|
if (TInfoSerial->hardwareSerial() ) {
|
||||||
ClaimSerial();
|
ClaimSerial();
|
||||||
|
@ -647,10 +630,6 @@ void TInfoInit(void)
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR("TIC: using software serial"));
|
AddLog(LOG_LEVEL_INFO, PSTR("TIC: using software serial"));
|
||||||
}
|
}
|
||||||
#endif // ESP8266
|
#endif // ESP8266
|
||||||
#ifdef ESP32
|
|
||||||
SetSerialConfig(TS_SERIAL_7E1);
|
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR("TIC: using ESP32 hardware serial"));
|
|
||||||
#endif // ESP32
|
|
||||||
// Init teleinfo
|
// Init teleinfo
|
||||||
tinfo.init(tinfo_mode);
|
tinfo.init(tinfo_mode);
|
||||||
// Attach needed callbacks
|
// Attach needed callbacks
|
||||||
|
@ -666,7 +645,6 @@ void TInfoInit(void)
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR("TIC: Sending only one frame over %d "), raw_skip+1);
|
AddLog(LOG_LEVEL_INFO, PSTR("TIC: Sending only one frame over %d "), raw_skip+1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AddLog(LOG_LEVEL_INFO, PSTR("TIC: Ready"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1029,27 +1007,27 @@ bool Xnrg15(uint8_t function)
|
||||||
bool result = false;
|
bool result = false;
|
||||||
switch (function)
|
switch (function)
|
||||||
{
|
{
|
||||||
case FUNC_EVERY_250_MSECOND:
|
|
||||||
TInfoProcess();
|
|
||||||
break;
|
|
||||||
case FUNC_COMMAND:
|
|
||||||
result = TInfoCmd();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FUNC_JSON_APPEND:
|
|
||||||
TInfoShow(1);
|
|
||||||
break;
|
|
||||||
#ifdef USE_WEBSERVER
|
|
||||||
case FUNC_WEB_SENSOR:
|
|
||||||
TInfoShow(0);
|
|
||||||
break;
|
|
||||||
#endif // USE_WEBSERVER
|
|
||||||
case FUNC_INIT:
|
case FUNC_INIT:
|
||||||
TInfoInit();
|
TInfoInit();
|
||||||
break;
|
break;
|
||||||
case FUNC_PRE_INIT:
|
case FUNC_PRE_INIT:
|
||||||
TInfoDrvInit();
|
TInfoDrvInit();
|
||||||
break;
|
break;
|
||||||
|
case FUNC_EVERY_250_MSECOND:
|
||||||
|
if (tinfo_found) { TInfoProcess(); }
|
||||||
|
break;
|
||||||
|
case FUNC_COMMAND:
|
||||||
|
if (tinfo_found) { result = TInfoCmd(); }
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FUNC_JSON_APPEND:
|
||||||
|
if (tinfo_found) { TInfoShow(1); }
|
||||||
|
break;
|
||||||
|
#ifdef USE_WEBSERVER
|
||||||
|
case FUNC_WEB_SENSOR:
|
||||||
|
if (tinfo_found) { TInfoShow(0); }
|
||||||
|
break;
|
||||||
|
#endif // USE_WEBSERVER
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue