Skip to content

Commit

Permalink
0.85 : Full attributes everywhere :)
Browse files Browse the repository at this point in the history
  • Loading branch information
mrwiwi authored Mar 26, 2020
1 parent e7d72d3 commit 5fda328
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 26 deletions.
11 changes: 7 additions & 4 deletions alarm_control_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,12 @@

class Alarm:

def __init__(self, id, name, current_state=None, attributes=None, mqtt=None):
self.id = id
self.name = name
def __init__(self, current_state, tydom_attributes=None, mqtt=None):
self.attributes = tydom_attributes

self.id = self.attributes['id']
self.name = self.attributes['alarm_name']
self.current_state = current_state
self.attributes = attributes
self.mqtt = mqtt

async def setup(self):
Expand All @@ -34,6 +35,7 @@ async def setup(self):
self.config['command_topic'] = alarm_command_topic.format(id=self.id)
self.config['state_topic'] = alarm_state_topic.format(id=self.id)
self.config['code_arm_required'] = 'false'
self.config['json_attributes_topic'] = alarm_attributes_topic.format(id=self.id)

if (self.mqtt != None):
self.mqtt.mqtt_client.publish(self.config_alarm_topic, json.dumps(self.config), qos=0) #Alarm Config
Expand All @@ -44,6 +46,7 @@ async def update(self):
self.state_topic = alarm_state_topic.format(id=self.id, state=self.current_state)
if (self.mqtt != None):
self.mqtt.mqtt_client.publish(self.state_topic, self.current_state, qos=0, retain=True) #Alarm State
self.mqtt.mqtt_client.publish(self.config['json_attributes_topic'], self.attributes, qos=0)

print("Alarm created / updated : ", self.name, self.id, self.current_state)

Expand Down
24 changes: 16 additions & 8 deletions cover.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@


class Cover:
def __init__(self, id, name, current_position=None, set_position=None, attributes=None, mqtt=None):
def __init__(self, tydom_attributes, set_position=None, mqtt=None):

self.id = id
self.name = name
self.current_position = current_position
self.attributes = tydom_attributes

self.id = self.attributes['id']
self.name = self.attributes['cover_name']
self.current_position = self.attributes['position']
self.set_position = set_position
self.attributes = attributes
self.mqtt = mqtt

# def id(self):
Expand Down Expand Up @@ -49,6 +50,8 @@ async def setup(self):
self.config['command_topic'] = cover_command_topic.format(id=self.id)
self.config['set_position_topic'] = cover_set_postion_topic.format(id=self.id)
self.config['position_topic'] = cover_position_topic.format(id=self.id)
self.config['json_attributes_topic'] = cover_attributes_topic.format(id=self.id)

self.config['payload_open'] = "UP"
self.config['payload_close'] = "DOWN"
self.config['payload_stop'] = "STOP"
Expand All @@ -67,15 +70,20 @@ async def update(self):

if (self.mqtt != None):
self.mqtt.mqtt_client.publish(self.position_topic, self.current_position, qos=0, retain=True)
self.mqtt.mqtt_client.publish('homeassistant/sensor/tydom/last_update', str(datetime.fromtimestamp(time.time())), qos=1, retain=True)
self.attributes_topic = cover_attributes_topic.format(id=self.id, attributes=self.attributes)
self.mqtt.mqtt_client.publish(self.attributes_topic, self.attributes, qos=0)
# self.mqtt.mqtt_client.publish('homeassistant/sensor/tydom/last_update', str(datetime.fromtimestamp(time.time())), qos=1, retain=True)
self.mqtt.mqtt_client.publish(self.config['json_attributes_topic'], self.attributes, qos=0)

print("Cover created / updated : ", self.name, self.id, self.current_position)

# update_pub = '(self.position_topic, self.current_position, qos=0, retain=True)'
# return(update_pub)







async def put_position(tydom_client, cover_id, position):
print(cover_id, 'position', position)
if not tydom_client.connection.open:
Expand Down
32 changes: 18 additions & 14 deletions tydomMessagehandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ async def parse_response(self, incoming):
if (e != 'Expecting value: line 1 column 1 (char 0)'):
print("Error : ", e)
print(parsed)
print('Incoming data parsed')
print('Incoming data parsed successfully !')
return(0)
async def parse_config_data(self, parsed):
for i in parsed["endpoints"]:
Expand Down Expand Up @@ -252,23 +252,27 @@ async def parse_devices_data(self, parsed):
attr_cover['id'] = i["id"]
attr_cover['cover_name'] = print_id
attr_cover['device_type'] = 'cover'
if elementName in deviceCoverDetailsKeywords:
attr_cover_details[elementName] = elementValue
else:
attr_cover[elementName] = elementValue
attr_cover['attributes'] = attr_cover_details
attr_cover[elementName] = elementValue

# if elementName in deviceCoverDetailsKeywords:
# attr_cover_details[elementName] = elementValue
# else:
# attr_cover[elementName] = elementValue
# attr_cover['attributes'] = attr_cover_details
##### ALARM

# Get last known state (for alarm) # NEW METHOD
elif elementName in deviceAlarmKeywords and elementValidity == 'upToDate':
# print(elementName,elementValue)
attr_alarm['id'] = i["id"]
attr_alarm['alarm_name']="Tyxal Alarm"
attr_alarm['device_type'] = 'alarm_control_panel'
if elementName in deviceAlarmDetailsKeywords:
attr_alarm_details[elementName] = elementValue
else:
attr_alarm[elementName] = elementValue
attr_alarm['attributes'] = attr_alarm_details #KEEPING original details for attributes
attr_alarm[elementName] = elementValue
# if elementName in deviceAlarmDetailsKeywords:
# attr_alarm_details[elementName] = elementValue
# else:
# attr_alarm[elementName] = elementValue
# attr_alarm['attributes'] = attr_alarm_details #KEEPING original details for attributes
# print(attr_alarm['attributes'])
except Exception as e:
print('msg_data error in parsing !')
Expand All @@ -277,7 +281,7 @@ async def parse_devices_data(self, parsed):
if 'device_type' in attr_cover and attr_cover['device_type'] == 'cover':
# print(attr_cover)
new_cover = "cover_tydom_"+str(endpoint_id)
new_cover = Cover(id=attr_cover['id'],name=attr_cover['cover_name'], current_position=attr_cover['position'], attributes=attr_cover['attributes'], mqtt=self.mqtt_client) #NEW METHOD
new_cover = Cover(tydom_attributes=attr_cover, mqtt=self.mqtt_client) #NEW METHOD
# new_cover = Cover(id=endpoint_id,name=print_id, current_position=elementValue, attributes=i, mqtt=self.mqtt_client)
await new_cover.update()

Expand Down Expand Up @@ -308,7 +312,7 @@ async def parse_devices_data(self, parsed):
elif 'alarmState' in attr_alarm and attr_alarm['alarmState'] == "DELAYED":
state = "pending"

if 'alarmSOS' in attr_alarm['attributes'] and attr_alarm['attributes']['alarmSOS'] == "true":
if 'alarmSOS' in attr_alarm and attr_alarm['alarmSOS'] == "true":
state = "triggered"
sos_state = True

Expand All @@ -332,7 +336,7 @@ async def parse_devices_data(self, parsed):
# print(state)
alarm = "alarm_tydom_"+str(endpoint_id)
# print("Alarm created / updated : "+alarm)
alarm = Alarm(id=attr_alarm['id'],name="Tyxal Alarm", current_state=state, attributes=attr_alarm['attributes'], mqtt=self.mqtt_client)
alarm = Alarm(current_state=state, tydom_attributes=attr_alarm, mqtt=self.mqtt_client)
await alarm.update()

except Exception as e:
Expand Down

0 comments on commit 5fda328

Please sign in to comment.