Skip to content

Commit 6d28283

Browse files
authored
Merge pull request #42 from plugwise/add-model
Add model-info to smile-output
2 parents 2b3cd41 + 3b0a576 commit 6d28283

22 files changed

+11544
-1328
lines changed

.github/workflows/verify.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ env:
1111
on:
1212
schedule:
1313
- cron: '0 0 * * 0' # weekly
14+
workflow_dispatch:
1415
push:
15-
#pull_request:
16+
# pull_request:
1617

1718
jobs:
1819
# Prepare default python version environment

plugwise/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Plugwise module."""
22

3-
__version__ = "0.8.2a4"
3+
__version__ = "0.8.2a5"
44

55
from plugwise.smile import Smile
66
from plugwise.stick import stick

plugwise/constants.py

Lines changed: 29 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -279,11 +279,13 @@
279279
APPLIANCES = "/core/appliances"
280280
DOMAIN_OBJECTS = "/core/domain_objects"
281281
LOCATIONS = "/core/locations"
282+
MODULES = "/core/modules"
282283
NOTIFICATIONS = "/core/notifications"
283284
RULES = "/core/rules"
284285
SYSTEM = "/system"
285286
STATUS = "/system/status.xml"
286287

288+
ATTR_TYPE = "type"
287289
DEFAULT_TIMEOUT = 30
288290
DEFAULT_USERNAME = "smile"
289291
DEFAULT_PORT = 80
@@ -292,19 +294,19 @@
292294

293295
HOME_MEASUREMENTS = {
294296
"electricity_consumed": {
295-
ATTR_NAME: "power",
297+
ATTR_TYPE: "power",
296298
ATTR_UNIT_OF_MEASUREMENT: POWER_WATT,
297299
},
298300
"electricity_produced": {
299-
ATTR_NAME: "power",
301+
ATTR_TYPE: "power",
300302
ATTR_UNIT_OF_MEASUREMENT: POWER_WATT,
301303
},
302304
"gas_consumed": {
303-
ATTR_NAME: "gas",
305+
ATTR_TYPE: "gas",
304306
ATTR_UNIT_OF_MEASUREMENT: VOLUME_CUBIC_METERS,
305307
},
306308
"outdoor_temperature": {
307-
ATTR_NAME: "temperature",
309+
ATTR_TYPE: "temperature",
308310
ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS,
309311
},
310312
}
@@ -314,86 +316,48 @@
314316
# radiator_valve 'uncorrected_temperature', 'temperature_offset'
315317
DEVICE_MEASUREMENTS = {
316318
# HA Core current_temperature
317-
"temperature": {ATTR_NAME: "temperature", ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS},
319+
"temperature": {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS},
318320
# HA Core setpoint
319-
"thermostat": {ATTR_NAME: "setpoint", ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS},
321+
"thermostat": {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS},
320322
# Anna/Adam
321-
"boiler_temperature": {
322-
ATTR_NAME: "water_temperature",
323-
ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS,
324-
},
325-
"domestic_hot_water_state": {
326-
ATTR_NAME: "dhw_state",
327-
ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS,
328-
},
323+
"boiler_temperature": {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS},
324+
"domestic_hot_water_state": {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS},
329325
"intended_boiler_temperature": {
330-
ATTR_NAME: "intended_boiler_temperature",
331-
ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS,
326+
ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS
332327
}, # non-zero when heating, zero when dhw-heating
333328
"intended_central_heating_state": {
334-
ATTR_NAME: "heating_state",
335-
ATTR_UNIT_OF_MEASUREMENT: None,
329+
ATTR_UNIT_OF_MEASUREMENT: None
336330
}, # use intended_c_h_state, this key shows the heating-behavior better than c-h_state
337-
"modulation_level": {
338-
ATTR_NAME: "modulation_level",
339-
ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE,
340-
},
341-
"return_water_temperature": {
342-
ATTR_NAME: "return_temperature",
343-
ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS,
344-
},
331+
"modulation_level": {ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE},
332+
"return_water_temperature": {ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS},
345333
# Used with the Elga heatpump - marcelveldt
346-
"compressor_state": {ATTR_NAME: "compressor_state", ATTR_UNIT_OF_MEASUREMENT: None},
347-
"cooling_state": {ATTR_NAME: "cooling_state", ATTR_UNIT_OF_MEASUREMENT: None},
334+
"compressor_state": {ATTR_UNIT_OF_MEASUREMENT: None},
335+
"cooling_state": {ATTR_UNIT_OF_MEASUREMENT: None},
348336
# Next 2 keys are used to show the state of the gas-heater used next to the Elga heatpump - marcelveldt
349-
"slave_boiler_state": {
350-
ATTR_NAME: "slave_boiler_state",
351-
ATTR_UNIT_OF_MEASUREMENT: None,
352-
},
337+
"slave_boiler_state": {ATTR_UNIT_OF_MEASUREMENT: None},
353338
"flame_state": {
354-
ATTR_NAME: "flame_state",
355-
ATTR_UNIT_OF_MEASUREMENT: None,
339+
ATTR_UNIT_OF_MEASUREMENT: None
356340
}, # also present when there is a single gas-heater
357341
# Anna only
358-
"central_heater_water_pressure": {
359-
ATTR_NAME: "water_pressure",
360-
ATTR_UNIT_OF_MEASUREMENT: PRESSURE_BAR,
361-
},
342+
"central_heater_water_pressure": {ATTR_UNIT_OF_MEASUREMENT: PRESSURE_BAR},
362343
"outdoor_temperature": {
363-
ATTR_NAME: "outdoor_temperature",
364-
ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS,
344+
ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS
365345
}, # Outdoor temp as reported on the Anna, in the App
366346
"schedule_temperature": {
367-
ATTR_NAME: "schedule_temperature",
368-
ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS,
347+
ATTR_UNIT_OF_MEASUREMENT: TEMP_CELSIUS
369348
}, # Only present on legacy Anna and Anna_v3
370349
# Legacy Anna: similar to flame-state on Anna/Adam
371-
"boiler_state": {ATTR_NAME: "boiler_state", ATTR_UNIT_OF_MEASUREMENT: None},
350+
"boiler_state": {ATTR_UNIT_OF_MEASUREMENT: None},
372351
# Legacy Anna: shows when heating is active, don't show dhw_state, cannot be determined reliably
373-
"intended_boiler_state": {
374-
ATTR_NAME: "intended_boiler_state",
375-
ATTR_UNIT_OF_MEASUREMENT: None,
376-
},
352+
"intended_boiler_state": {ATTR_UNIT_OF_MEASUREMENT: None},
377353
# Lisa and Tom
378-
"battery": {ATTR_NAME: "battery", ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE},
379-
"temperature_difference": {
380-
ATTR_NAME: "temperature_difference",
381-
ATTR_UNIT_OF_MEASUREMENT: DEGREE,
382-
},
383-
"valve_position": {
384-
ATTR_NAME: "valve_position",
385-
ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE,
386-
},
354+
"battery": {ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE},
355+
"temperature_difference": {ATTR_UNIT_OF_MEASUREMENT: DEGREE},
356+
"valve_position": {ATTR_UNIT_OF_MEASUREMENT: PERCENTAGE},
387357
# Plug
388-
"electricity_consumed": {
389-
ATTR_NAME: "electricity_consumed",
390-
ATTR_UNIT_OF_MEASUREMENT: POWER_WATT,
391-
},
392-
"electricity_produced": {
393-
ATTR_NAME: "electricity_produced",
394-
ATTR_UNIT_OF_MEASUREMENT: POWER_WATT,
395-
},
396-
"relay": {ATTR_NAME: "relay", ATTR_UNIT_OF_MEASUREMENT: None},
358+
"electricity_consumed": {ATTR_UNIT_OF_MEASUREMENT: POWER_WATT},
359+
"electricity_produced": {ATTR_UNIT_OF_MEASUREMENT: POWER_WATT},
360+
"relay": {ATTR_UNIT_OF_MEASUREMENT: None},
397361
}
398362

399363
SMILES = {

plugwise/node.py

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import logging
44

55
from plugwise.constants import (
6-
HW_MODELS,
76
SENSOR_AVAILABLE,
87
SENSOR_PING,
98
SENSOR_RSSI_IN,
@@ -22,7 +21,7 @@
2221
NodeInfoResponse,
2322
NodePingResponse,
2423
)
25-
from plugwise.util import validate_mac
24+
from plugwise.util import validate_mac, version_to_model
2625

2726
_LOGGER = logging.getLogger(__name__)
2827

@@ -62,20 +61,8 @@ def __init__(self, mac, address, stick):
6261
def get_node_type(self) -> str:
6362
"""Return hardware model."""
6463
if self._hardware_version:
65-
hw_model = HW_MODELS.get(self._hardware_version[4:10], None)
66-
if hw_model:
67-
return hw_model
68-
69-
# Try again with reversed order
70-
hw_model = HW_MODELS.get(
71-
self._hardware_version[-2:]
72-
+ self._hardware_version[-4:-2]
73-
+ self._hardware_version[-6:-4],
74-
None,
75-
)
76-
if hw_model:
77-
return hw_model
78-
return "Unknown"
64+
return version_to_model(self._hardware_version)
65+
return None
7966

8067
def is_sed(self) -> bool:
8168
"""Return True if node SED (battery powered)."""

0 commit comments

Comments
 (0)