-
Notifications
You must be signed in to change notification settings - Fork 0
/
Energine.py
99 lines (92 loc) · 4.64 KB
/
Energine.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# Energine.py
#
# Author: DerekGn
#
import DomoticzEx as Domoticz
import OpenThings
import Common
MFRID_ENERGENIE = 0x04
# PRODUCTID_MIHO001 # Home Hub
# PRODUCTID_MIHO002 # OOK: Control only
# PRODUCTID_MIHO003 # OOK: Hand Controller
PRODUCTID_MIHO004 = 0x01 # FSK: Monitor only
PRODUCTID_MIHO005 = 0x02 # FSK: Adaptor Plus
PRODUCTID_MIHO006 = 0x05 # FSK: House Monitor
# PRODUCTID_MIHO007 # OOK: Double Wall Socket white
# PRODUCTID_MIHO008 # OOK: Single light switch white
# PRODUCTID_MIHO009 # OOK: Double Light Switch white
# PRODUCTID_MIHO010 # OOK: Single light dimmer switch white
# PRODUCTID_MIHO011
# PRODUCTID_MIHO012
PRODUCTID_MIHO013 = 0x03 # FSK: eTRV
# PRODUCTID_MIHO014 # OOK: In-line Relay
# PRODUCTID_MIHO015
# PRODUCTID_MIHO016
# PRODUCTID_MIHO017
# PRODUCTID_MIHO018
# PRODUCTID_MIHO019
# PRODUCTID_MIHO020
# PRODUCTID_MIHO021 # OOK: Double Wall Socket nickel
# PRODUCTID_MIHO022 # OOK: Double Wall Socket chrome
# PRODUCTID_MIHO023 # OOK: Double Wall Socket brushed steel
# PRODUCTID_MIHO024 # OOK: Style Light nickel
# PRODUCTID_MIHO025 # OOK: Style Light chrome
# PRODUCTID_MIHO026 # OOK: Style Light steel
# PRODUCTID_MIHO027 # Starter pack bundle
# PRODUCTID_MIHO028 # Eco starter pack
# PRODUCTID_MIHO029 # Heating bundle
# PRODUCTID_MIHO030
# PRODUCTID_MIHO031
PRODUCTID_MIHO032 = 0x0C # FSK: Motion sensor
PRODUCTID_MIHO033 = 0x0D # FSK: Open sensor
# PRODUCTID_MIHO034
# PRODUCTID_MIHO035
# PRODUCTID_MIHO036
# PRODUCTID_MIHO037 # Adaptor Plus Bundle
# PRODUCTID_MIHO038 # OOK: 2-gang socket Bundle
# PRODUCTID_MIHO039 # OOK: 2-gang socket Bundle black nickel
# PRODUCTID_MIHO040 # OOK: 2-gang socket Bundle chrome
# PRODUCTID_MIHO041 # OOK: 2-gang socket Bundle stainless steel
# PRODUCTID_MIHO069 # Wall thermostat
# PRODUCTID MIHO075 # OOK: Single Gang Light Dimmer in brushed nikel
# PRODUCTID MIHO076 # OOK: Single Gang Light Dimmer in polished chrome
# PRODUCTID MIHO077 # OOK: Single Gang Light Dimmer in brushed steel
# PRODUCTID MIHO087 # OOK: Single Gang Light Dimmer in brushed graphite
# Default keys for OpenThings encryption and decryption
CRYPT_PID = 242
CRYPT_PIP = 0x0100
def create_device(deviceId, productId):
if(productId == PRODUCTID_MIHO032):
Domoticz.Log("Creating Motion Sensor Id: [{}]"
.format(deviceId))
Domoticz.Unit(Name="Motion Sensor", DeviceID=deviceId, Unit=1,
TypeName="Switch", Type=244, Subtype=73, Switchtype=8,
Description="MIHO032 Infra red Motion Sensor").Create()
elif(productId == PRODUCTID_MIHO033):
Domoticz.Log("Creating Door Sensor Id: [{}]"
.format(deviceId))
Domoticz.Unit(Name="Door Sensor", DeviceID=deviceId, Unit=1,
TypeName="Switch", Type=244, Subtype=73, Switchtype=11,
Description="MIHO033 Door Sensor").Create()
def update_device(deviceId, devices, productId, message, rssi):
if(Common.deviceAndUnitExists(devices, deviceId, 1)):
if(productId == PRODUCTID_MIHO032):
motionRecord = Common.findRecord(
message, OpenThings.PARAM_MOTION_DETECTOR)
# TODO map 0 value
Domoticz.Debug("Updating Motion Sensor Id: [{0}] Status: [{1}]"
.format(deviceId, str(motionRecord["value"])))
devices[deviceId].Units[1].nValue = int(motionRecord["value"])
devices[deviceId].Units[1].sValue = str(motionRecord["value"])
devices[deviceId].Units[1].SignalLevel = rssi
devices[deviceId].Units[1].Update(Log=True)
elif(productId == PRODUCTID_MIHO033):
Domoticz.Debug("Updating Door Sensor Id: [{}]"
.format(deviceId))
doorRecord = Common.findRecord(message, OpenThings.PARAM_DOOR_SENSOR)
devices[deviceId].Units[1].nValue = int(doorRecord["value"])
devices[deviceId].Units[1].sValue = str(doorRecord["value"])
devices[deviceId].Units[1].SignalLevel = rssi
devices[deviceId].Units[1].Update(Log=True)
else:
Domoticz.Error("Unable to resolve Device Id: []" + deviceId)