Skip to content

Commit

Permalink
Complete revert of changes between v1.02 and v1.03
Browse files Browse the repository at this point in the history
  • Loading branch information
turbokongen committed Apr 6, 2020
1 parent 31f6d93 commit 5df6782
Showing 1 changed file with 45 additions and 33 deletions.
78 changes: 45 additions & 33 deletions custom_components/ams/parsers/aidon.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,32 +34,19 @@
def parse_data(stored, data):
"""Parse the incoming data to dict."""
sensor_data = {}
han_data = {}
han_data = stored
pkt = data
read_packet_size = ((data[1] & 0x0F) << 8 | data[2]) + 2
han_data["packet_size"] = read_packet_size
list_type = pkt[19]
han_data["list_type"] = list_type
if list_type == LIST_TYPE_MINI:
if "ams_active_power_import" not in stored:
# Wait for long message to get full attribute set before
# publishing mini list data
return stored
han_data["obis_a_p_p"] = field_type(".", fields=pkt[24:30])
han_data["active_power_p"] = byte_decode(fields=pkt[31:35])
sensor_data["ams_active_power_import"] = {
'state': han_data["active_power_p"],
'attributes': {
'meter_manufacturer': (stored["ams_active_power_import"]
["attributes"]
["meter_manufacturer"]),
'obis_code': han_data["obis_a_p_p"],
'meter_type': (stored["ams_active_power_import"]
["attributes"]
["meter_type"]),
'meter_serial': stored["ams_active_power_import"]
["attributes"]
["meter_serial"],
'unit_of_measurement': 'W',
'icon': 'mdi:gauge'
}
Expand Down Expand Up @@ -88,6 +75,7 @@ def parse_data(stored, data):
sensor_data["ams_active_power_export"] = {
'state': han_data["active_power_n"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
Expand All @@ -96,11 +84,12 @@ def parse_data(stored, data):
'icon': 'mdi:gauge'
}
}
han_data["obis_r_p_p"] = field_type(".", fields=pkt[133:139])
han_data["obis_r_p_n"] = field_type(".", fields=pkt[133:139])
han_data["reactive_power_p"] = byte_decode(fields=pkt[140:144])
sensor_data["ams_reactive_power_import"] = {
'state': han_data["reactive_power_p"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
Expand All @@ -114,6 +103,7 @@ def parse_data(stored, data):
sensor_data["ams_reactive_power_export"] = {
'state': han_data["reactive_power_n"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
Expand All @@ -123,10 +113,11 @@ def parse_data(stored, data):
}
}
han_data["obis_c_l1"] = field_type(".", fields=pkt[175:181])
han_data["current_l1"] = byte_decode(fields=pkt[182:184], count=2) / 10
han_data["current_l1"] = byte_decode(fields=pkt[182:184]) / 10
sensor_data["ams_current_l1"] = {
'state': han_data["current_l1"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
Expand All @@ -140,10 +131,11 @@ def parse_data(stored, data):
LIST_TYPE_LONG_3PH_3W):

han_data["obis_c_l3"] = field_type(".", fields=pkt[194:200])
han_data["current_l3"] = byte_decode(fields=pkt[201:203], count=2) / 10
han_data["current_l3"] = byte_decode(fields=pkt[201:203]) / 10
sensor_data["ams_current_l3"] = {
'state': han_data["current_l3"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
Expand All @@ -153,23 +145,25 @@ def parse_data(stored, data):
}
}
han_data["obis_v_l1"] = field_type(".", fields=pkt[213:219])
han_data["voltage_l1"] = byte_decode(fields=pkt[220:222], count=2) / 10
han_data["voltage_l1"] = byte_decode(fields=pkt[220:222]) / 10
sensor_data["ams_voltage_l1"] = {
'state': han_data["voltage_l1"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
'obis_code': han_data["obis_v_l1"],
'unit_of_measurement': 'V',
'icon': 'mdi:flash'
'unit_of_measurement': 'A',
'icon': 'mdi:current-ac'
}
}
han_data["obis_v_l2"] = field_type(".", fields=pkt[232:238])
han_data["voltage_l2"] = byte_decode(fields=pkt[239:241], count=2) / 10
han_data["voltage_l2"] = byte_decode(fields=pkt[239:241]) / 10
sensor_data["ams_voltage_l2"] = {
'state': han_data["voltage_l2"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
Expand All @@ -179,10 +173,11 @@ def parse_data(stored, data):
}
}
han_data["obis_v_l3"] = field_type(".", fields=pkt[251:257])
han_data["voltage_l3"] = byte_decode(fields=pkt[258:260], count=2) / 10
han_data["voltage_l3"] = byte_decode(fields=pkt[258:260]) / 10
sensor_data["ams_voltage_l3"] = {
'state': han_data["voltage_l3"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
Expand Down Expand Up @@ -211,6 +206,7 @@ def parse_data(stored, data):
sensor_data["ams_active_energy_import"] = {
'state': han_data["active_energy_p"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_timestamp': han_data["meter_date_time"],
'meter_manufacturer':
han_data["obis_list_version"].title(),
Expand All @@ -227,6 +223,7 @@ def parse_data(stored, data):
sensor_data["ams_active_energy_export"] = {
'state': han_data["active_energy_n"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_timestamp': han_data["meter_date_time"],
'meter_manufacturer':
han_data["obis_list_version"].title(),
Expand All @@ -243,6 +240,7 @@ def parse_data(stored, data):
sensor_data["ams_reactive_energy_import"] = {
'state': han_data["reactive_energy_p"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_timestamp': han_data["meter_date_time"],
'meter_manufacturer':
han_data["obis_list_version"].title(),
Expand All @@ -258,6 +256,7 @@ def parse_data(stored, data):
sensor_data["ams_reactive_energy_export"] = {
'state': han_data["reactive_energy_n"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_timestamp': han_data["meter_date_time"],
'meter_manufacturer':
han_data["obis_list_version"].title(),
Expand All @@ -273,10 +272,11 @@ def parse_data(stored, data):
list_type is LIST_TYPE_LONG_3PH):

han_data["obis_c_l2"] = field_type(".", fields=pkt[194:200])
han_data["current_l2"] = byte_decode(fields=pkt[202:204], count=2) / 10
han_data["current_l2"] = byte_decode(fields=pkt[202:204]) / 10
sensor_data["ams_current_l2"] = {
'state': han_data["current_l2"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
Expand All @@ -286,10 +286,11 @@ def parse_data(stored, data):
}
}
han_data["obis_c_l3"] = field_type(".", fields=pkt[213:219])
han_data["current_l3"] = byte_decode(fields=pkt[220:222], count=2) / 10
han_data["current_l3"] = byte_decode(fields=pkt[220:222]) / 10
sensor_data["ams_current_l3"] = {
'state': han_data["current_l3"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
Expand All @@ -299,23 +300,25 @@ def parse_data(stored, data):
}
}
han_data["obis_v_l1"] = field_type(".", fields=pkt[232:238])
han_data["voltage_l1"] = byte_decode(fields=pkt[239:241], count=2) / 10
han_data["voltage_l1"] = byte_decode(fields=pkt[239:241]) / 10
sensor_data["ams_voltage_l1"] = {
'state': han_data["voltage_l1"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
'obis_code': han_data["obis_v_l1"],
'unit_of_measurement': 'V',
'icon': 'mdi:flash'
'unit_of_measurement': 'A',
'icon': 'mdi:current-ac'
}
}
han_data["obis_v_l2"] = field_type(".", fields=pkt[251:257])
han_data["voltage_l2"] = byte_decode(fields=pkt[258:260], count=2) / 10
han_data["voltage_l2"] = byte_decode(fields=pkt[258:260]) / 10
sensor_data["ams_voltage_l2"] = {
'state': han_data["voltage_l2"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
Expand All @@ -325,10 +328,11 @@ def parse_data(stored, data):
}
}
han_data["obis_v_l3"] = field_type(".", fields=pkt[270:276])
han_data["voltage_l3"] = byte_decode(fields=pkt[277:279], count=2) / 10
han_data["voltage_l3"] = byte_decode(fields=pkt[277:279]) / 10
sensor_data["ams_voltage_l3"] = {
'state': han_data["voltage_l3"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
Expand Down Expand Up @@ -357,6 +361,7 @@ def parse_data(stored, data):
sensor_data["ams_active_energy_import"] = {
'state': han_data["active_energy_p"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_timestamp': han_data["meter_date_time"],
'meter_manufacturer':
han_data["obis_list_version"].title(),
Expand All @@ -373,6 +378,7 @@ def parse_data(stored, data):
sensor_data["ams_active_energy_export"] = {
'state': han_data["active_energy_n"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_timestamp': han_data["meter_date_time"],
'meter_manufacturer':
han_data["obis_list_version"].title(),
Expand All @@ -389,6 +395,7 @@ def parse_data(stored, data):
sensor_data["ams_reactive_energy_import"] = {
'state': han_data["reactive_energy_p"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_timestamp': han_data["meter_date_time"],
'meter_manufacturer':
han_data["obis_list_version"].title(),
Expand All @@ -404,6 +411,7 @@ def parse_data(stored, data):
sensor_data["ams_reactive_energy_export"] = {
'state': han_data["reactive_energy_n"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_timestamp': han_data["meter_date_time"],
'meter_manufacturer':
han_data["obis_list_version"].title(),
Expand All @@ -418,10 +426,11 @@ def parse_data(stored, data):
if (list_type is LIST_TYPE_SHORT_1PH or
list_type is LIST_TYPE_LONG_1PH):
han_data["obis_v_l1"] = field_type(".", fields=pkt[194:200])
han_data["voltage_l1"] = byte_decode(fields=pkt[201:203], count=2) / 10
han_data["voltage_l1"] = byte_decode(fields=pkt[201:203]) / 10
sensor_data["ams_voltage_l1"] = {
'state': han_data["voltage_l1"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_manufacturer': han_data["obis_list_version"].title(),
'meter_type': han_data["meter_type_str"],
'meter_serial': han_data["meter_serial"],
Expand Down Expand Up @@ -451,6 +460,7 @@ def parse_data(stored, data):
sensor_data["ams_active_energy_import"] = {
'state': han_data["active_energy_p"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_timestamp': han_data["meter_date_time"],
'meter_manufacturer':
han_data["obis_list_version"].title(),
Expand All @@ -467,6 +477,7 @@ def parse_data(stored, data):
sensor_data["ams_active_energy_export"] = {
'state': han_data["active_energy_n"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_timestamp': han_data["meter_date_time"],
'meter_manufacturer':
han_data["obis_list_version"].title(),
Expand All @@ -483,6 +494,7 @@ def parse_data(stored, data):
sensor_data["ams_reactive_energy_import"] = {
'state': han_data["reactive_energy_p"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_timestamp': han_data["meter_date_time"],
'meter_manufacturer':
han_data["obis_list_version"].title(),
Expand All @@ -499,6 +511,7 @@ def parse_data(stored, data):
sensor_data["ams_reactive_energy_export"] = {
'state': han_data["reactive_energy_n"],
'attributes': {
'timestamp': han_data["date_time"],
'meter_timestamp': han_data["meter_date_time"],
'meter_manufacturer':
han_data["obis_list_version"].title(),
Expand All @@ -509,7 +522,6 @@ def parse_data(stored, data):
'icon': 'mdi:gauge'
}
}

return sensor_data


Expand Down Expand Up @@ -566,9 +578,9 @@ def test_valid_data(data):
_LOGGER.debug('Invalid frame CRC check')
return False

if data[9:13] != DATA_FLAG:
if data[8:12] != DATA_FLAG:
_LOGGER.debug('Data does not start with %s: %s',
DATA_FLAG, data[9:13])
DATA_FLAG, data[8:12])
return False

packet_size = len(data)
Expand Down

0 comments on commit 5df6782

Please sign in to comment.