arendst / Tasmota

Alternative firmware for ESP8266 and ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at
https://tasmota.github.io/docs
GNU General Public License v3.0
21.96k stars 4.77k forks source link

Thermostat mode: Stops controlling if no WiFi despite local sensor #15271

Closed PjotrekSE closed 2 years ago

PjotrekSE commented 2 years ago

PROBLEM DESCRIPTION

Compiled 11.0.0 with thermostat enabled. Parametrized for freezer, works perfectly as long as connected to WIFi, stops controlling when no WiFi connection possible, even though a local sensor is used. Previously used version (6.7.1) id not have this problem.

REQUESTED INFORMATION

Make sure your have performed every step and checked the applicable boxes before submitting your issue. Thank you!

- [ x] If using rules, provide the output of this command: `Backlog Rule1; Rule2; Rule3`:
```lua
  Rules output here:
11:50:55.741 CMD: Backlog Rule1; Rule2; Rule3
11:50:55.811 MQT: stat/freezer1/RESULT = {"Rule1":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":440,"Free":71,"Rules":"ON System#Boot DO backlog sensorinputset1 1; climatemodeset1 1; tempformatset1 0; controllermodeset1 0; tempfrostprotectset1 -25; temptargetset1 -18; timepicycleset1 15; propbandset1 1; timeresetset1 1200; tempantiwindupresetset1 0.8; temphystset1 0.3; timemaxactionset1 10; timeminactionset1 3; temprupdeltinset1 0.4; timeallowrampupset1 300; timerampupcycleset1 30; timerampupmaxset1 960; thermostatmodeset1 1; perflevelautotune1 1; ENDON"}}
11:50:56.028 MQT: stat/freezer1/RESULT = {"Rule2":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":0,"Free":511,"Rules":""}}
11:50:56.278 MQT: stat/freezer1/RESULT = {"Rule3":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":0,"Free":511,"Rules":""}}
11:51:07.422 MQT: tele/freezer1/STATE = {"Time":"2022-04-02T11:51:07","Epoch":1648893067,"Uptime":"3T09:51:10","UptimeSec":294670,"Heap":27,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":13,"Mode":"11n","RSSI":88,"Signal":-56,"LinkCount":1,"Downtime":"0T00:00:03"}}
11:51:07.433 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-02T11:51:07","Epoch":1648893067,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.1},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":0},"TempUnit":"C"}
- [ x] Set `weblog` to 4 and then, when you experience your issue, provide the output of the Console log:
```lua
  Console output here:
Cannot as when the problem occurs, there is no wifi

TO REPRODUCE

Steps to reproduce the behavior: Turn off wifi router

EXPECTED BEHAVIOUR

A clear and concise description of what you expected to happen. Thermostat stops controlling, leaves freezer off, temperature rises 1 C/hour

SCREENSHOTS

If applicable, add screenshots to help explain your problem. Not possible, se above

ADDITIONAL CONTEXT

Add any other context about the problem here.

(Please, remember to close the issue when the problem has been addressed)

barbudor commented 2 years ago

Is Tasmota rebooting in Wifimanager mode with AP ? What is you WIfiConfig mode ?

PjotrekSE commented 2 years ago

WifiConfig 4 But it should NOT stop controlling the freezer when WiFi is not available!

barbudor commented 2 years ago

I don't see anything in the Thermostat code that is relevant to Wifi loss So it might be something else, more general to Tasmota.

Some work has been done recently around the dependency regarding access to NTP server so it could be worth to upgrade to latest dev version. It could be usefull also if you could get logs from the serial console but that requires disconnecting the Basic from mains voltage.

sfromis commented 2 years ago

Your pasted status info shows an uptime of nearly 3½ days. Did the issue occur during that time?

Point being that without Wifi, it seems that Tasmota may (not sure when) decide to restart (even with WifiConfig 4), and when unable to get a real time (from NTP server) after that, Tasmota would not work well.

ascillato2 commented 2 years ago

Hi, any news on this?

PjotrekSE commented 2 years ago

Well, for a thermostat controlling a freezer it is absolutely necessary that it works in all possible situations, as temperature rises by 1°C/hour, and if above ~ -8°C food for thousands of € is wasted. Not working at loss of WiFi is NOT ,acceptable. I can imagine other situations where it is even more critical.

Den tis 5 apr. 2022 19:06Adrian Scillato @.***> skrev:

Hi, any news on this?

— Reply to this email directly, view it on GitHub https://github.com/arendst/Tasmota/issues/15271#issuecomment-1089054209, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIDYCQG7RCIMN2IIZHXPFWTVDRXIVANCNFSM5SKWRXEQ . You are receiving this because you authored the thread.Message ID: @.***>

PjotrekSE commented 2 years ago

...that it has been up for 3 1/2 days is irrelevant. If it is up 200 days and then fails when noone is about and can intervene, it is just as catastrophal

Den tis 5 apr. 2022 19:06Adrian Scillato @.***> skrev:

Hi, any news on this?

— Reply to this email directly, view it on GitHub https://github.com/arendst/Tasmota/issues/15271#issuecomment-1089054209, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIDYCQG7RCIMN2IIZHXPFWTVDRXIVANCNFSM5SKWRXEQ . You are receiving this because you authored the thread.Message ID: @.***>

ascillato commented 2 years ago

Please, can you do some tests so as to gather some logs?

Please, set WEBLOG to 4, before doing this test.

With your device working, please, turn off your Wi-Fi Router for a minute or so. Then turn your router on again and go to the Tasmota console and copy and paste the logs. The last lines of the logs are stored in Tasmota RAM, so if the device is not restarting, you should be able to check them. Please, copy everything that is logged. Thanks.

Thanks.

sfromis commented 2 years ago

For a device where a failure is critical, I'd insist on having a backend process to raise an alarm if the controller is somehow not operational. Simplest step would be to react to the device going LWT offline, or no longer publishing MQTT messages. Of course also check the reported sensor temperature readings.

PjotrekSE commented 2 years ago

Of course I have. But that does not help if noone is nearby. The device must not fail, at least not in such a silly way - just quitting for an irrelevant reason where it could just go on working, AS the older version did.

Den tis 5 apr. 2022 19:43sfromis @.***> skrev:

For a device where a failure is critical, I'd insist on having a backend process to raise an alarm if the controller is somehow not operational. Simplest step would be to react to the device going LWT offline, or no longer publishing MQTT messages. Of course also check the reported sensor temperature readings.

— Reply to this email directly, view it on GitHub https://github.com/arendst/Tasmota/issues/15271#issuecomment-1089104447, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIDYCQGCWWSGT3H7TTVLAX3VDR3T5ANCNFSM5SKWRXEQ . You are receiving this because you authored the thread.Message ID: @.***>

ascillato commented 2 years ago

Of course I have. But that does not help if noone is nearby. The device must not fail, at least not in such a silly way - just quitting for an irrelevant reason where it could just go on working, AS the older version did.

In order to have some insight of what is really happening in your device, please, can you do some tests so as to gather some logs?

Please, set WEBLOG to 4, before doing this test.

With your device working, please, turn off your Wi-Fi Router for a minute or so. Then turn your router on again and go to the Tasmota console and copy and paste the logs. The last lines of the logs are stored in Tasmota RAM, so if the device is not restarting, you should be able to check them. Please, copy everything that is logged. Thanks.

Thanks.

ascillato commented 2 years ago

Hi, any news on this?

ascillato2 commented 2 years ago

Please, when you have some time, do the quick test to gather some logs so as to have information of what may be happening in your device. Remember to set weblog to 4. Thanks.

PjotrekSE commented 2 years ago

I will, as soon as I get where it is, in the weekend

Den fre 8 apr. 2022 16:47Adrian Scillato @.***> skrev:

Please, when you have some time, do the quick test to gather some logs so as to have information of what may be happening in your device. Remember to set weblog to 4. Thanks.

— Reply to this email directly, view it on GitHub https://github.com/arendst/Tasmota/issues/15271#issuecomment-1092940181, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIDYCQHGFHZ4ULI4YATIE6DVEBBGFANCNFSM5SKWRXEQ . You are receiving this because you authored the thread.Message ID: @.***>

PjotrekSE commented 2 years ago

Test logs. Topology: MQTT broker (mb) ethernet connected to main router, freezer house connected from main router via radio link (rl), freezer connected to access point (ap) in freezer house. ap turned off while rl on and mb on133946-134022, rl turned off while ap and mb on 134653-134756, mb off while ap on and rl on 135131-135234. To be conclusive on function, the unit should be noncommunicado for two hours or so, otherwise it will be difficult to judge if there is regulation or not. But then the logs will be less useful as they would show very little relevant data remaining.

13:34:07.162 SRC: Backlog
13:34:07.164 CMD: Grp 0, Cmnd 'SENSORINPUTSET', Idx 1, Len 1, Data '1'
13:34:07.171 MQT: stat/freezer1/RESULT = {"SensorInputSet1":1}
13:34:07.411 SRC: Backlog
13:34:07.414 CMD: Grp 0, Cmnd 'CLIMATEMODESET', Idx 1, Len 1, Data '1'
13:34:07.419 MQT: stat/freezer1/RESULT = {"ClimateModeSet1":1}
13:34:07.661 SRC: Backlog
13:34:07.663 CMD: Grp 0, Cmnd 'TEMPFORMATSET', Idx 1, Len 1, Data '0'
13:34:07.669 MQT: stat/freezer1/RESULT = {"TempFormatSet1":0}
13:34:07.912 SRC: Backlog
13:34:07.914 CMD: Grp 0, Cmnd 'CONTROLLERMODESET', Idx 1, Len 1, Data '0'
13:34:07.920 MQT: stat/freezer1/RESULT = {"ControllerModeSet1":0}
13:34:08.162 SRC: Backlog
13:34:08.164 CMD: Grp 0, Cmnd 'TEMPFROSTPROTECTSET', Idx 1, Len 3, Data '-25'
13:34:08.170 MQT: stat/freezer1/RESULT = {"TempFrostProtectSet1":-25.0}
13:34:08.412 SRC: Backlog
13:34:08.415 CMD: Grp 0, Cmnd 'TEMPTARGETSET', Idx 1, Len 3, Data '-18'
13:34:08.421 MQT: stat/freezer1/RESULT = {"TempTargetSet1":-18.0}
13:34:08.618 SRC: Backlog
13:34:08.621 CMD: Grp 0, Cmnd 'TIMEPICYCLESET', Idx 1, Len 2, Data '15'
13:34:08.627 MQT: stat/freezer1/RESULT = {"TimePiCycleSet1":15}
13:34:08.868 SRC: Backlog
13:34:08.870 CMD: Grp 0, Cmnd 'PROPBANDSET', Idx 1, Len 1, Data '1'
13:34:08.877 MQT: stat/freezer1/RESULT = {"PropBandSet1":1}
13:34:09.118 SRC: Backlog
13:34:09.120 CMD: Grp 0, Cmnd 'TIMERESETSET', Idx 1, Len 4, Data '1200'
13:34:09.127 MQT: stat/freezer1/RESULT = {"TimeResetSet1":1200}
13:34:09.368 SRC: Backlog
13:34:09.371 CMD: Grp 0, Cmnd 'TEMPANTIWINDUPRESETSET', Idx 1, Len 3, Data '0.8'
13:34:09.378 MQT: stat/freezer1/RESULT = {"TempAntiWindupResetSet1":0.8}
13:34:09.619 SRC: Backlog
13:34:09.622 CMD: Grp 0, Cmnd 'TEMPHYSTSET', Idx 1, Len 3, Data '0.3'
13:34:09.629 MQT: stat/freezer1/RESULT = {"TempHystSet1":0.3}
13:34:09.869 SRC: Backlog
13:34:09.871 CMD: Grp 0, Cmnd 'TIMEMAXACTIONSET', Idx 1, Len 2, Data '10'
13:34:09.878 MQT: stat/freezer1/RESULT = {"TimeMaxActionSet1":10}
13:34:10.119 SRC: Backlog
13:34:10.121 CMD: Grp 0, Cmnd 'TIMEMINACTIONSET', Idx 1, Len 1, Data '3'
13:34:10.128 MQT: stat/freezer1/RESULT = {"TimeMinActionSet1":3}
13:34:10.369 SRC: Backlog
13:34:10.372 CMD: Grp 0, Cmnd 'TEMPRUPDELTINSET', Idx 1, Len 3, Data '0.4'
13:34:10.379 MQT: stat/freezer1/RESULT = {"TempRupDeltInSet1":0.4}
13:34:10.493 QPC: Reset
13:34:10.590 SRC: Backlog
13:34:10.592 CMD: Grp 0, Cmnd 'TIMEALLOWRAMPUPSET', Idx 1, Len 3, Data '300'
13:34:10.600 MQT: stat/freezer1/RESULT = {"TimeAllowRampupSet1":300}
13:34:10.840 SRC: Backlog
13:34:10.843 CMD: Grp 0, Cmnd 'TIMERAMPUPCYCLESET', Idx 1, Len 2, Data '30'
13:34:10.849 MQT: stat/freezer1/RESULT = {"TimeRampupCycleSet1":30}
13:34:11.090 SRC: Backlog
13:34:11.093 CMD: Grp 0, Cmnd 'TIMERAMPUPMAXSET', Idx 1, Len 3, Data '960'
13:34:11.099 MQT: stat/freezer1/RESULT = {"TimeRampupMaxSet1":960}
13:34:11.340 SRC: Backlog
13:34:11.342 CMD: Grp 0, Cmnd 'THERMOSTATMODESET', Idx 1, Len 1, Data '1'
13:34:11.349 MQT: stat/freezer1/RESULT = {"ThermostatModeSet1":1}
13:34:11.471 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:34:11","Epoch":1649590451,"Uptime":"0T00:00:09","UptimeSec":9,"Heap":30,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":20,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":100,"Signal":-47,"LinkCount":1,"Downtime":"0T00:00:03"}}
13:34:11.503 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:34:11","Epoch":1649590451,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.2},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":0},"TempUnit":"C"}
13:34:11.573 SRC: Backlog
13:34:11.576 CMD: Grp 0, Cmnd 'PERFLEVELAUTOTUNE', Idx 1, Len 1, Data '1'
13:34:11.582 MQT: stat/freezer1/RESULT = {"PerfLevelAutotune1":1}
13:34:12.425 APP: Boot Count 13
13:34:12.623 CFG: Saved to flash at F9, Count 4987, Bytes 4096
13:34:16.945 HTP: Main Menu
13:34:24.084 HTP: Console
13:34:25.799 WIF: Checking connection...
13:34:45.776 WIF: Checking connection...
13:35:04.444 WIF: Sending Gratuitous ARP
13:35:05.791 WIF: Checking connection...
13:35:11.432 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:35:11","Epoch":1649590511,"Uptime":"0T00:01:09","UptimeSec":69,"Heap":28,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":100,"Signal":-50,"LinkCount":1,"Downtime":"0T00:00:03"}}
13:35:11.467 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:35:11","Epoch":1649590511,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.1},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":0},"TempUnit":"C"}
13:35:25.778 WIF: Checking connection...
13:35:45.753 WIF: Checking connection...
13:36:04.439 WIF: Sending Gratuitous ARP
13:36:05.794 WIF: Checking connection...
13:36:11.497 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:36:11","Epoch":1649590571,"Uptime":"0T00:02:09","UptimeSec":129,"Heap":27,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":100,"Signal":-50,"LinkCount":1,"Downtime":"0T00:00:03"}}
13:36:11.529 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:36:11","Epoch":1649590571,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.1},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":0},"TempUnit":"C"}
13:36:25.793 WIF: Checking connection...
13:36:45.788 WIF: Checking connection...
13:37:04.434 WIF: Sending Gratuitous ARP
13:37:05.780 WIF: Checking connection...
13:37:11.499 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:37:11","Epoch":1649590631,"Uptime":"0T00:03:09","UptimeSec":189,"Heap":27,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":96,"Signal":-52,"LinkCount":1,"Downtime":"0T00:00:03"}}
13:37:11.534 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:37:11","Epoch":1649590631,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.1},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":0},"TempUnit":"C"}
13:37:25.756 WIF: Checking connection...
13:37:45.757 WIF: Checking connection...
13:38:04.440 WIF: Sending Gratuitous ARP
13:38:05.777 WIF: Checking connection...
13:38:11.410 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:38:11","Epoch":1649590691,"Uptime":"0T00:04:09","UptimeSec":249,"Heap":28,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":100,"Signal":-50,"LinkCount":1,"Downtime":"0T00:00:03"}}
13:38:11.442 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:38:11","Epoch":1649590691,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.0},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":0},"TempUnit":"C"}
13:38:25.762 WIF: Checking connection...
13:38:45.781 WIF: Checking connection...
13:39:46.275 WIF: Connect failed as AP cannot be reached
13:39:46.614 WIF: Connecting to AP2 solvik1 in mode 11n as freezer1-3662...
13:39:47.337 CFG: Saved to flash at F6, Count 4990, Bytes 4096
13:39:47.532 WIF: Checking connection...
13:39:47.534 WIF: Attempting connection...
13:39:48.531 WIF: Checking connection...
13:39:48.533 WIF: Attempting connection...
13:39:49.531 WIF: Checking connection...
13:39:49.533 WIF: Attempting connection...
13:39:50.532 WIF: Checking connection...
13:39:50.534 WIF: Attempting connection...
13:39:51.532 WIF: Checking connection...
13:39:51.534 WIF: Attempting connection...
13:39:52.533 WIF: Checking connection...
13:39:52.535 WIF: Attempting connection...
13:39:53.533 WIF: Checking connection...
13:39:53.535 WIF: Attempting connection...
13:39:54.537 WIF: Checking connection...
13:39:54.539 WIF: Attempting connection...
13:39:55.538 WIF: Checking connection...
13:39:55.540 WIF: Connect failed as AP cannot be reached
13:39:56.539 WIF: Checking connection...
13:39:56.541 WIF: Connect failed as AP cannot be reached
13:39:56.879 WIF: Connecting to AP1 solvik-bod in mode 11n as freezer1-3662...
13:39:57.578 CFG: Saved to flash at F5, Count 4991, Bytes 4096
13:39:57.772 WIF: Checking connection...
13:39:57.774 WIF: Attempting connection...
13:39:58.770 WIF: Checking connection...
13:39:58.772 WIF: Attempting connection...
13:39:59.773 WIF: Checking connection...
13:39:59.775 WIF: Attempting connection...
13:40:00.775 WIF: Checking connection...
13:40:00.776 WIF: Attempting connection...
13:40:01.774 WIF: Checking connection...
13:40:01.776 WIF: Attempting connection...
13:40:02.777 WIF: Checking connection...
13:40:02.779 WIF: Attempting connection...
13:40:03.779 WIF: Checking connection...
13:40:03.781 WIF: Attempting connection...
13:40:04.779 WIF: Checking connection...
13:40:04.781 WIF: Attempting connection...
13:40:05.780 WIF: Checking connection...
13:40:05.782 WIF: Connect failed as AP cannot be reached
13:40:06.783 WIF: Checking connection...
13:40:06.784 WIF: Connect failed as AP cannot be reached
13:40:07.124 WIF: Connecting to AP2 solvik1 in mode 11n as freezer1-3662...
13:40:07.830 CFG: Saved to flash at F4, Count 4992, Bytes 4096
13:40:08.029 WIF: Checking connection...
13:40:08.031 WIF: Attempting connection...
13:40:09.029 WIF: Checking connection...
13:40:09.031 WIF: Attempting connection...
13:40:10.030 WIF: Checking connection...
13:40:10.032 WIF: Attempting connection...
13:40:11.032 WIF: Checking connection...
13:40:11.034 WIF: Attempting connection...
13:40:11.436 RSL: STATE = {"Time":"2022-04-10T13:40:11","Epoch":1649590811,"Uptime":"0T00:06:09","UptimeSec":369,"Heap":29,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF"}
13:40:11.451 RSL: SENSOR = {"Time":"2022-04-10T13:40:11","Epoch":1649590811,"DS18B20":{"Id":"03165038F8FF","Temperature":-17.9},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":0},"TempUnit":"C"}
13:40:12.034 WIF: Checking connection...
13:40:12.036 WIF: Attempting connection...
13:40:13.037 WIF: Checking connection...
13:40:13.039 WIF: Attempting connection...
13:40:14.041 WIF: Checking connection...
13:40:14.043 WIF: Attempting connection...
13:40:15.045 WIF: Checking connection...
13:40:15.047 WIF: Attempting connection...
13:40:16.048 WIF: Checking connection...
13:40:16.050 WIF: Connect failed as AP cannot be reached
13:40:17.002 WIF: Checking connection...
13:40:17.004 WIF: Connect failed as AP cannot be reached
13:40:17.343 WIF: Connecting to AP1 solvik-bod in mode 11n as freezer1-3662...
13:40:18.116 CFG: Saved to flash at FB, Count 4993, Bytes 4096
13:40:18.273 WIF: Checking connection...
13:40:18.275 WIF: Attempting connection...
13:40:19.275 WIF: Checking connection...
13:40:19.277 WIF: Attempting connection...
13:40:21.006 WIF: Checking connection...
13:40:21.008 WIF: Attempting connection...
13:40:22.031 WIF: Checking connection...
13:40:22.033 WIF: Connected
13:40:22.439 MQT: Attempting connection...
13:40:22.464 MQT: Connected
13:40:22.468 MQT: tele/freezer1/LWT = Online (retained)
13:40:22.471 MQT: cmnd/freezer1/POWER = 
13:40:22.474 MQT: Subscribe to cmnd/freezer1/#
13:40:22.479 MQT: Subscribe to cmnd/tasmotas/#
13:40:22.482 MQT: Subscribe to cmnd/DVES_8A6E4E_fb/#
13:40:22.503 WIF: Sending Gratuitous ARP
13:40:22.868 CFG: Saved to flash at FA, Count 4994, Bytes 4096
13:40:42.034 WIF: Checking connection...
13:41:02.035 WIF: Checking connection...
13:41:02.288 SRC: Thermostat
13:41:02.293 MQT: stat/freezer1/RESULT = {"POWER":"ON"}
13:41:02.297 MQT: stat/freezer1/POWER = ON
13:41:02.882 CFG: Saved to flash at F9, Count 4995, Bytes 4096
13:41:04.292 WIF: Sending Gratuitous ARP
13:41:11.274 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:41:11","Epoch":1649590871,"Uptime":"0T00:07:09","UptimeSec":429,"Heap":28,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"POWER":"ON","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":100,"Signal":-49,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:41:11.311 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:41:11","Epoch":1649590871,"DS18B20":{"Id":"03165038F8FF","Temperature":-17.9},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:41:22.009 WIF: Checking connection...
13:41:42.034 WIF: Checking connection...
13:42:02.035 WIF: Checking connection...
13:42:04.298 WIF: Sending Gratuitous ARP
13:42:11.381 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:42:11","Epoch":1649590931,"Uptime":"0T00:08:09","UptimeSec":489,"Heap":28,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"POWER":"ON","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":90,"Signal":-55,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:42:11.416 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:42:11","Epoch":1649590931,"DS18B20":{"Id":"03165038F8FF","Temperature":-17.9},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:42:22.028 WIF: Checking connection...
13:42:42.039 WIF: Checking connection...
13:43:02.045 WIF: Checking connection...
13:43:04.282 WIF: Sending Gratuitous ARP
13:43:11.358 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:43:11","Epoch":1649590991,"Uptime":"0T00:09:09","UptimeSec":549,"Heap":28,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"POWER":"ON","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":98,"Signal":-51,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:43:11.390 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:43:11","Epoch":1649590991,"DS18B20":{"Id":"03165038F8FF","Temperature":-17.9},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:43:22.052 WIF: Checking connection...
13:43:42.032 WIF: Checking connection...
13:44:02.014 WIF: Checking connection...
13:44:02.331 APP: Serial logging disabled
13:44:04.264 WIF: Sending Gratuitous ARP
13:44:11.307 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:44:11","Epoch":1649591051,"Uptime":"0T00:10:09","UptimeSec":609,"Heap":28,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"POWER":"ON","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":100,"Signal":-49,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:44:11.323 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:44:11","Epoch":1649591051,"DS18B20":{"Id":"03165038F8FF","Temperature":-17.9},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:44:22.020 WIF: Checking connection...
13:44:42.016 WIF: Checking connection...
13:45:02.053 WIF: Checking connection...
13:45:04.284 WIF: Sending Gratuitous ARP
13:45:11.379 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:45:11","Epoch":1649591111,"Uptime":"0T00:11:09","UptimeSec":669,"Heap":28,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"POWER":"ON","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":100,"Signal":-50,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:45:11.391 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:45:11","Epoch":1649591111,"DS18B20":{"Id":"03165038F8FF","Temperature":-17.9},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:45:22.034 WIF: Checking connection...
13:45:42.041 WIF: Checking connection...
13:46:02.043 WIF: Checking connection...
13:46:02.301 SRC: Thermostat
13:46:02.307 MQT: stat/freezer1/RESULT = {"POWER":"OFF"}
13:46:02.311 MQT: stat/freezer1/POWER = OFF
13:46:02.890 CFG: Saved to flash at F8, Count 4996, Bytes 4096
13:46:04.299 WIF: Sending Gratuitous ARP
13:46:11.288 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:46:11","Epoch":1649591171,"Uptime":"0T00:12:09","UptimeSec":729,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":96,"Signal":-52,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:46:11.297 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:46:11","Epoch":1649591171,"DS18B20":{"Id":"03165038F8FF","Temperature":-17.9},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:46:22.259 WIF: Checking connection...
13:46:42.274 WIF: Checking connection...
13:46:53.527 MQT: Attempting connection...
13:46:53.746 MQT: Connect failed to 10.91.50.81:1883, rc -2. Retry in 10 sec
13:47:02.269 WIF: Checking connection...
13:47:04.275 WIF: Sending Gratuitous ARP
13:47:04.526 MQT: Attempting connection...
13:47:04.745 MQT: Connect failed to 10.91.50.81:1883, rc -2. Retry in 20 sec
13:47:11.284 RSL: STATE = {"Time":"2022-04-10T13:47:11","Epoch":1649591231,"Uptime":"0T00:13:09","UptimeSec":789,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":100,"Signal":-50,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:47:11.292 RSL: SENSOR = {"Time":"2022-04-10T13:47:11","Epoch":1649591231,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.1},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:47:22.271 WIF: Checking connection...
13:47:25.525 MQT: Attempting connection...
13:47:25.736 MQT: Connect failed to 10.91.50.81:1883, rc -2. Retry in 30 sec
13:47:42.285 WIF: Checking connection...
13:47:56.523 MQT: Attempting connection...
13:47:56.587 MQT: Connected
13:47:56.591 MQT: tele/freezer1/LWT = Online (retained)
13:47:56.594 MQT: cmnd/freezer1/POWER = 
13:47:56.596 MQT: Subscribe to cmnd/freezer1/#
13:47:56.599 MQT: Subscribe to cmnd/tasmotas/#
13:47:56.601 MQT: Subscribe to cmnd/DVES_8A6E4E_fb/#
13:48:02.267 WIF: Checking connection...
13:48:04.291 WIF: Sending Gratuitous ARP
13:48:11.289 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:48:11","Epoch":1649591291,"Uptime":"0T00:14:09","UptimeSec":849,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":3,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":98,"Signal":-51,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:48:11.301 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:48:11","Epoch":1649591291,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.1},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:48:22.537 WIF: Checking connection...
13:48:42.527 WIF: Checking connection...
13:49:02.780 WIF: Checking connection...
13:49:04.281 WIF: Sending Gratuitous ARP
13:49:11.343 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:49:11","Epoch":1649591351,"Uptime":"0T00:15:09","UptimeSec":909,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":3,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":94,"Signal":-53,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:49:11.352 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:49:11","Epoch":1649591351,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.2},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:49:22.778 WIF: Checking connection...
13:49:42.786 WIF: Checking connection...
13:50:03.048 WIF: Checking connection...
13:50:04.300 WIF: Sending Gratuitous ARP
13:50:11.312 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:50:11","Epoch":1649591411,"Uptime":"0T00:16:09","UptimeSec":969,"Heap":24,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":3,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":98,"Signal":-51,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:50:11.327 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:50:11","Epoch":1649591411,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.3},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:50:23.043 WIF: Checking connection...
13:50:43.012 WIF: Checking connection...
13:51:03.013 WIF: Checking connection...
13:51:04.274 WIF: Sending Gratuitous ARP
13:51:11.269 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:51:11","Epoch":1649591471,"Uptime":"0T00:17:09","UptimeSec":1029,"Heap":24,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":3,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":100,"Signal":-50,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:51:11.280 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:51:11","Epoch":1649591471,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.3},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:51:23.037 WIF: Checking connection...
13:51:31.283 MQT: Attempting connection...
13:51:31.292 MQT: Connect failed to 10.91.50.81:1883, rc -2. Retry in 10 sec
13:51:42.294 MQT: Attempting connection...
13:51:42.306 MQT: Connect failed to 10.91.50.81:1883, rc -2. Retry in 20 sec
13:51:43.046 WIF: Checking connection...
13:52:03.009 WIF: Checking connection...
13:52:03.259 MQT: Attempting connection...
13:52:03.285 MQT: Connect failed to 10.91.50.81:1883, rc -2. Retry in 30 sec
13:52:04.264 WIF: Sending Gratuitous ARP
13:52:11.310 RSL: STATE = {"Time":"2022-04-10T13:52:11","Epoch":1649591531,"Uptime":"0T00:18:09","UptimeSec":1089,"Heap":24,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":3,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":100,"Signal":-50,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:52:11.321 RSL: SENSOR = {"Time":"2022-04-10T13:52:11","Epoch":1649591531,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.3},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:52:23.011 WIF: Checking connection...
13:52:34.344 MQT: Attempting connection...
13:52:34.362 MQT: Connected
13:52:34.366 MQT: tele/freezer1/LWT = Online (retained)
13:52:34.370 MQT: cmnd/freezer1/POWER = 
13:52:34.372 MQT: Subscribe to cmnd/freezer1/#
13:52:34.375 MQT: Subscribe to cmnd/tasmotas/#
13:52:34.377 MQT: Subscribe to cmnd/DVES_8A6E4E_fb/#
13:52:43.032 WIF: Checking connection...
13:53:03.021 WIF: Checking connection...
13:53:04.294 WIF: Sending Gratuitous ARP
13:53:11.299 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:53:11","Epoch":1649591591,"Uptime":"0T00:19:09","UptimeSec":1149,"Heap":24,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":4,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":98,"Signal":-51,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:53:11.313 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:53:11","Epoch":1649591591,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.3},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:53:23.018 WIF: Checking connection...
13:53:43.030 WIF: Checking connection...
13:54:03.268 WIF: Checking connection...
13:54:04.269 WIF: Sending Gratuitous ARP
13:54:11.314 MQT: tele/freezer1/STATE = {"Time":"2022-04-10T13:54:11","Epoch":1649591651,"Uptime":"0T00:20:09","UptimeSec":1209,"Heap":23,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":4,"POWER":"OFF","Wifi":{"AP":1,"SSId":"solvik-bod","BSSId":"14:D6:4D:29:25:54","Channel":11,"Mode":"11n","RSSI":100,"Signal":-50,"LinkCount":2,"Downtime":"0T00:01:16"}}
13:54:11.325 MQT: tele/freezer1/SENSOR = {"Time":"2022-04-10T13:54:11","Epoch":1649591651,"DS18B20":{"Id":"03165038F8FF","Temperature":-18.3},"Thermostat0":{"ThermostatModeSet":1,"TempTargetSet":-18.00,"CtrDutyCycleRead":27},"TempUnit":"C"}
13:54:23.283 WIF: Checking connection...
13:54:43.303 WIF: Checking connection...
github-actions[bot] commented 2 years ago

This issue has been automatically marked as stale because it hasn't any activity in last few weeks. It will be closed if no further activity occurs. Thank you for your contributions.

serifis84 commented 2 years ago

Hello there, same issue with my setup, didn't realize it was not working whithout been connected to WiFi. Fresh compiled and install firmware, let it without WiFi connection but serially connected to view the console logging, Thermostatmodeset 1 but no action. After connected to WiFi everything works fine as every other thermostat i have in several installations. I supose thermostat driver does not get temp value from the connected DS18B20

But..! If i compile it with #define WIFI_CONFIG_TOOL WIFI_WAIT then everything works fine

Edited: Also do a ON Power1#Boot do Teleperiod 10 or whatever teleperiod you want. Seems like it does not "Tele" sensor payload until WiFi is connected but when you send the Teleperiod command it starts

arendst commented 2 years ago

14394 might solve your issue too

Jason2866 commented 2 years ago

Please try latest release v12.0.2

Jason2866 commented 2 years ago

@PjotrekSE Is it solved with lafest release?

PjotrekSE commented 2 years ago

Sorry, wilco as soon as all guests left. In Scandinavia, midsummer is just as big a celebration as Xmas.

mattgit commented 2 years ago

Please try latest release v12.0.2

still not working for me

github-actions[bot] commented 2 years ago

This issue has been automatically marked as stale because it hasn't any activity in last few weeks. It will be closed if no further activity occurs. Thank you for your contributions.

github-actions[bot] commented 2 years ago

This issue was automatically closed because of being stale. Feel free to open a new one if you still experience this problem.

circuitmike commented 2 years ago

I'm also experiencing this problem, and I discovered some new, interesting behavior that might help point to a solution.

For context, I have a device with an SCD41 CO2 sensor and an SSD1306 display. I have teleperiod set to 10 seconds and rules that respond to the sensor outputs that display CO2 level, temperature, and humidity on the OLED display.

If wifi fails to connect, the telemetry messages (is that what they're called? The things that happen periodically due to teleperiod being set) never happen, the rules never fire, and my display remains blank. Issuing POWER commands does nothing (normally they'll toggle the screen on and off). The serial console looks like this:

00:00:00.001 HDW: ESP8266EX
00:00:00.050 CFG: Loaded from flash at F6, Count 680
00:00:00.055 QPC: Count 1
00:00:00.064 I2C: SSD1306 found at 0x3c
00:00:00.080 DSP: SSD1306
00:00:00.088 Project tasmota - co2 Version 12.1.0.1(tasmota)-2_7_4_9(2022-08-18T10:12:03)
00:00:00.674 SCD40 serial nr 0xCF8F 0x5F07 0x3B2B
00:00:00.675 I2C: SCD40 found at 0x62
00:00:06.944 QPC: Reset
00:00:17.918 WIF: Connect failed with AP timeout
00:00:33.909 WIF: Connect failed with AP timeout
00:00:51.902 WIF: Connect failed with AP timeout
00:01:07.905 WIF: Connect failed with AP timeout
00:01:25.885 WIF: Connect failed with AP timeout
00:01:41.885 WIF: Connect failed with AP timeout
00:01:46.354 RSL: RESULT = {"POWER":"OFF"}
00:01:46.355 RSL: POWER = OFF
00:01:53.120 RSL: RESULT = {"POWER":"ON"}
00:01:53.122 RSL: POWER = ON
00:01:59.898 WIF: Connect failed with AP timeout

Here's where it gets interesting: if I issue the teleperiod command, even with no value (so I'm just querying the current teleperiod value), everything starts to work!

00:02:21.034 CMD: teleperiod
00:02:21.037 RSL: RESULT = {"TelePeriod":10}
00:02:21.947 RSL: STATE = {"Time":"1970-01-01T00:02:21","Uptime":"0T00:02:23","UptimeSec":143,"Heap":29,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":32,"MqttCount":0,"POWER":"ON"}
00:02:21.999 RSL: SENSOR = {"Time":"1970-01-01T00:02:21","ANALOG":{"A0":411},"SCD40":{"CarbonDioxide":878,"eCO2":862,"Temperature":71.5,"Humidity":47.6,"DewPoint":50.5},"TempUnit":"F"}
00:02:22.010 RUL: TELE-SCD40 performs "displaytext [i]"
00:02:22.041 RSL: RESULT = {"DisplayText":"[i]"}
00:02:22.052 RUL: TELE-SCD40#CARBONDIOXIDE performs "displaytext [x0y0p19]CO2: 878 ppm"
00:02:22.074 RSL: RESULT = {"DisplayText":"[x0y0p19]CO2: 878 ppm"}
00:02:22.086 RUL: TELE-SCD40#TEMPERATURE performs "displaytext [x0y11p19]Temp: 71.5 F"
00:02:22.108 RSL: RESULT = {"DisplayText":"[x0y11p19]Temp: 71.5 F"}
00:02:22.120 RUL: TELE-SCD40#HUMIDITY performs "displaytext [x0y22p19]RH: 47.6 pct"
00:02:22.141 RSL: RESULT = {"DisplayText":"[x0y22p19]RH: 47.6 pct"}

Even though wifi never connects, everything is fine from this point forward.

I've tried this with WifiConfig set to a variety of values and it behaves the same in all cases.

circuitmike commented 2 years ago

Another update: I was able to work around the problem by creating rules that invoke the teleperiod command on boot and on wifi disconnection ("power1 on" is just to turn on my display and is not necessary for the workaround):

on power1#boot do backlog power1 on; teleperiod 10 endon on wifi#disconnected do teleperiod 10 endon

This is an ugly hack, though, and I think this issue should be reopened.