updating configuration

This commit is contained in:
Your Name
2026-07-14 14:12:07 +00:00
parent 456f43d435
commit 6199c62362
83 changed files with 552 additions and 364 deletions
+45 -30
View File
@@ -1,6 +1,4 @@
import appdaemon.plugins.hass.hassapi as hass
from datetime import timedelta
import datetime
#
# App to show dishwasher state
@@ -18,58 +16,75 @@ import datetime
class Dishwasher(hass.Hass):
listen_event_handle_list = []
run_state = ""
def initialize(self):
if 'run_state' not in self.args or 'door_sensor' not in self.args or 'counter' not in self.args:
if 'run_state' not in self.args or 'door_sensor' not in self.args or 'counter' not in self.args or 'state_extended' not in self.args:
self.log("Please define all args")
return
self.listen_event_handle_list.append(self.listen_state(self.door_state_change, self.args['door_sensor'])) #, attribute='action'
self.listen_event_handle_list.append(self.listen_state(self.run_state_change, self.args['run_state'])) #, attribute='action'
self.listen_event_handle_list.append(self.listen_state(self.door_state_change, self.args['door_sensor']))
self.listen_event_handle_list.append(self.listen_state(self.run_state_change, self.args['run_state']))
def get_extended_state(self):
return self.get_state(self.args['state_extended'])
def set_extended_state(self, state):
self.call_service("input_select/select_option", entity_id = self.args['state_extended'], option = state)
def door_state_change(self, entity, attribute, old, new, kwargs):
if (new == "on"):
self.call_service("counter/increment", entity_id = self.args['counter'])
if (self.run_state == "finished"):
self.run_state = "collecting"
self.set_light_state_by_counter()
if new != "on":
return
self.call_service("counter/increment", entity_id = self.args['counter'])
extended_state = self.get_extended_state()
open_count = int(self.get_state(self.args['counter']))
if extended_state == "Washed":
self.set_extended_state("Empty")
elif extended_state == "Empty":
if open_count < 10:
self.set_extended_state("Collecting Dishes")
elif open_count > 10:
self.set_extended_state("Ready to wash")
elif extended_state == "Collecting Dishes" and open_count > 10:
self.set_extended_state("Ready to wash")
self.set_light_state_by_counter()
def run_state_change(self, entity, attribute, old, new, kwargs):
self.log("event: {}: {}->{}".format(attribute,old,new))
if (new == "Run"):
self.log("event: {}: {}->{}".format(attribute, old, new))
if new == "Run":
self.log('resetting counter')
self.call_service("counter/reset", entity_id = self.args['counter'])
self.run_state = "washing"
if (new == "Finished"):
self.set_extended_state("Washing")
elif new == "Finished":
self.log('resetting counter')
self.call_service("counter/reset", entity_id = self.args['counter'])
self.run_state = "finished"
self.set_extended_state("Washed")
self.log('Current state is: {}'.format(self.run_state))
self.log('Current state is: {}'.format(self.get_extended_state()))
self.set_light_state_by_counter()
def set_light_state_by_counter(self):
state = self.get_state(self.args['counter'])
open_count = int(state)
self.log('counter state={}, machine state = {}'.format(state, self.run_state))
open_count = self.get_state(self.args['counter'])
extended_state = self.get_extended_state()
self.log('counter state={}, machine state = {}'.format(open_count, extended_state))
if (self.run_state == "finished"):
# Есть посуда, которую нужно разобрать
# red color
if extended_state == "Washed":
self.log('Time to take dishes out.')
if 'lamp' in self.args:
self.call_service("light/turn_on", entity_id = self.args['lamp'], rgb_color=[255, 0, 0]) #red
self.call_service("light/turn_on", entity_id = self.args['lamp'], rgb_color=[255, 0, 0])
elif (self.run_state == "washing"):
elif extended_state == "Washing":
self.log('washing in progress')
self.call_service("light/turn_off", entity_id = self.args['lamp'])
if 'lamp' in self.args:
self.call_service("light/turn_off", entity_id = self.args['lamp'])
elif (open_count > 10):
elif extended_state == "Ready to wash":
self.log('Time to run dishwasher.')
if 'lamp' in self.args:
self.call_service("light/turn_on", entity_id = self.args['lamp'], rgb_color=[245, 236, 0]) #yellow
self.call_service("light/turn_on", entity_id = self.args['lamp'], rgb_color=[245, 236, 0])
else:
self.call_service("light/turn_off", entity_id = self.args['lamp'])
elif 'lamp' in self.args:
self.call_service("light/turn_off", entity_id = self.args['lamp'])