i have an app that monitors my network status and sends a notification when the network was offline for a longer period. The app worked fine in v3 of appdaemon, but since upgrading to v4 I get endless messages of Thread restart message after a trigger event.
2020-08-17 08:00:41.617856 CRITICAL AppDaemon: Thread thread-7 has died 2020-08-17 08:00:41.618027 CRITICAL AppDaemon: Pinned apps were: ['network_status'] 2020-08-17 08:00:41.618125 CRITICAL AppDaemon: Thread will be restarted
Any ideas what I am doing wrong in my code ?
import appdaemon.plugins.hass.hassapi as hass import appdaemon import time import globals class NetworkStatus(hass.Hass): """Notify when WAN is out. Checks the WAN sensor to see if the network is out. Rechecking every few sec and send alert when downtime is too long. Parameters ---------- wan_sensor : str Sensor monitoring the wan status """ def initialize(self): self.handle = None self.refresh = 30 # Refresh time to check if the network is back self.threshold = 300 # Sec downtime to trigger an alert self.downtime = 0 # Downtime counter # Old light values self.old_status = "" # Subscribe to state self.listen_state(self.network_went_down, self.args["wan_sensor"], new="off") def network_went_down(self, entity, attribute, old, new, kwargs): """Network went down, start monitoring it.""" self.log("Network went down ..") # The status will be indicated with the alert light # Save the old state, turn it on and store the current colour/brighness self.old_status = self.get_state(globals.alert_light) self.turn_on(globals.alert_light) # Change the colour to blue alert self.turn_on(globals.alert_light, brightness=globals.alert_blue_brightness, rgb_color=globals.alert_blue_color) # Network is done and keep checking self.handle = self.run_in(self.monitor_network, self.refresh) def monitor_network(self, kwargs): """Monitor the network status.""" self.cancel_timer(self.handle) self.downtime += self.refresh status = self.get_state(self.args["wan_sensor"]) if(status == "on"): # The network is back, check if alert needs to be sent self.log(" network is back (" + str(self.downtime/60) + "min)") # Restore the old light settings self.turn_on( globals.alert_light, brightness=globals.default_brightness, rgb_color=globals.default_color) if(self.old_status == "off"): self.turn_off(globals.alert_light) # Check if the downtime was longer than the threshold if self.downtime >= self.threshold: # Let the network settle down and then send the alert. self.run_in(globals.log_notify( self, "Network Issue", "Network back: " + str(self.downtime/60) + "min", "WARNING"), 30) self.downtime = 0 else: # Network is still down, check again later self.log(" network still down: " + str(self.downtime/60) + "min") self.handle = self.run_in(self.monitor_network, self.refresh)