asantaga / wiserhomeassistantplatform Goto Github PK
View Code? Open in Web Editor NEWPlatform and related climate/sensors to support the Drayton Wiser Home Heating System
License: MIT License
Platform and related climate/sensors to support the Drayton Wiser Home Heating System
License: MIT License
reposted
testing 1.9dev
all my climate entries have gone missing after restart
error in log see below
tia
after about 30 minutes the climate entries did manage to populate
does not seam to error all the time - mostly errors are as below but sometimes other random errors
i have restarted the heat hub and hassio server a number of times
2020-02-05 17:18:54 INFO (SyncWorker_16) [wiserHeatingAPI.wiserHub] Updating Wiser Hub Data
2020-02-05 17:18:56 DEBUG (SyncWorker_16) [wiserHeatingAPI.wiserHub] Wiser Hub Data received {'System': {'PairingStatus': 'Paired', 'TimeZoneOffset': 0, 'AutomaticDaylightSaving': True, 'SystemMode': 'Heat', 'FotaEnabled': True, 'ValveProtectionEnabled': False, 'EcoModeEnabled': True, 'AwayModeAffectsHotWater': False, 'AwayModeSetPointLimit': 160, 'BoilerSettings': {'ControlType': 'HeatSourceType_RelayControlled', 'FuelType': 'Gas', 'CycleRate': 'CPH_6', 'OnOffHysteresis': 5}, 'CoolingModeDefaultSetpoint': 210, 'CoolingAwayModeSetpointLimit': 240, 'ComfortModeEnabled': True, 'PreheatTimeLimit': 10800, 'DegradedModeSetpointThreshold': 180, 'UnixTime': 1580923080, 'ActiveSystemVersion': '2.44.0-0b3fba4327', 'BrandName': 'WiserHeat', 'CloudConnectionStatus': 'Connected', 'LocalDateAndTime': {'Year': 2020, 'Month': 'February', 'Date': 5, 'Day': 'Wednesday', 'Time': 1718}, 'HeatingButtonOverrideState': 'Off', 'HotWaterButtonOverrideState': 'Off', 'OpenThermConnectionStatus': 'Disconnected'}, 'Cloud': {'Environment': 'Prod', 'DetailedPublishing': False, 'EnableDiagnosticTelemetry': False, 'WiserApiHost': 'api-nl.wiserair.com', 'BootStrapApiHost': 'bootstrap.gl.struxurewarecloud.com'}, 'HeatingChannel': [{'id': 1, 'Name': 'Channel-1', 'RoomIds': [1, 2, 4, 5, 6, 7, 8, 9, 10, 11], 'PercentageDemand': 100, 'DemandOnOffOutput': 'On', 'HeatingRelayState': 'On', 'IsSmartValvePreventingDemand': False}], 'HotWater': [{'id': 2, 'OverrideType': 'None', 'ScheduleId': 1000, 'Mode': 'Manual', 'ManualWaterHeatingState': 'Off', 'WaterHeatingState': 'Off', 'ScheduledWaterHeatingState': 'Off', 'HotWaterRelayState': 'Off', 'HotWaterDescription': 'FromManualMode'}], 'Room': [{'id': 1, 'ManualSetPoint': 190, 'ScheduleId': 1, 'ComfortModeScore': 409, 'HeatingRate': 1162, 'SmartValveIds': [2], 'Name': 'Mum bedroom', 'Mode': 'Auto', 'DemandType': 'Modulating', 'WindowDetectionActive': False, 'ControlSequenceOfOperation': 'HeatingOnly', 'HeatingType': 'HydronicRadiator', 'CalculatedTemperature': 196, 'CurrentSetPoint': 150, 'PercentageDemand': 0, 'ControlOutputState': 'Off', 'WindowState': 'Closed', 'SetpointOrigin': 'FromSchedule', 'DisplayedSetPoint': 150, 'ScheduledSetPoint': 150, 'RoundedAlexaTemperature': 195, 'ComfortTarget': 230, 'EffectiveMode': 'Auto', 'PercentageDemandForItrv': 0}, {'id': 2, 'ManualSetPoint': 150, 'ScheduleId': 2, 'ComfortModeScore': 963, 'HeatingRate': 1094, 'SmartValveIds': [8], 'Name': 'Mums bath room', 'Mode': 'Auto', 'DemandType': 'Modulating', 'WindowDetectionActive': False, 'ControlSequenceOfOperation': 'HeatingOnly', 'HeatingType': 'HydronicRadiator', 'CalculatedTemperature': 207, 'CurrentSetPoint': 150, 'PercentageDemand': 0, 'ControlOutputState': 'Off', 'WindowState': 'Closed', 'SetpointOrigin': 'FromSchedule', 'DisplayedSetPoint': 150, 'ScheduledSetPoint': 150, 'RoundedAlexaTemperature': 205, 'ComfortTarget': 220, 'EffectiveMode': 'Auto', 'PercentageDemandForItrv': 0}, {'id': 4, 'ManualSetPoint': 150, 'ScheduleId': 4, 'HeatingRate': 1200, 'SmartValveIds': [4], 'Name': 'Old kitchen', 'Mode': 'Auto', 'DemandType': 'Modulating', 'WindowDetectionActive': False, 'ControlSequenceOfOperation': 'HeatingOnly', 'HeatingType': 'HydronicRadiator', 'CalculatedTemperature': 206, 'CurrentSetPoint': 200, 'PercentageDemand': 0, 'ControlOutputState': 'Off', 'WindowState': 'Closed', 'SetpointOrigin': 'FromSchedule', 'DisplayedSetPoint': 200, 'ScheduledSetPoint': 200, 'RoundedAlexaTemperature': 205, 'EffectiveMode': 'Auto', 'PercentageDemandForItrv': 0}, {'id': 5, 'ManualSetPoint': 120, 'ScheduleId': 5, 'HeatingRate': 1200, 'SmartValveIds': [5], 'Name': 'Hall', 'Mode': 'Auto', 'DemandType': 'Modulating', 'WindowDetectionActive': False, 'ControlSequenceOfOperation': 'HeatingOnly', 'HeatingType': 'HydronicRadiator', 'CalculatedTemperature': 205, 'CurrentSetPoint': 190, 'PercentageDemand': 0, 'ControlOutputState': 'Off', 'WindowState': 'Closed', 'SetpointOrigin': 'FromSchedule', 'DisplayedSetPoint': 190, 'ScheduledSetPoint': 190, 'RoundedAlexaTemperature': 205, 'EffectiveMode': 'Auto', 'PercentageDemandForItrv': 0}, {'id': 6, 'ManualSetPoint': 150, 'ScheduleId': 6, 'ComfortModeScore': 6781, 'HeatingRate': 3731, 'RoomStatId': 3, 'SmartValveIds': [6], 'Name': 'Back room', 'Mode': 'Auto', 'DemandType': 'Modulating', 'WindowDetectionActive': False, 'ControlSequenceOfOperation': 'HeatingOnly', 'HeatingType': 'HydronicRadiator', 'CalculatedTemperature': 217, 'CurrentSetPoint': 225, 'PercentageDemand': 58, 'ControlOutputState': 'On', 'WindowState': 'Closed', 'SetpointOrigin': 'FromComfortMode', 'DisplayedSetPoint': 225, 'ScheduledSetPoint': 180, 'RoundedAlexaTemperature': 215, 'ComfortTarget': 225, 'EffectiveMode': 'Auto', 'PercentageDemandForItrv': 58}, {'id': 7, 'ManualSetPoint': 120, 'ScheduleId': 7, 'ComfortModeScore': 3231, 'HeatingRate': 2074, 'SmartValveIds': [7], 'Name': 'Front room', 'Mode': 'Auto', 'DemandType': 'Modulating', 'WindowDetectionActive': False, 'ControlSequenceOfOperation': 'HeatingOnly', 'HeatingType': 'HydronicRadiator', 'CalculatedTemperature': 236, 'CurrentSetPoint': 250, 'PercentageDemand': 100, 'ControlOutputState': 'On', 'WindowState': 'Closed', 'SetpointOrigin': 'FromSchedule', 'DisplayedSetPoint': 250, 'ScheduledSetPoint': 250, 'RoundedAlexaTemperature': 235, 'EffectiveMode': 'Auto', 'PercentageDemandForItrv': 100}, {'id': 8, 'ManualSetPoint': 100, 'ScheduleId': 8, 'ComfortModeScore': 1343, 'HeatingRate': 1080, 'SmartValveIds': [9], 'Name': 'Top floor', 'Mode': 'Manual', 'DemandType': 'Modulating', 'WindowDetectionActive': False, 'ControlSequenceOfOperation': 'HeatingOnly', 'HeatingType': 'HydronicRadiator', 'CalculatedTemperature': 129, 'CurrentSetPoint': 100, 'PercentageDemand': 0, 'ControlOutputState': 'Off', 'WindowState': 'Closed', 'SetpointOrigin': 'FromManualMode', 'DisplayedSetPoint': 100, 'ScheduledSetPoint': 180, 'RoundedAlexaTemperature': 130, 'EffectiveMode': 'Manual', 'PercentageDemandForItrv': 0}, {'id': 9, 'ManualSetPoint': 120, 'ScheduleId': 9, 'ComfortModeScore': 615, 'HeatingRate': 1564, 'SmartValveIds': [10], 'Name': 'Top bath room', 'Mode': 'Auto', 'DemandType': 'Modulating', 'WindowDetectionActive': False, 'ControlSequenceOfOperation': 'HeatingOnly', 'HeatingType': 'HydronicRadiator', 'CalculatedTemperature': 180, 'CurrentSetPoint': 170, 'PercentageDemand': 0, 'ControlOutputState': 'Off', 'WindowState': 'Closed', 'SetpointOrigin': 'FromSchedule', 'DisplayedSetPoint': 170, 'ScheduledSetPoint': 170, 'RoundedAlexaTemperature': 180, 'EffectiveMode': 'Auto', 'PercentageDemandForItrv': 0}, {'id': 10, 'ManualSetPoint': 150, 'ScheduleId': 10, 'ComfortModeScore': 2482, 'HeatingRate': 1828, 'SmartValveIds': [11], 'Name': 'Middle Toilet', 'Mode': 'Auto', 'DemandType': 'Modulating', 'WindowDetectionActive': False, 'ControlSequenceOfOperation': 'HeatingOnly', 'HeatingType': 'HydronicRadiator', 'CalculatedTemperature': 192, 'CurrentSetPoint': 170, 'PercentageDemand': 0, 'ControlOutputState': 'Off', 'WindowState': 'Closed', 'SetpointOrigin': 'FromSchedule', 'DisplayedSetPoint': 170, 'ScheduledSetPoint': 170, 'RoundedAlexaTemperature': 190, 'EffectiveMode': 'Auto', 'PercentageDemandForItrv': 0}, {'id': 11, 'ManualSetPoint': 150, 'ScheduleId': 11, 'ComfortModeScore': 310, 'HeatingRate': 1080, 'SmartValveIds': [12], 'Name': 'Back Bedroom', 'Mode': 'Auto', 'DemandType': 'Modulating', 'WindowDetectionActive': False, 'ControlSequenceOfOperation': 'HeatingOnly', 'HeatingType': 'HydronicRadiator', 'CalculatedTemperature': 186, 'CurrentSetPoint': 160, 'PercentageDemand': 0, 'ControlOutputState': 'Off', 'WindowState': 'Closed', 'SetpointOrigin': 'FromSchedule', 'DisplayedSetPoint': 160, 'ScheduledSetPoint': 160, 'RoundedAlexaTemperature': 185, 'EffectiveMode': 'Auto', 'PercentageDemandForItrv': 0}], 'Device': [{'id': 0, 'NodeId': 0, 'ProductType': 'Controller', 'ProductIdentifier': 'Controller', 'ActiveFirmwareVersion': '2.44.0', 'ModelIdentifier': 'WT724R1S0902', 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'VeryGood', 'ReceptionOfController': {'Rssi': -58}}, {'id': 3, 'NodeId': 11778, 'ProductType': 'RoomStat', 'ProductIdentifier': 'RoomStat', 'ActiveFirmwareVersion': '04E1000900042002', 'ModelIdentifier': 'Thermostat', 'HardwareVersion': '1', 'SerialNumber': '086BD7FFFEF573A9', 'ProductModel': 'Thermostat', 'OtaImageQueryCount': 0, 'LastOtaImageQueryCount': 1, 'ParentNodeId': 0, 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'Medium', 'BatteryVoltage': 30, 'BatteryLevel': 'Normal', 'ReceptionOfController': {'Rssi': -79, 'Lqi': 84}, 'ReceptionOfDevice': {'Rssi': -76, 'Lqi': 96}}, {'id': 2, 'NodeId': 38699, 'ProductType': 'iTRV', 'ProductIdentifier': 'iTRV', 'ActiveFirmwareVersion': '0201000000042002', 'ModelIdentifier': 'iTRV', 'HardwareVersion': '0', 'SerialNumber': 'CCCCCCFFFE7C8702', 'ProductModel': 'iTRV', 'OtaImageQueryCount': 0, 'LastOtaImageQueryCount': 1, 'ParentNodeId': 35505, 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'Medium', 'BatteryVoltage': 29, 'BatteryLevel': 'Normal', 'ReceptionOfController': {'Rssi': -73, 'Lqi': 108}, 'ReceptionOfDevice': {'Rssi': -81, 'Lqi': 76}}, {'id': 4, 'NodeId': 7613, 'ProductType': 'iTRV', 'ProductIdentifier': 'iTRV', 'ActiveFirmwareVersion': '0201000000042002', 'ModelIdentifier': 'iTRV', 'HardwareVersion': '0', 'SerialNumber': 'CCCCCCFFFE7FC0F5', 'ProductModel': 'iTRV', 'OtaImageQueryCount': 0, 'LastOtaImageQueryCount': 1, 'ParentNodeId': 0, 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'Medium', 'BatteryVoltage': 30, 'BatteryLevel': 'Normal', 'ReceptionOfController': {'Rssi': -71, 'Lqi': 116}, 'ReceptionOfDevice': {'Rssi': -71, 'Lqi': 116}}, {'id': 5, 'NodeId': 59042, 'ProductType': 'iTRV', 'ProductIdentifier': 'iTRV', 'ActiveFirmwareVersion': '0201000000042002', 'ModelIdentifier': 'iTRV', 'HardwareVersion': '0', 'SerialNumber': 'CCCCCCFFFE7FC0EE', 'ProductModel': 'iTRV', 'OtaImageQueryCount': 0, 'LastOtaImageQueryCount': 1, 'ParentNodeId': 0, 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'Medium', 'BatteryVoltage': 30, 'BatteryLevel': 'Normal', 'ReceptionOfController': {'Rssi': -75, 'Lqi': 100}, 'ReceptionOfDevice': {'Rssi': -75, 'Lqi': 100}}, {'id': 6, 'NodeId': 1914, 'ProductType': 'iTRV', 'ProductIdentifier': 'iTRV', 'ActiveFirmwareVersion': '0201000000042002', 'ModelIdentifier': 'iTRV', 'HardwareVersion': '0', 'SerialNumber': 'CCCCCCFFFE7C8E06', 'ProductModel': 'iTRV', 'OtaImageQueryCount': 0, 'LastOtaImageQueryCount': 1, 'ParentNodeId': 0, 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'Medium', 'BatteryVoltage': 30, 'BatteryLevel': 'Normal', 'ReceptionOfController': {'Rssi': -74, 'Lqi': 104}, 'ReceptionOfDevice': {'Rssi': -74, 'Lqi': 104}}, {'id': 7, 'NodeId': 35011, 'ProductType': 'iTRV', 'ProductIdentifier': 'iTRV', 'ActiveFirmwareVersion': '0201000000042002', 'ModelIdentifier': 'iTRV', 'HardwareVersion': '0', 'SerialNumber': '14B457FFFE769487', 'ProductModel': 'iTRV', 'OtaImageQueryCount': 0, 'LastOtaImageQueryCount': 1, 'ParentNodeId': 35505, 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'Medium', 'BatteryVoltage': 30, 'BatteryLevel': 'Normal', 'ReceptionOfController': {'Rssi': -77, 'Lqi': 92}, 'ReceptionOfDevice': {'Rssi': -81, 'Lqi': 76}}, {'id': 8, 'NodeId': 11320, 'ProductType': 'iTRV', 'ProductIdentifier': 'iTRV', 'ActiveFirmwareVersion': '0201000000042002', 'ModelIdentifier': 'iTRV', 'HardwareVersion': '0', 'SerialNumber': '086BD7FFFEF38BC3', 'ProductModel': 'iTRV', 'OtaImageQueryCount': 0, 'LastOtaImageQueryCount': 1, 'ParentNodeId': 35505, 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'Medium', 'BatteryVoltage': 30, 'BatteryLevel': 'Normal', 'ReceptionOfController': {'Rssi': -77, 'Lqi': 92}, 'ReceptionOfDevice': {'Rssi': -81, 'Lqi': 76}}, {'id': 9, 'NodeId': 5751, 'ProductType': 'iTRV', 'ProductIdentifier': 'iTRV', 'ActiveFirmwareVersion': '0201000000042002', 'ModelIdentifier': 'iTRV', 'HardwareVersion': '0', 'SerialNumber': 'CCCCCCFFFE7C7A11', 'ProductModel': 'iTRV', 'OtaImageQueryCount': 0, 'LastOtaImageQueryCount': 4, 'ParentNodeId': 0, 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'Good', 'BatteryVoltage': 30, 'BatteryLevel': 'Normal', 'ReceptionOfController': {'Rssi': -62, 'Lqi': 152}, 'ReceptionOfDevice': {'Rssi': -66, 'Lqi': 136}}, {'id': 10, 'NodeId': 39298, 'ProductType': 'iTRV', 'ProductIdentifier': 'iTRV', 'ActiveFirmwareVersion': '0201000000042002', 'ModelIdentifier': 'iTRV', 'HardwareVersion': '0', 'SerialNumber': 'CCCCCCFFFE7C767F', 'ProductModel': 'iTRV', 'OtaImageQueryCount': 0, 'LastOtaImageQueryCount': 1, 'ParentNodeId': 35505, 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'VeryGood', 'BatteryVoltage': 30, 'BatteryLevel': 'Normal', 'ReceptionOfController': {'Rssi': -59, 'Lqi': 164}, 'ReceptionOfDevice': {'Rssi': -81, 'Lqi': 76}}, {'id': 11, 'NodeId': 64125, 'ProductType': 'iTRV', 'ProductIdentifier': 'iTRV', 'ActiveFirmwareVersion': '0201000000042002', 'ModelIdentifier': 'iTRV', 'HardwareVersion': '0', 'SerialNumber': 'CCCCCCFFFE7C8E72', 'ProductModel': 'iTRV', 'OtaImageQueryCount': 0, 'LastOtaImageQueryCount': 1, 'ParentNodeId': 35505, 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'Good', 'BatteryVoltage': 31, 'BatteryLevel': 'Normal', 'ReceptionOfController': {'Rssi': -69, 'Lqi': 124}, 'ReceptionOfDevice': {'Rssi': -81, 'Lqi': 76}}, {'id': 12, 'NodeId': 17135, 'ProductType': 'iTRV', 'ProductIdentifier': 'iTRV', 'ActiveFirmwareVersion': '0201000000042002', 'ModelIdentifier': 'iTRV', 'HardwareVersion': '0', 'SerialNumber': '086BD7FFFEF56395', 'ProductModel': 'iTRV', 'OtaImageQueryCount': 0, 'LastOtaImageQueryCount': 1, 'ParentNodeId': 0, 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'Poor', 'BatteryVoltage': 30, 'BatteryLevel': 'Normal', 'ReceptionOfController': {'Rssi': -82, 'Lqi': 72}, 'ReceptionOfDevice': {'Rssi': -83, 'Lqi': 68}}, {'id': 13, 'NodeId': 35505, 'ProductType': 'SmartPlug', 'ProductIdentifier': 'HeimanSmartplug', 'ActiveFirmwareVersion': '', 'ModelIdentifier': 'SmartPlug', 'HardwareVersion': '', 'SerialNumber': '000D6F0014F70B19', 'ProductModel': '', 'OtaImageQueryCount': 0, 'LastOtaImageQueryCount': 0, 'DeviceLockEnabled': False, 'DisplayedSignalStrength': 'Good', 'ReceptionOfDevice': {'Rssi': -81, 'Lqi': 76}}], 'Zigbee': {'Error72Reset': 3, 'JPANCount': 11, 'NetworkChannel': 25, 'NoSignalReset': 3, 'SuppressApsAcks': True, 'ZigbeeModuleVersion': 'R311 B021019', 'ZigbeeEUI': '14B457FFFE767F49'}, 'UpgradeInfo': [{'id': 1, 'FirmwareFilename': '0201000000042002FOTA.BIN'}, {'id': 2, 'FirmwareFilename': '0401000000010005FOTA.BIN'}, {'id': 3, 'FirmwareFilename': '0401010100010005FOTA.BIN'}, {'id': 4, 'FirmwareFilename': '0441000000010005FOTA.BIN'}, {'id': 5, 'FirmwareFilename': '0441010100010005FOTA.BIN'}, {'id': 6, 'FirmwareFilename': '04E1000900042002FOTA.BIN'}, {'id': 7, 'FirmwareFilename': '05E1000900000023FOTA.BIN'}, {'id': 8, 'FirmwareFilename': '0A00000000032000FOTA.BIN'}], 'SmartValve': [{'id': 2, 'MountingOrientation': 'Vertical', 'SetPoint': 150, 'MeasuredTemperature': 196, 'PercentageDemand': 0, 'WindowState': 'Closed'}, {'id': 4, 'MountingOrientation': 'Vertical', 'SetPoint': 200, 'MeasuredTemperature': 206, 'PercentageDemand': 0, 'WindowState': 'Closed'}, {'id': 5, 'MountingOrientation': 'Vertical', 'SetPoint': 190, 'MeasuredTemperature': 205, 'PercentageDemand': 0, 'WindowState': 'Closed'}, {'id': 6, 'MountingOrientation': 'Vertical', 'SetPoint': 225, 'MeasuredTemperature': 233, 'PercentageDemand': 77, 'WindowState': 'Closed', 'ExternalRoomStatTemperature': 217}, {'id': 7, 'MountingOrientation': 'Vertical', 'SetPoint': 250, 'MeasuredTemperature': 236, 'PercentageDemand': 100, 'WindowState': 'Closed'}, {'id': 8, 'MountingOrientation': 'Vertical', 'SetPoint': 150, 'MeasuredTemperature': 207, 'PercentageDemand': 0, 'WindowState': 'Closed'}, {'id': 9, 'MountingOrientation': 'Vertical', 'SetPoint': 100, 'MeasuredTemperature': 129, 'PercentageDemand': 0, 'WindowState': 'Closed'}, {'id': 10, 'MountingOrientation': 'Vertical', 'SetPoint': 170, 'MeasuredTemperature': 180, 'PercentageDemand': 0, 'WindowState': 'Closed'}, {'id': 11, 'MountingOrientation': 'Vertical', 'SetPoint': 170, 'MeasuredTemperature': 192, 'PercentageDemand': 0, 'WindowState': 'Closed'}, {'id': 12, 'MountingOrientation': 'Vertical', 'SetPoint': 160, 'MeasuredTemperature': 186, 'PercentageDemand': 0, 'WindowState': 'Closed'}], 'RoomStat': [{'id': 3, 'SetPoint': 225, 'MeasuredTemperature': 217, 'MeasuredHumidity': 39}], 'SmartPlug': [{'id': 13, 'ScheduleId': 2000, 'ManualState': 'Off', 'Name': 'Cooling fan', 'Mode': 'Manual', 'AwayAction': 'Off', 'OutputState': 'Off', 'ControlSource': 'FromManualMode', 'ScheduledState': 'Off'}], 'DeviceCapabilityMatrix': {'Roomstat': True, 'ITRV': True, 'SmartPlug': True, 'UFH': False, 'UFHFloorTempSensor': False, 'UFHDewSensor': False, 'HACT': False, 'LACT': False}, 'Schedule': [{'id': 1, 'Monday': {'SetPoints': [{'Time': 810, 'DegreesC': 230}, {'Time': 900, 'DegreesC': 150}, {'Time': 2015, 'DegreesC': 230}, {'Time': 2130, 'DegreesC': 190}]}, 'Tuesday': {'SetPoints': [{'Time': 810, 'DegreesC': 230}, {'Time': 900, 'DegreesC': 150}, {'Time': 2015, 'DegreesC': 230}, {'Time': 2130, 'DegreesC': 190}]}, 'Wednesday': {'SetPoints': [{'Time': 810, 'DegreesC': 230}, {'Time': 900, 'DegreesC': 150}, {'Time': 2015, 'DegreesC': 230}, {'Time': 2130, 'DegreesC': 190}]}, 'Thursday': {'SetPoints': [{'Time': 810, 'DegreesC': 230}, {'Time': 900, 'DegreesC': 150}, {'Time': 2015, 'DegreesC': 230}, {'Time': 2130, 'DegreesC': 190}]}, 'Friday': {'SetPoints': [{'Time': 810, 'DegreesC': 230}, {'Time': 900, 'DegreesC': 150}, {'Time': 2015, 'DegreesC': 230}, {'Time': 2130, 'DegreesC': 190}]}, 'Saturday': {'SetPoints': [{'Time': 810, 'DegreesC': 230}, {'Time': 900, 'DegreesC': 150}, {'Time': 2015, 'DegreesC': 230}, {'Time': 2130, 'DegreesC': 190}]}, 'Sunday': {'SetPoints': [{'Time': 810, 'DegreesC': 230}, {'Time': 900, 'DegreesC': 150}, {'Time': 2015, 'DegreesC': 230}, {'Time': 2130, 'DegreesC': 190}]}, 'Type': 'Heating'}, {'id': 2, 'Monday': {'SetPoints': [{'Time': 735, 'DegreesC': 240}, {'Time': 830, 'DegreesC': 150}, {'Time': 1915, 'DegreesC': 220}, {'Time': 2130, 'DegreesC': 150}]}, 'Tuesday': {'SetPoints': [{'Time': 735, 'DegreesC': 240}, {'Time': 830, 'DegreesC': 150}, {'Time': 1915, 'DegreesC': 220}, {'Time': 2130, 'DegreesC': 150}]}, 'Wednesday': {'SetPoints': [{'Time': 735, 'DegreesC': 240}, {'Time': 830, 'DegreesC': 150}, {'Time': 1915, 'DegreesC': 220}, {'Time': 2130, 'DegreesC': 150}]}, 'Thursday': {'SetPoints': [{'Time': 735, 'DegreesC': 240}, {'Time': 830, 'DegreesC': 150}, {'Time': 1915, 'DegreesC': 220}, {'Time': 2130, 'DegreesC': 150}]}, 'Friday': {'SetPoints': [{'Time': 735, 'DegreesC': 240}, {'Time': 830, 'DegreesC': 150}, {'Time': 1915, 'DegreesC': 220}, {'Time': 2130, 'DegreesC': 150}]}, 'Saturday': {'SetPoints': [{'Time': 735, 'DegreesC': 240}, {'Time': 830, 'DegreesC': 150}, {'Time': 1915, 'DegreesC': 220}, {'Time': 2130, 'DegreesC': 150}]}, 'Sunday': {'SetPoints': [{'Time': 735, 'DegreesC': 240}, {'Time': 830, 'DegreesC': 150}, {'Time': 1915, 'DegreesC': 220}, {'Time': 2130, 'DegreesC': 150}]}, 'Type': 'Heating'}, {'id': 4, 'Monday': {'SetPoints': [{'Time': 630, 'DegreesC': 190}, {'Time': 830, 'DegreesC': 150}, {'Time': 1630, 'DegreesC': 200}, {'Time': 2230, 'DegreesC': 150}]}, 'Tuesday': {'SetPoints': [{'Time': 630, 'DegreesC': 190}, {'Time': 830, 'DegreesC': 150}, {'Time': 1630, 'DegreesC': 200}, {'Time': 2230, 'DegreesC': 150}]}, 'Wednesday': {'SetPoints': [{'Time': 630, 'DegreesC': 190}, {'Time': 830, 'DegreesC': 150}, {'Time': 1630, 'DegreesC': 200}, {'Time': 2230, 'DegreesC': 150}]}, 'Thursday': {'SetPoints': [{'Time': 630, 'DegreesC': 190}, {'Time': 830, 'DegreesC': 150}, {'Time': 1630, 'DegreesC': 200}, {'Time': 2230, 'DegreesC': 150}]}, 'Friday': {'SetPoints': [{'Time': 630, 'DegreesC': 190}, {'Time': 830, 'DegreesC': 150}, {'Time': 1630, 'DegreesC': 200}, {'Time': 2230, 'DegreesC': 150}]}, 'Saturday': {'SetPoints': [{'Time': 700, 'DegreesC': 190}, {'Time': 1000, 'DegreesC': 170}, {'Time': 1600, 'DegreesC': 200}, {'Time': 2300, 'DegreesC': 150}]}, 'Sunday': {'SetPoints': [{'Time': 700, 'DegreesC': 190}, {'Time': 1000, 'DegreesC': 170}, {'Time': 1600, 'DegreesC': 200}, {'Time': 2300, 'DegreesC': 150}]}, 'Type': 'Heating'}, {'id': 5, 'Monday': {'SetPoints': [{'Time': 30, 'DegreesC': 120}, {'Time': 730, 'DegreesC': 190}, {'Time': 915, 'DegreesC': 205}, {'Time': 1015, 'DegreesC': 190}]}, 'Tuesday': {'SetPoints': [{'Time': 30, 'DegreesC': 120}, {'Time': 730, 'DegreesC': 190}, {'Time': 915, 'DegreesC': 205}, {'Time': 1015, 'DegreesC': 190}]}, 'Wednesday': {'SetPoints': [{'Time': 30, 'DegreesC': 120}, {'Time': 730, 'DegreesC': 190}, {'Time': 915, 'DegreesC': 205}, {'Time': 1015, 'DegreesC': 190}]}, 'Thursday': {'SetPoints': [{'Time': 30, 'DegreesC': 120}, {'Time': 730, 'DegreesC': 190}, {'Time': 915, 'DegreesC': 205}, {'Time': 1015, 'DegreesC': 190}]}, 'Friday': {'SetPoints': [{'Time': 30, 'DegreesC': 120}, {'Time': 730, 'DegreesC': 190}, {'Time': 915, 'DegreesC': 205}, {'Time': 1015, 'DegreesC': 190}]}, 'Saturday': {'SetPoints': [{'Time': 30, 'DegreesC': 120}, {'Time': 730, 'DegreesC': 190}]}, 'Sunday': {'SetPoints': [{'Time': 30, 'DegreesC': 120}, {'Time': 730, 'DegreesC': 190}]}, 'Type': 'Heating'}, {'id': 6, 'Monday': {'SetPoints': [{'Time': 900, 'DegreesC': 200}, {'Time': 1000, 'DegreesC': 180}, {'Time': 1800, 'DegreesC': 225}, {'Time': 2359, 'DegreesC': 150}]}, 'Tuesday': {'SetPoints': [{'Time': 900, 'DegreesC': 200}, {'Time': 1000, 'DegreesC': 180}, {'Time': 1800, 'DegreesC': 225}, {'Time': 2359, 'DegreesC': 150}]}, 'Wednesday': {'SetPoints': [{'Time': 900, 'DegreesC': 200}, {'Time': 1000, 'DegreesC': 180}, {'Time': 1800, 'DegreesC': 225}, {'Time': 2359, 'DegreesC': 150}]}, 'Thursday': {'SetPoints': [{'Time': 900, 'DegreesC': 200}, {'Time': 1000, 'DegreesC': 180}, {'Time': 1800, 'DegreesC': 225}, {'Time': 2359, 'DegreesC': 150}]}, 'Friday': {'SetPoints': [{'Time': 900, 'DegreesC': 200}, {'Time': 1000, 'DegreesC': 180}, {'Time': 1800, 'DegreesC': 225}, {'Time': 2359, 'DegreesC': 150}]}, 'Saturday': {'SetPoints': [{'Time': 900, 'DegreesC': 200}, {'Time': 1000, 'DegreesC': 180}, {'Time': 1800, 'DegreesC': 225}, {'Time': 2359, 'DegreesC': 150}]}, 'Sunday': {'SetPoints': [{'Time': 900, 'DegreesC': 200}, {'Time': 1000, 'DegreesC': 180}, {'Time': 1800, 'DegreesC': 225}, {'Time': 2359, 'DegreesC': 150}]}, 'Type': 'Heating'}, {'id': 7, 'Monday': {'SetPoints': [{'Time': 800, 'DegreesC': 230}, {'Time': 945, 'DegreesC': 190}, {'Time': 1640, 'DegreesC': 250}, {'Time': 2050, 'DegreesC': 210}, {'Time': 2259, 'DegreesC': 120}]}, 'Tuesday': {'SetPoints': [{'Time': 800, 'DegreesC': 230}, {'Time': 945, 'DegreesC': 190}, {'Time': 1640, 'DegreesC': 250}, {'Time': 2050, 'DegreesC': 210}, {'Time': 2259, 'DegreesC': 120}]}, 'Wednesday': {'SetPoints': [{'Time': 800, 'DegreesC': 230}, {'Time': 945, 'DegreesC': 190}, {'Time': 1640, 'DegreesC': 250}, {'Time': 2050, 'DegreesC': 210}, {'Time': 2259, 'DegreesC': 120}]}, 'Thursday': {'SetPoints': [{'Time': 800, 'DegreesC': 230}, {'Time': 945, 'DegreesC': 190}, {'Time': 1640, 'DegreesC': 250}, {'Time': 2050, 'DegreesC': 210}, {'Time': 2259, 'DegreesC': 120}]}, 'Friday': {'SetPoints': [{'Time': 800, 'DegreesC': 230}, {'Time': 945, 'DegreesC': 190}, {'Time': 1640, 'DegreesC': 250}, {'Time': 2050, 'DegreesC': 210}, {'Time': 2259, 'DegreesC': 120}]}, 'Saturday': {'SetPoints': [{'Time': 800, 'DegreesC': 230}, {'Time': 1640, 'DegreesC': 250}, {'Time': 2050, 'DegreesC': 210}, {'Time': 2359, 'DegreesC': 120}]}, 'Sunday': {'SetPoints': [{'Time': 800, 'DegreesC': 230}, {'Time': 1640, 'DegreesC': 250}, {'Time': 2050, 'DegreesC': 210}, {'Time': 2359, 'DegreesC': 120}]}, 'Type': 'Heating'}, {'id': 8, 'Monday': {'SetPoints': [{'Time': 730, 'DegreesC': 200}, {'Time': 830, 'DegreesC': 180}, {'Time': 2130, 'DegreesC': 200}, {'Time': 2230, 'DegreesC': 150}]}, 'Tuesday': {'SetPoints': [{'Time': 730, 'DegreesC': 200}, {'Time': 830, 'DegreesC': 180}, {'Time': 2130, 'DegreesC': 200}, {'Time': 2230, 'DegreesC': 150}]}, 'Wednesday': {'SetPoints': [{'Time': 730, 'DegreesC': 200}, {'Time': 830, 'DegreesC': 180}, {'Time': 2130, 'DegreesC': 200}, {'Time': 2230, 'DegreesC': 150}]}, 'Thursday': {'SetPoints': [{'Time': 730, 'DegreesC': 200}, {'Time': 830, 'DegreesC': 180}, {'Time': 2130, 'DegreesC': 200}, {'Time': 2230, 'DegreesC': 150}]}, 'Friday': {'SetPoints': [{'Time': 730, 'DegreesC': 200}, {'Time': 830, 'DegreesC': 180}, {'Time': 2130, 'DegreesC': 200}, {'Time': 2230, 'DegreesC': 150}]}, 'Saturday': {'SetPoints': [{'Time': 730, 'DegreesC': 200}, {'Time': 830, 'DegreesC': 180}, {'Time': 2130, 'DegreesC': 200}, {'Time': 2230, 'DegreesC': 150}]}, 'Sunday': {'SetPoints': [{'Time': 730, 'DegreesC': 200}, {'Time': 830, 'DegreesC': 180}, {'Time': 2130, 'DegreesC': 200}, {'Time': 2230, 'DegreesC': 150}]}, 'Type': 'Heating'}, {'id': 9, 'Monday': {'SetPoints': [{'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 120}]}, 'Tuesday': {'SetPoints': [{'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 120}]}, 'Wednesday': {'SetPoints': [{'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 120}]}, 'Thursday': {'SetPoints': [{'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 120}]}, 'Friday': {'SetPoints': [{'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 120}]}, 'Saturday': {'SetPoints': [{'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 120}]}, 'Sunday': {'SetPoints': [{'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 120}]}, 'Type': 'Heating'}, {'id': 10, 'Monday': {'SetPoints': [{'Time': 800, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 150}]}, 'Tuesday': {'SetPoints': [{'Time': 800, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 150}]}, 'Wednesday': {'SetPoints': [{'Time': 800, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 150}]}, 'Thursday': {'SetPoints': [{'Time': 800, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 150}]}, 'Friday': {'SetPoints': [{'Time': 800, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 150}]}, 'Saturday': {'SetPoints': [{'Time': 800, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 150}]}, 'Sunday': {'SetPoints': [{'Time': 800, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 170}, {'Time': 2230, 'DegreesC': 150}]}, 'Type': 'Heating'}, {'id': 11, 'Monday': {'SetPoints': [{'Time': 15, 'DegreesC': 190}, {'Time': 45, 'DegreesC': 150}, {'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 160}]}, 'Tuesday': {'SetPoints': [{'Time': 15, 'DegreesC': 190}, {'Time': 45, 'DegreesC': 150}, {'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 160}]}, 'Wednesday': {'SetPoints': [{'Time': 15, 'DegreesC': 190}, {'Time': 45, 'DegreesC': 150}, {'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 160}]}, 'Thursday': {'SetPoints': [{'Time': 15, 'DegreesC': 190}, {'Time': 45, 'DegreesC': 150}, {'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 160}]}, 'Friday': {'SetPoints': [{'Time': 15, 'DegreesC': 190}, {'Time': 45, 'DegreesC': 150}, {'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 160}]}, 'Saturday': {'SetPoints': [{'Time': 15, 'DegreesC': 190}, {'Time': 45, 'DegreesC': 150}, {'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 160}]}, 'Sunday': {'SetPoints': [{'Time': 15, 'DegreesC': 190}, {'Time': 45, 'DegreesC': 150}, {'Time': 830, 'DegreesC': 190}, {'Time': 930, 'DegreesC': 160}]}, 'Type': 'Heating'}, {'id': 1000, 'Monday': {'SetPoints': [{'Time': 830, 'DegreesC': -200}]}, 'Tuesday': {'SetPoints': [{'Time': 830, 'DegreesC': -200}]}, 'Wednesday': {'SetPoints': [{'Time': 830, 'DegreesC': -200}]}, 'Thursday': {'SetPoints': [{'Time': 830, 'DegreesC': -200}]}, 'Friday': {'SetPoints': [{'Time': 830, 'DegreesC': -200}]}, 'Saturday': {'SetPoints': [{'Time': 830, 'DegreesC': -200}]}, 'Sunday': {'SetPoints': [{'Time': 830, 'DegreesC': -200}]}, 'Type': 'HotWater'}, {'id': 2000, 'Monday': {'SetPoints': [{'Time': 1200, 'DegreesC': -200}]}, 'Tuesday': {'SetPoints': [{'Time': 1200, 'DegreesC': -200}]}, 'Wednesday': {'SetPoints': [{'Time': 1200, 'DegreesC': -200}]}, 'Thursday': {'SetPoints': [{'Time': 1200, 'DegreesC': -200}]}, 'Friday': {'SetPoints': [{'Time': 1200, 'DegreesC': -200}]}, 'Saturday': {'SetPoints': [{'Time': 1200, 'DegreesC': -200}]}, 'Sunday': {'SetPoints': [{'Time': 1200, 'DegreesC': -200}]}, 'Type': 'HotWater'}]}
2020-02-05 17:18:56 DEBUG (SyncWorker_16) [wiserHeatingAPI.wiserHub] valve2roomMap{2: {'roomId': 1, 'roomName': 'Mum bedroom'}, 8: {'roomId': 2, 'roomName': 'Mums bath room'}, 4: {'roomId': 4, 'roomName': 'Old kitchen'}, 5: {'roomId': 5, 'roomName': 'Hall'}, 3: {'roomId': 6, 'roomName': 'Back room'}, 6: {'roomId': 6, 'roomName': 'Back room'}, 7: {'roomId': 7, 'roomName': 'Front room'}, 9: {'roomId': 8, 'roomName': 'Top floor'}, 10: {'roomId': 9, 'roomName': 'Top bath room'}, 11: {'roomId': 10, 'roomName': 'Middle Toilet'}, 12: {'roomId': 11, 'roomName': 'Back Bedroom'}}
2020-02-05 17:18:59 ERROR (MainThread) [aioharmony.hubconnector] 172.16.10.200: Exception on post: Cannot connect to host 172.16.10.200:8088 ssl:None [Connect call failed ('172.16.10.200', 8088)]
2020-02-05 17:18:59 ERROR (MainThread) [aioharmony.hubconnector] 172.16.10.200: Unable to retrieve HUB id
2020-02-05 17:18:59 WARNING (MainThread) [homeassistant.components.harmony.remote] living room: Unable to connect to HUB.
2020-02-05 17:18:59 WARNING (MainThread) [homeassistant.components.remote] Platform harmony not ready yet. Retrying in 60 seconds.
2020-02-05 17:19:15 WARNING (MainThread) [homeassistant.config_entries] Config entry for wled not ready yet. Retrying in 40 seconds.
2020-02-05 17:19:23 ERROR (MainThread) [homeassistant.core] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 284, in async_update_ha_state
self._async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 327, in _async_write_ha_state
attr.update(self.state_attributes or {})
File "/config/custom_components/wiser/climate.py", line 424, in state_attributes
attrs = super().state_attributes
File "/usr/src/homeassistant/homeassistant/components/climate/init.py", line 254, in state_attributes
data[ATTR_PRESET_MODE] = self.preset_mode
File "/config/custom_components/wiser/climate.py", line 350, in preset_mode
preset = WISER_PRESET_TO_HASS[wiser_preset.lower()]
KeyError: 'fromcomfortmode'
Hi,
I don't think this is a bug - more likely an error on my part:
The drayton wiser integration is working well for me with home assistant
I have home assistant linked into google home
If I ask google home "what is the temperature in the X room" is replies "the Wiser X room is set to auto"
This last statement is correct...but do you know how home assistant decides which bit of information it has from the Wiser unit to respond with when a request comes in from google home? It seems in this case it is responding with the unit state "auto" rather than it's temperature....
When I adjust the temp, I get this error:
`2019-12-21 18:00:05 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.140577434436560] SetRoomTemperature : value of temperature must be between 50 and 300 OR -200(off)
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 133, in handle_call_service
connection.context(msg),
File "/usr/src/homeassistant/homeassistant/core.py", line 1235, in async_call
await asyncio.shield(self._execute_service(handler, service_call))
File "/usr/src/homeassistant/homeassistant/core.py", line 1260, in _execute_service
await handler.func(service_call)
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 205, in handle_service
self._platforms.values(), func, call, service_name, required_features
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 336, in entity_service_call
future.result() # pop exception if have
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 360, in _handle_service_platform_call
await func(entity, data)
File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 519, in async_service_temperature_set
await entity.async_set_temperature(**kwargs)
File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 380, in async_set_temperature
ft.partial(self.set_temperature, **kwargs)
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/wiser/climate.py", line 175, in set_temperature
self.handler.set_room_temperature(self.roomId, target_temperature)
File "/config/custom_components/wiser/__init__.py", line 143, in set_room_temperature
target_temperature)
File "/usr/local/lib/python3.7/site-packages/wiserHeatingAPI/wiserHub.py", line 178, in setRoomTemperature
raise Exception("SetRoomTemperature : value of temperature must be between 50 and 300 OR -200(off)")
Exception: SetRoomTemperature : value of temperature must be between 50 and 300 OR -200(off)`
Hi - thanks for this component. All the important stuff is working really well đ
The errors below recur every minute or so. I wonder if it is because I have set up some rooms which do not have devices in yet (my order for more TRVs hasn't arrived yet!). Just a thought
I'm using Home Assistant 0.84.6 and a Wiser HeatHubR (single zone). I also see the HotWater errors there's an open issue for.
2019-01-03 22:00:46 ERROR (MainThread) [homeassistant.core] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/homeassistant/helpers/entity.py", line 239, in async_update_ha_state
attr = self.state_attributes or {}
File "/usr/local/lib/python3.6/site-packages/homeassistant/components/climate/__init__.py", line 225, in state_attributes
self.hass, self.current_temperature, self.temperature_unit,
File "/config/custom_components/climate/wiser.py", line 73, in current_temperature
temp=self.handler.getHubData().getRoom(self.roomId).get("CalculatedTemperature")/10
TypeError: unsupported operand type(s) for /: 'NoneType' and 'int'
2019-01-03 22:00:46 ERROR (MainThread) [homeassistant.core] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/homeassistant/helpers/entity.py", line 239, in async_update_ha_state
attr = self.state_attributes or {}
File "/usr/local/lib/python3.6/site-packages/homeassistant/components/climate/__init__.py", line 225, in state_attributes
self.hass, self.current_temperature, self.temperature_unit,
File "/config/custom_components/climate/wiser.py", line 73, in current_temperature
temp=self.handler.getHubData().getRoom(self.roomId).get("CalculatedTemperature")/10
TypeError: unsupported operand type(s) for /: 'NoneType' and 'int'
Once we have stability the following needs to be done to be able to package up as part of HA
Would be great to have control of these plugs in HA considering how popular they are due to being used as range extenders, is this possible?
Requires base implementation done on core api
asantaga/wiserheatingapi#8
Hi,
It would be nice to have the ability not just to update the temperature of the Thermostat / iTRV, but to be able to call for a Boost, like you do in the app.
This would allow to use external sensors to adjust the temperature in the room without changing the actual configuration of the iTRV.
Thanks.
Hey all,
Use this issue to comment, feedback etc to me about this component.
I created this issue/feedback thing because github doesnt have a way of sending emails/feedbacks to components anywhere.. Issues work!
I'm unable to get Wiser to show up, I get the error that the wiser component could not be found. It's in the same custom_components folder as my other components that are still working.
I love this Add-on, it is probably the thing that made me buy the Wiser system in the first place.
I love the new inclusion of boost but I can't get it to work. I get the following error:
Log Details (ERROR) Sun Jan 05 2020 16:34:04 GMT+0000 (Greenwich Mean Time) Error setting mode to error boost Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 133, in handle_call_service connection.context(msg), File "/usr/src/homeassistant/homeassistant/core.py", line 1235, in async_call await asyncio.shield(self._execute_service(handler, service_call)) File "/usr/src/homeassistant/homeassistant/core.py", line 1260, in _execute_service await handler.func(service_call) File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 205, in handle_service self._platforms.values(), func, call, service_name, required_features File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 336, in entity_service_call future.result() # pop exception if have File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 358, in _handle_service_platform_call await getattr(entity, func)(**data) File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 421, in async_set_preset_mode await self.hass.async_add_executor_job(self.set_preset_mode, preset_mode) File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/config/custom_components/wiser/climate.py", line 200, in set_preset_mode self.handler.set_room_mode(self.roomId, preset_mode, boost_temp, boost_time) File "/config/custom_components/wiser/__init__.py", line 157, in set_room_mode boost_time) File "/usr/local/lib/python3.7/site-packages/wiserHeatingAPI/wiserHub.py", line 328, in setRoomMode raise Exception("Error setting mode to error {} ".format(mode)) Exception: Error setting mode to error boost
And
Log Details (ERROR) Sun Jan 05 2020 16:48:31 GMT+0000 (Greenwich Mean Time) Set Room mode to boost resulted in 400
Thanks for any help you can offer, and keep up the awesome work!
Remove custom components support for 1.9
Users should now
custom_components
directoryFrom msp1974
Have also noticed that we (he says 'we' like it wasn't his poor coding! )are calling the forced refresh twice when setting away mode and switches. Once in the switch.py file and once in init.py when calling api.
eradicate duplicate refresh
Within the devices payload there are two elements
NodeId and ParentNodeId
For TRVs and RoomStats
Adding this to the iTRV and RoomStat data payloads as rawdata
Also adding a computed attribute called "HubConnection" which will be either
This is really useful to know when diagnosing/mapping how you trvs are communicating to the wiser hub..
Fab, really well thought out system this wiser stuff is..
within the smartplug data set the ManualState attribute is toggled to indicate manual or schedule mode
[
{
"id": 15,
"ScheduleId": 2000,
"ManualState": "Off",
"Name": "Smartplug",
"Mode": "Manual",
"AwayAction": "Off",
"OutputState": "Off",
"ControlSource": "FromManualMode",
"ScheduledState": "Off"
}
]
Mode toggles from Manual
to Auto
Enhancement
Add controls to SmartPlug Implementation to cover this. Future Enh would be to set custom schedules using API (if people need it)
The climate platform has been re-architected in V 0.96 of Home Assistant. Please see this link: https://developers.home-assistant.io/blog/2019/07/03/climate-cleanup.html
Unfortunately, this means that the climate platform no longer loads. This is the error in the log file:
2019-07-21 11:59:38 ERROR (MainThread) [homeassistant.setup] Unable to prepare setup for platform wiser.climate: Platform not found (cannot import name 'STATE_AUTO' from 'homeassistant.components.climate.const' (/usr/src/homeassistant/homeassistant/components/climate/const.py)).
I am running V 0.96.2 of HA and the lastest release of the wiser custom component.
Keep up the good work. Thanks.
Just upgraded to the latest set of code and got some new errors:
Room doesnt contain any smart valves, maybe an error/corruption
6:34 AM custom_components/wiserAPI/wiserHub.py (WARNING)
Get 4 of these in sequence - I have 3 trvs and the main sensor - probably not a coincidence.
just deployed v1.8 using HACS:
Component error: wiser - cannot import name 'TEMP_MINIMUM' from 'wiserHeatingAPI.wiserHub' (/usr/local/lib/python3.7/site-packages/wiserHeatingAPI/wiserHub.py)
The component doesn't initialise
Runing HA 0.96.2 and the latest version of the master branch of the wiser custom component.
I am running the Smart Hub (with hot water control), I purchased 2 TRV Valves but have not yet taken them out of the box. Every 5 mins the following messages are logged in the HA log.
2019-07-21 11:59:57 WARNING (SyncWorker_18) [custom_components.wiser.wiserAPI.wiserHub] Room doesnt contain any smart valves, maybe an error/corruption??
2019-07-21 11:59:57 WARNING (SyncWorker_16) [custom_components.wiser.wiserAPI.wiserHub] Room doesnt contain any smart valves, maybe an error/corruption??
I discovered this repository a few days ago and it's looking really nice. I'd been working on a similar project over christmas but haven't got to the Home Assistant part yet. I've been working on a core python library for the Wiser API that I had planned to use as the backend to making a Home Assistant component but you've already got a good platform started! I've published my library here: https://github.com/connor9/python-draytonwiser-api
As I was mostly finished the first version of my python library before discovering this project I've made a first pass attempt to see if they would be compatible and it was pretty easy to interchange the wiserAPI/wiserHub part with this library. I've got that example in a fork of this project here: https://github.com/connor9/wiserHomeAssistantPlatform (The library is not in pypi yet so on my test system I copied the library into the custom_components directory to allow wiserHomeAssistantPlatform to find it.)
I've already started adding the PATCH request to Wiser Hub features to this library including functions for setting the boost on rooms. i.e. get_room(3).set_boost(30, 21). I've also built in testing to the library to hopefully make testing the various strange edge cases of the Wiser REST API easier to develop for. I was wondering if you had any interest in collaborating and integrating with this library? I'd like to contribute to making the wiserHomeAssistantPlatform a great component for Home Assistant but I'm also interested in making the generic python library great for non-Home Assistant use cases.
Hey all, feel free to use this issue to ask questions ideas for our next release 2.0./
For bugs please log an issue
For other queries either use this issue or the Home Assistant forum https://community.home-assistant.io/t/drayton-wiser-home-assistant-integration/80965/47
thanks!
It would be good to add a license file to the repository. I think GitHub can do this for you for a number of standard licenses.
Add the switch to turn the hotwater on/off
Whilst implementing the set smartplug mode functionality I noticed that all the services we've built dont show the
entity pull down and the documentation it the developer tools..
Ive looked at it and have no idea why..
@msp1974 Any ideas?
I get this error in log when I restart home assistant after configuring WiserHomeAssistant with HACS. I'm unable to add WiserHomeAssistant as an integration (apologies if something simple I'm new to HA). Thanks
Error while setting up platform wiser
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 158, in _async_setup_platform
await asyncio.wait_for(asyncio.shield(task), SLOW_SETUP_MAX_WAIT)
File "/usr/local/lib/python3.7/asyncio/tasks.py", line 442, in wait_for
return fut.result()
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/wiser/climate.py", line 56, in setup_platform
handler.update()
File "/config/custom_components/wiser/init.py", line 106, in update
self.wiserHubInstance = wiserHub.wiserHub(self.ip, self.secret)
File "/usr/local/lib/python3.7/site-packages/wiserHeatingAPI/wiserHub.py", line 47, in init
self.refreshData() # Issue first refresh in init
File "/usr/local/lib/python3.7/site-packages/wiserHeatingAPI/wiserHub.py", line 87, in refreshData
self.hubIP), headers=self.headers, timeout=TIMEOUT).json()
File "/usr/local/lib/python3.7/site-packages/requests/models.py", line 897, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/local/lib/python3.7/site-packages/simplejson/init.py", line 525, in loads
return _default_decoder.decode(s)
File "/usr/local/lib/python3.7/site-packages/simplejson/decoder.py", line 370, in decode
obj, end = self.raw_decode(s)
File "/usr/local/lib/python3.7/site-packages/simplejson/decoder.py", line 400, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Options for the room are 'Heat/Cool' and 'Auto'. Seem to be missing 'Boost'.
Using latest release I get;
2018-11-30 18:43:51 ERROR (MainThread) [homeassistant.setup] Error during setup of component wiser
Traceback (most recent call last):
File "f:\python\homeassistant\lib\site-packages\homeassistant\setup.py", line 148, in _async_setup_component
component.setup, hass, processed_config) # type: ignore
File "C:\Users\spw\AppData\Local\Programs\Python\Python36-32\lib\concurrent\futures\thread.py", line 56, in run
result = self.fn(*self.args, **self.kwargs)
File "C:\Users\spw\AppData\Roaming.homeassistant\custom_components\wiser.py", line 44, in setup
hass.data[DATA_KEY] = WiserHubHandle(hubHost, password, scan_interval)
File "C:\Users\spw\AppData\Roaming.homeassistant\custom_components\wiser.py", line 63, in init
self.wiserHub=wiserHub.wiserHub(self.ip,self.secret)
File "C:\Users\spw\AppData\Roaming.homeassistant\custom_components\wiserAPI\wiserHub.py", line 29, in init
self.refreshData() # Issue first refresh in init
File "C:\Users\spw\AppData\Roaming.homeassistant\custom_components\wiserAPI\wiserHub.py", line 42, in refreshData
for valveId in smartValves:
TypeError: 'NoneType' object is not iterable
attached is the JSON dump obtained by doing a wireshark while HA was doing it's discovery.
wiser debug network trace2.txt
Hi - the code to connect to the HeatHub is great thank-you! I have an issue with lots of errors in the Home Assistant logs though as my HeatHub is a model with no hot water control, just heating. Is it possible to disable the checking of the hot water status? Error message is as follows...
Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/homeassistant/helpers/entity.py", line 232, in async_update_ha_state
state = self.state
File "/config/custom_components/sensor/wiser.py", line 188, in state
return self.handler.getHubData().getHotwaterRelayStatus()
File "/config/custom_components/wiserAPI/wiserHub.py", line 124, in getHotwaterRelayStatus
return self.wiserHubData.get("HotWater")[0].get("WaterHeatingState")
TypeError: 'NoneType' object is not subscriptable
Heathub details are...
vendor Drayton Wiser
product type Controller
model identifier WT714R1S0902
device lock enabled false
displayed signal strength VeryGood
firmware 2.26.16
Thanks!
When I upgrade to the latest HA version (0.89.1) the Wiser platform fails to load. I'm not sure if it's related to the upcoming changes to the way custom components are named within HA. Is anybody else having an issue with 0.89.1?
Switching away mode causes the following error although it does change the mode.
If I can I'll try and see what's causing the issue.
Error setting Home/Away , error {"Type":"Away","SetPoint":120} Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 133, in handle_call_service connection.context(msg), File "/usr/src/homeassistant/homeassistant/core.py", line 1235, in async_call await asyncio.shield(self._execute_service(handler, service_call)) File "/usr/src/homeassistant/homeassistant/core.py", line 1260, in _execute_service await handler.func(service_call) File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 205, in handle_service self._platforms.values(), func, call, service_name, required_features File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 336, in entity_service_call future.result() # pop exception if have File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 358, in _handle_service_platform_call await getattr(entity, func)(**data) File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/config/custom_components/wiser/switch.py", line 64, in turn_on self.handler.set_away_mode(True, self.awayTemperature) File "/config/custom_components/wiser/__init__.py", line 163, in set_away_mode self.wiserHubInstance.setHomeAwayMode(mode, away_temperature) File "/usr/local/lib/python3.7/site-packages/wiserHeatingAPI/wiserHub.py", line 169, in setHomeAwayMode raise Exception("Error setting Home/Away , error {} ".format(self.response.text)) Exception: Error setting Home/Away , error {"Type":"Away","SetPoint":120} Failed to call service switch/turn_off. Error setting Home/Away , error {"Type":"None","SetPoint":0}
If for whatever reason the wiserhub is down the integration will fail and not recover gracefully.
need to look at refactoring code so that it becomes more resilient to failures.
Having taken a look at your excellent HA integration, I was wondering if it would support my use case.
My use case is as follows:
So I need to be able to define "modes of operation". I don't think this equates to zones, as the rooms overlap.
Right now I have a Salus iT500 system, but that is not properly integrated with HA, so I was thinking of buying a new heating controller and a bunch of TRVs
Does your HA extension support my use case? (assuming I buy the Wiser kit).
Hey, love this component, thanks :) however this has been bugging me for a couple of months or so; I see errors when setting away mode via HA with the switch, and then the component will freeze and not respond or update or anything until HA is restarted.
I saw a couple of related issues that have opened and closed last few weeks / months, but my error persists with latest 1.7 update (using HACS). Very helpfully I don't have a note of the exact error but it is something like 'setAwayHome temperature can only be between 5 and 30 or -20 (Off)'.
I had a look around (I am familiar with code, but to be honest never used github properly as a contributor, so I will just point out the bits here, sorry) and found that switch.py update method, line 44/45 should read:
self.awayTemperature = self.handler.get_hub_data().getSystem(). \
get('AwayModeSetPointLimit')/10
rather than the current
self.awayTemperature = self.handler.get_hub_data().getSystem(). \
get('AwayModeSetPointLimit')
to match line 36/37 in 'init' method.
Without this, it was trying to send an away mode setpoint with the raw api value of 140 (14 deg c) instead of 14, and this was failing the bounds checking (5-30 or -20) in wiserHub.py.
I'm not sure how this switch error would cause the whole component (including climate components etc) to freeze up, but I will keep an eye on it next few days.
Ta, Joe
Noticed that the Get Schedule service is rounding all my temperatures to 0 dec places.
Monday:
Should line 46 in 'util.py' "value = round(value / 10)" be changed to "value = round(value / 10 , 1)"
Thanks to both you and all the other contributors for making Wiser so much more useful!
A room that I had created in the Drayton Mobile App shows in the HA UI, even though all devices have been removed and it is no longer visible in the Drayton UI.
Just noticed that even if the TRV/Thermostat is set to manual / boost the tile always shows "auto" at the top..
Probably a sync issue
I probably don't have enough information to help nail this down yet, but I'm happy to add debug if required:
Every so often, ie between once per day and once per week, my home assistant grinds to a halt. That is to say that is it running, but no longer /doing/ anything useful. A restart always fixes it, but it also blats the log. Today I saved the log before restarting.
The relevant section would seem to be here:
2020-01-08 11:20:30 INFO (SyncWorker_1) [custom_components.wiser] Skipping update (data already gotten within scan interval)
2020-01-08 11:21:01 INFO (SyncWorker_4) [custom_components.wiser] Update Requested
2020-01-08 11:21:01 INFO (SyncWorker_3) [custom_components.wiser] Update Requested
2020-01-08 11:21:01 INFO (SyncWorker_4) [custom_components.wiser] Scan Interval exceeeded, updating Wiser DataSet from hub
2020-01-08 11:21:01 INFO (SyncWorker_4) [wiserHeatingAPI.wiserHub] Updating Wiser Hub Data
2020-01-08 11:21:11 WARNING (MainThread) [homeassistant.helpers.entity] Update of switch.wiser_away_mode is taking over 10 seconds
2020-01-08 11:21:11 WARNING (MainThread) [homeassistant.helpers.entity] Update of sensor.wiser_hot_water is taking over 10 seconds
2020-01-08 11:21:25 INFO (SyncWorker_2) [custom_components.wiser] Update Requested
2020-01-08 11:21:31 WARNING (MainThread) [homeassistant.components.switch] Updating wiser switch took longer than the scheduled update interval 0:00:30
2020-01-08 11:21:31 WARNING (MainThread) [homeassistant.components.sensor] Updating wiser sensor took longer than the scheduled update interval 0:00:30
2020-01-08 11:21:35 WARNING (MainThread) [homeassistant.helpers.entity] Update of climate.wiser_upstairs_landing is taking over 10 seconds
From that point onwards no more data is received into HA from wiser, and no actions taken in HA effect the wiser config (ie trying to turn off away mode). The above messages about updates taking longer than the scheduled interval repeat.
Looking further down the logs, the 'infection' spreads to pretty much everything else around 6 hours later, ie at that point many other things fail to update in the scheduled update interval, and
the HA API is no longer responding to the gui.
Could the Hub update be failing and this component isn't handling it gracefully?
I'm happy to do stuff to help debug this if I can, the only thing that springs to mind right now is setting up a tcpdump to capture the Hub updates.
I'd really like to get to the bottom of this, your module is really useful and I'm grateful that you've taken the time to release it.
wiserHomeAssistantPlatform/sensor/wiser.py
Line 298 in 7dfbb2e
Looks like some conflict messages are left in the file after the merge (also see line 239)
todo
I would like to request that Boiler Percentage Demand is added as one of the available stats in the Climate element. I was using an OpenHAB Wiser component and it had percentage demand as an option.
I have had a play with it and identified the string that is needed:-
return self.handler.getHubData().getRoom(self.roomId).get("PercentageDemand")
Thank-you
Hiya, thanks for this component your work is very much appreciated.
Running Hassio 0.99.3 & wiser 1.5 via HACS, default setup with all kit reporting status correctly.
Having an issue setting away mode, see the following error:
"Failed to call service switch/turn_on. Error setting Home/Away, error {"Type":"Away","SetPoint":50}
Not too sure why it won't change the home/away status via simple switch click?
Ive noticed that the UI doesnt change the "last updated" text unless there is a state change. Normally this works fine but I have noticed sometimes the data has gaps (in grafana for example).
This is kinda "as expected" and HA only wants track changes.
Now I can "force" HA to force a state change every 10mins , which kinda commits the changes, is this useful or will it be just noise?
I think its just noise, but i thought Id ask
Whilst testing I noticed that the TRVs/RoomStats dont show the battery data all the time.
I rebooted my hub and then I noticed that only 2/10 devices where reporting battery levels. In this case the code doesnt show anything...
After a while the battery level appears but I dont think HA will see it because the devices arent recreated on each interval..
I'll think of a workaround for this, but logging this as a "FYI"
Firstly massive thank you for writing this addon :-)
In your readme there is an example yaml config with the following:
wiser:
host:
password:
scan_interval: 300
minimum: -5
boost_temp: 24
boost_time: 30
Using this example I get the following error within Home Assistant:
Configuration invalid
Invalid config for [wiser]: [boost_time] is an invalid option for [wiser]. Check: wiser->boost_time. (See /config/configuration.yaml, line 48). Please check the docs at https://home-assistant.io/components/wiser/
I beliew that either you have a typo on line 189 of wiserHub.py and boost_time_temp
should read boost_time
or you have a typo in the readme doc and boost_time
should read boost_temp_time
#Set Room Mode (Manual, Boost or Auto)
def setRoomMode(self,roomId, mode,boost_temp=20,boost_temp_time=30):
# TODO
_LOGGER.debug("Set Mode {} for a room {} ".format(mode,roomId))
if (mode.lower()=="auto"):
For this component to be published with HA the wiserhub API needs to be moved to Pypi.
This work has been done just logging this as a tracking issue
Installed the component as per the instructions. Added the config to the YAML and rebooted. Couldn't reconnect to HA. Had to physically reboot the server.
HA came back but there are no devices/entities listed. Can't find anything for Wiser. Nothing in the logs points to an issue.
Base API code now supports setting the setHotwaterMode to on/off/auto
Should add a switch to HA to support this.
Haven't noticed this before and don't know whether a software update from Wiser has made some changes, but when Eco mode enabled the CurrentSetPoint, which is used to display in the UI the target temp can be different to the schedule temp (not sure if true for manual set temps) and also to what is displayed in the app.
The app must use DisplayedSetPoint and therefore so should the custom_component. Postman output below to show the issue. See also setpointOrigin showing 'FromEcoIQ' - haven't seen this before either!
{ "id": 1, "ManualSetPoint": 230, "OverrideType": "EcoIQ", "OverrideSetpoint": 150, "ScheduleId": 1, "HeatingRate": 1200, "SmartValveIds": [ 4 ], "UfhRelayIds": [], "Name": "Lounge", "Mode": "Auto", "DemandType": "Modulating", "WindowDetectionActive": false, "ControlSequenceOfOperation": "HeatingOnly", "HeatingType": "HydronicRadiator", "CalculatedTemperature": 233, "CurrentSetPoint": 150, "PercentageDemand": 0, "ControlOutputState": "Off", "WindowState": "Closed", "SetpointOrigin": "FromEcoIQ", "DisplayedSetPoint": 230, "ScheduledSetPoint": 230, "AwayModeSuppressed": false, "RoundedAlexaTemperature": 235, "EffectiveMode": "Auto", "PercentageDemandForItrv": 0 }
A declarative, efficient, and flexible JavaScript library for building user interfaces.
đ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. đđđ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google â¤ī¸ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.