diff --git a/custom_components/processor/mqtt_code.py b/custom_components/processor/mqtt_code.py index 68afdbe..358cb10 100755 --- a/custom_components/processor/mqtt_code.py +++ b/custom_components/processor/mqtt_code.py @@ -60,7 +60,7 @@ def __init__(self, hass, args): self._attributes = {} self._available = True # Entity Fields END - self.log = logging.getLogger("{}.device.{}".format(__name__, self._unique_id)) + self.log = logging.getLogger("{}.{}".format(__name__, self._unique_id)) self.log.info(f"Setting up device {self._unique_id}") self._type = args.get('type', 'panel') @@ -225,11 +225,13 @@ def __init__(self, hass, name, config, device): super(MqttButton, self).__init__(name, config, device) # Entity Fields START self.hass = hass - self._unique_id = f"{self.device._unique_id}_{self.name.lower().replace(' ', '_').replace('-', '_')}" + self._name = name + + self._unique_id = f"{self.device._unique_id}_{self._name.lower().replace(' ', '_').replace('-', '_')}" self.entity_id = f"mqtt_code_mapping.{self._unique_id}" - self.friendly_name = self._name + self.friendly_name = f"{self.device.friendly_name} - {name}" self.may_update = True - self._state = 'setting up' + self._state = 0 self._available = True self._attributes = {} # Entity Fields END @@ -237,6 +239,7 @@ def __init__(self, hass, name, config, device): self.last_payload = None self.last_triggered = 'never' self.last_action = 'none' + self.trigger_count = 0 self.field = None self.payloads_on = [] self.payloads_off = [] @@ -255,10 +258,11 @@ def __init__(self, hass, name, config, device): # title_template, # data, # ) - self._name = name self.log = logging.getLogger(__name__ + '.' + self.name) - self.log.debug(f"Init Config for Mapping {name}: " +str(config)) - self.log.debug("Payloads: " +str(self.payloads_on)) + self.log.info(f"Setting up mapping {self._unique_id}, {self.friendly_name}, {self.name}") + + # self.log.debug(f"Init Config for Mapping {name}: " +str(config)) + # self.log.debug("Payloads: " +str(self.payloads_on)) if 'field' in config: self.field = config.get('field', None) if 'payload' in config: @@ -331,7 +335,7 @@ def process(self, payload): def message_received(self, message): """Handle new MQTT messages.""" - print("Processing message:", message.payload) + # self.log.debug("Message received: " + str(message)) self.process(message.payload) @@ -339,7 +343,7 @@ def message_received(self, message): def update_state(self, payload, action): - self.log.debug(f"name={self.name}, payload={payload},action={action} ") + # self.log.debug(f"name={self.name}, payload={payload},action={action}") self.last_action = action self.last_triggered = dt.now() @@ -378,9 +382,11 @@ def handleRFCode(self, action): # self.log.debug("globalEvent: " + str(self.globalEvent)) self.last_action = action self.last_triggered = dt.now() + self.log_execution() + schedules = self.device.get_active_schedules() self.run_actions(schedules) - + if self.event or self.globalEvent: self.log.debug("Sending event.") self.device.hass.bus.fire(self.name, { @@ -400,6 +406,18 @@ def handleRFCode(self, action): def should_poll(self): return False + @property + def device_class(self) -> str: + """Define the device class for a numeric entity.""" + return "measurement" + + @property + def unit_of_measurement(self) -> str: + """Return the unit for the counter.""" + return "count" + def log_execution(self): + self.trigger_count += 1 + def update_attributes(self): new_attr = { @@ -424,6 +442,7 @@ def update_attributes(self): new_attr['globalEvent'] = True self._attributes = new_attr + self._state = self.trigger_count @property def extra_state_attributes(self): @@ -439,8 +458,9 @@ def unique_id(self): return self._unique_id @property - def state(self): - return self._state + def state(self) -> str: + return str(self._state) + @property def available(self): @@ -451,7 +471,6 @@ def available(self): async def async_update(self): """Simulate an update.""" self.log.debug(f"Updating entity: {self._name}") - self._state = "online" self.update_attributes() self.async_write_ha_state() @@ -460,5 +479,5 @@ async def async_added_to_hass(self): self.log.debug(f"async_added_to_hass for {self._name}") self.may_update = True - self._state = "ready" + self._state = 0 self.schedule_update_ha_state() diff --git a/custom_components/processor/yaml_scheduler.py b/custom_components/processor/yaml_scheduler.py index 02d29d6..e8d1033 100755 --- a/custom_components/processor/yaml_scheduler.py +++ b/custom_components/processor/yaml_scheduler.py @@ -80,7 +80,7 @@ def __init__(self, mapping, name: str, args): # self.script = Script(hass, args, name, self.async_update_ha_state) def execute(self, schedule): ## passed in call-back function - self.log.debug(f"execute self,eschle {self.schedule_name} input scheudule={schedule}") + # self.log.debug(f"Execute schedule {self.schedule_name} input scheudule={schedule}") if self.schedule_name == schedule: self.log.debug("Executing actions in Action {}".format(self.schedule_name)) @@ -88,12 +88,12 @@ def execute(self, schedule): ## passed in call-back function # self.log.debug(str(dir(script))) # self.log.debug(str(dir(script.service))) self.log.debug(f"Script Config: {self._script_config}") - self.log.debug(f"self.mapping: {self.mapping}") - self.log.debug(f"self.mapping.device: {self.mapping.device}") - self.log.debug(f"self.mapping.device.hass: {self.mapping.device.hass}") + # self.log.debug(f"self.mapping: {self.mapping}") + # self.log.debug(f"self.mapping.device: {self.mapping.device}") + # self.log.debug(f"self.mapping.device.hass: {self.mapping.device.hass}") s = script.Script(self.mapping.device.hass, self._script_config, self.schedule_name, DOMAIN) parent_id = "device.%s" % (self.mapping.device.name) - self.log.debug(f"Context Parent ID: {parent_id}, Context ID: actions.{self.schedule_name}") + # self.log.debug(f"Context Parent ID: {parent_id}, Context ID: actions.{self.schedule_name}") context = Context(parent_id=parent_id, id=f"actions.{self.schedule_name}") s.run(context=context) except Exception as e: @@ -178,13 +178,10 @@ def __init__(self, name, config, device): self.log = logging.getLogger("{}.mappings.{}".format(device.log.name, name)) self.log.info("Mapping init method called") self._schedule_actions = {} - self.log.debug(f"config.get('actions'): {config.get('actions')}") try: for key, item in config.get('actions').items(): - self.log.debug(f"Setting up scheulde action for {key}") action = Action(self, key, item) self._schedule_actions[key] = action - self.log.debug(f"Schedule actions on Mapping: {self._schedule_actions}") except AttributeError as a: self.log.debug(f"No schedule actions defined. {a}") @@ -192,13 +189,9 @@ def run_actions(self, schedule_names): self.log.debug(f"Executing Action: {schedule_names}") self.log.debug(self._schedule_actions) for s in schedule_names: - self.log.debug(f"Looking at scheduleName: {s}") if s in self._schedule_actions.keys(): - self.log.debug(f"if s in self._schedule_actions.keys()=True") for name, action in self._schedule_actions.items(): - self.log.debug(f"Looking at each self._schedule_actions item. This item: {action}") - self.log.debug(f"action.execute: {name} {action}") action.execute(s) # method will only run actions if schedule names match else: self.log.debug(f"if s in self._schedule_actions.keys()=False")