Skip to content

Commit 40156d9

Browse files
committed
#190 Bitron AV2010/32 thermostat support
1 parent 29db51d commit 40156d9

File tree

5 files changed

+74
-4
lines changed

5 files changed

+74
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ New devices:
5050
- Zemismart ZM-L03E-Z 3 gang with neutral wire switch
5151
- Zemismart RGB LED downlight
5252
- Zemismart Curtain/roller blind switch
53+
- Bitron Wireless wall thermostat with relay
5354

5455
## 0.0.20
5556
- Properly handle heartbeat message from IKEA TRADFRI Remote Control

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ git pull
4747
### Bitron
4848
- Bitron Wireless motion detector
4949
- Bitron Wireless smart plug
50+
- Bitron Wireless wall thermostat with relay
5051

5152
### Bosch
5253
- Bosch Motion sensor

adapters/__init__.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from adapters.on_off_switch_adapter import OnOffSwitchAdapter
66
from adapters.rgb_adapter import RGBAdapter
77
from adapters.rgbw_adapter import RGBWAdapter
8+
from adapters.bitron import bitron_adapters
89
from adapters.cr import cr_adapters
910
from adapters.generic.motion_sensor import MotionSensorAdapter
1011
from adapters.generic.motion_temp_sensor import MotionAndTemperatureSensorAdapter
@@ -42,9 +43,6 @@
4243
'67200BL': OnOffSwitchAdapter, # Anchor Vetaar smart plug
4344
# Belkin
4445
'F7C033': DimmableBulbAdapter, # Belkin WeMo smart LED bulb
45-
# Bitron
46-
'AV2010/22': MotionSensorAdapter, # Bitron Wireless motion detector
47-
'AV2010/25': OnOffKwhAdapter, # Bitron Wireless smart plug
4846
# Bosch
4947
'RADON TriTech ZB': MotionAndTemperatureSensorAdapter, # Bosch Wireless motion detector
5048
'ISW-ZPR1-WP13': MotionAndTemperatureSensorAdapter, # Bosch Motion sensor
@@ -160,7 +158,8 @@
160158
'900008-WW': DimmableBulbAdapter, # ilux Dimmable A60 E27 LED Bulb
161159
# Unbranded DIY adapters
162160
'ptvo.switch': PtvoSwitch # cc2530 zigbee module with pvto.switch firmware (buttons only for now!)
163-
},
161+
},
162+
**bitron_adapters,
164163
**cr_adapters,
165164
**gledopto_adapters,
166165
**heiman_adapters,

adapters/bitron/AV201032.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import Domoticz
2+
import json
3+
from adapters.adapter_with_battery import AdapterWithBattery
4+
from devices.sensor.temperature import TemperatureSensor
5+
from devices.switch.selector_switch import SelectorSwitch
6+
from devices.setpoint import SetPoint
7+
8+
9+
class AV201032(AdapterWithBattery):
10+
11+
def __init__(self, devices):
12+
super().__init__(devices)
13+
14+
mode_switch = SelectorSwitch(devices, 'mode', 'system_mode', ' (Mode)')
15+
mode_switch.add_level('Off', 'off')
16+
mode_switch.add_level('Auto', 'auto')
17+
mode_switch.add_level('Cool', 'cool')
18+
mode_switch.add_level('Heat', 'heat')
19+
mode_switch.add_level('Emergency Heating', 'emergency heating')
20+
mode_switch.add_level('Precooling', 'precooling')
21+
mode_switch.add_level('Fan only', 'fan only')
22+
mode_switch.add_level('Dry', 'dry')
23+
mode_switch.add_level('Sleep', 'sleep')
24+
mode_switch.set_selector_style(SelectorSwitch.SELECTOR_TYPE_MENU)
25+
mode_switch.set_icon(15)
26+
27+
self.devices.append(TemperatureSensor(devices, 'temp', 'local_temperature',' (Temperature)'))
28+
self.devices.append(SetPoint(devices, 'sp1', 'occupied_heating_setpoint',' (Occupied Setpoint)'))
29+
self.devices.append(SetPoint(devices, 'sp2', 'unoccupied_heating_setpoint',' (Unoccupied Setpoint)'))
30+
self.devices.append(mode_switch)
31+
32+
def handleCommand(self, alias, device, device_data, command, level, color):
33+
topic = device_data['friendly_name'] + '/set'
34+
35+
if alias == 'sp1' and command == 'Set Level':
36+
msg = json.dumps({ 'occupied_heating_setpoint': level })
37+
38+
return {
39+
'topic': topic,
40+
'payload': msg
41+
}
42+
43+
if alias == 'sp2' and command == 'Set Level':
44+
msg = json.dumps({ 'unoccupied_heating_setpoint': level })
45+
46+
return {
47+
'topic': topic,
48+
'payload': msg
49+
}
50+
51+
if alias == 'mode':
52+
switch = self.get_device_by_alias(alias)
53+
level_index = int(level / 10)
54+
msg = json.dumps({ 'system_mode': switch.level_values[level_index] })
55+
56+
return {
57+
'topic': topic,
58+
'payload': msg
59+
}

adapters/bitron/__init__.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from adapters.generic.on_off_kwh import OnOffKwhAdapter
2+
from adapters.generic.motion_sensor import MotionSensorAdapter
3+
from adapters.bitron.AV201032 import AV201032
4+
5+
6+
bitron_adapters = {
7+
'AV2010/22': MotionSensorAdapter, # Bitron Wireless motion detector
8+
'AV2010/25': OnOffKwhAdapter, # Bitron Wireless smart plug
9+
'AV2010/32': AV201032, # Bitron Wireless wall thermostat with relay
10+
}

0 commit comments

Comments
 (0)