Skip to content

Commit 66cbd3c

Browse files
committed
Homebridge sync update
1 parent 4ff50ce commit 66cbd3c

File tree

4 files changed

+268
-254
lines changed

4 files changed

+268
-254
lines changed

modules/devices/devices_links_actions.inc.php

Lines changed: 1 addition & 249 deletions
Original file line numberDiff line numberDiff line change
@@ -8,255 +8,7 @@
88

99
if (!$device1['SYSTEM_DEVICE'] && !$device1['ARCHIVED'] && $this->isHomeBridgeAvailable()) {
1010
// send updated status to HomeKit
11-
$payload = array();
12-
$payload['name'] = $device1['LINKED_OBJECT'];
13-
$payload['service_name'] = $device1['TITLE'];
14-
15-
$payload2 = array();
16-
$payload2['name'] = $device1['LINKED_OBJECT'];
17-
$payload2['service_name'] = $device1['TITLE'];
18-
19-
//DebMes("Homebridge Update ".$device1['LINKED_OBJECT']." (".$device1['TYPE']."): ".gg($device1['LINKED_OBJECT'] . '.status')." / ".gg($device1['LINKED_OBJECT'] . '.value'),'homebridge');
20-
21-
switch ($device1['TYPE']) {
22-
case 'relay':
23-
$load_type = gg($device1['LINKED_OBJECT'] . '.loadType');
24-
if ($load_type == 'light') $payload['service'] = 'Lightbulb';
25-
elseif ($load_type == 'vent') $payload['service'] = 'Fan';
26-
elseif ($load_type == 'switch') $payload['service'] = 'Switch';
27-
else $payload['service'] = 'Outlet';
28-
$payload['characteristic'] = 'On';
29-
if (gg($device1['LINKED_OBJECT'] . '.status')) {
30-
$payload['value'] = true;
31-
} else {
32-
$payload['value'] = false;
33-
}
34-
break;
35-
case 'sensor_temp':
36-
$payload['service'] = 'TemperatureSensor';
37-
$payload['characteristic'] = 'CurrentTemperature';
38-
$payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');
39-
break;
40-
case 'sensor_co2':
41-
$payload['service'] = 'CarbonDioxideSensor';
42-
$payload['characteristic'] = 'CarbonDioxideLevel';
43-
$payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');
44-
45-
$max_level=gg($device1['LINKED_OBJECT'] . '.maxValue');
46-
if (!$max_level) {
47-
$max_level=1200;
48-
}
49-
$payload2['service'] = 'CarbonDioxideSensor';
50-
$payload2['characteristic'] = 'CarbonDioxideDetected';
51-
if ($payload['value']>=$max_level) {
52-
$payload2['value'] = "1";
53-
} else {
54-
$payload2['value'] = "0";
55-
}
56-
break;
57-
case 'sensor_humidity':
58-
$payload['service'] = 'HumiditySensor';
59-
$payload['characteristic'] = 'CurrentRelativeHumidity';
60-
$payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');
61-
break;
62-
case 'motion':
63-
$payload['service'] = 'MotionSensor';
64-
$payload['characteristic'] = 'MotionDetected';
65-
if (gg($device1['LINKED_OBJECT'] . '.status')) {
66-
$payload['value'] = true;
67-
} else {
68-
$payload['value'] = false;
69-
}
70-
break;
71-
case 'smoke':
72-
$payload['service'] = 'SmokeSensor';
73-
$payload['characteristic'] = 'SmokeDetected';
74-
if (gg($device1['LINKED_OBJECT'] . '.status')) {
75-
$payload['value'] = true;
76-
} else {
77-
$payload['value'] = false;
78-
}
79-
break;
80-
case 'leak':
81-
$payload['service'] = 'LeakSensor';
82-
$payload['characteristic'] = 'LeakDetected';
83-
if (gg($device1['LINKED_OBJECT'] . '.status')) {
84-
$payload['value'] = true;
85-
} else {
86-
$payload['value'] = false;
87-
}
88-
break;
89-
case 'sensor_light':
90-
$payload['service'] = 'LightSensor';
91-
$payload['characteristic'] = 'CurrentAmbientLightLevel';
92-
$payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');
93-
break;
94-
case 'openclose':
95-
$payload['service'] = 'ContactSensor';
96-
$payload['characteristic'] = 'ContactSensorState';
97-
$nc = gg($device1['LINKED_OBJECT'] . '.ncno') == 'nc';
98-
$payload['value'] = $nc ? 1 - gg($device1['LINKED_OBJECT'] . '.status') : gg($device1['LINKED_OBJECT'] . '.status');
99-
break;
100-
case 'openable':
101-
$open_type = gg($device1['LINKED_OBJECT'] . '.openType');
102-
if ($open_type == 'gates') {
103-
$payload['service'] = 'GarageDoorOpener';
104-
} elseif ($open_type == 'door') {
105-
$payload['service'] = 'Door';
106-
} elseif ($open_type == 'window') {
107-
$payload['service'] = 'Window';
108-
} elseif ($open_type == 'curtains') {
109-
$payload['service'] = 'WindowCovering';
110-
} elseif ($open_type == 'shutters') {
111-
$payload['service'] = 'WindowCovering';
112-
}
113-
if ($payload['service']) {
114-
if ($open_type == 'gates') {
115-
if (gg($device1['LINKED_OBJECT'] . '.status')) {
116-
$payload['value'] = "1";
117-
} else {
118-
$payload['value'] = "0";
119-
}
120-
121-
$payload['characteristic'] = 'CurrentDoorState';
122-
if ($debug_sync) {
123-
DebMes("MQTT to_set : " . json_encode($payload), 'homebridge');
124-
}
125-
sg('HomeBridge.to_set', json_encode($payload));
126-
/*
127-
if ($debug_sync) {
128-
DebMes("MQTT to_set : " . json_encode($payload), 'homebridge');
129-
}
130-
$payload['characteristic'] = 'TargetDoorState';
131-
*/
132-
133-
unset($payload['service']);
134-
} elseif ($open_type == 'door' || $open_type == 'window' || $open_type == 'curtains' || $open_type == 'shutters') {
135-
$payload['characteristic'] = 'CurrentPosition';
136-
if (gg($device1['LINKED_OBJECT'] . '.status')) {
137-
$payload['value'] = "0";
138-
} else {
139-
$payload['value'] = "100";
140-
}
141-
if ($debug_sync) {
142-
DebMes("MQTT to_set : " . json_encode($payload), 'homebridge');
143-
}
144-
sg('HomeBridge.to_set', json_encode($payload));
145-
$payload['characteristic'] = 'TargetPosition';
146-
sg('HomeBridge.to_set', json_encode($payload));
147-
unset($payload['service']);
148-
}
149-
}
150-
break;
151-
case 'rgb':
152-
$payload['service'] = 'Lightbulb';
153-
sg('HomeBridge.to_add', json_encode($payload));
154-
155-
$payload['characteristic'] = 'On';
156-
if (gg($device1['LINKED_OBJECT'] . '.status')) {
157-
$payload['value'] = true;
158-
} else {
159-
$payload['value'] = false;
160-
}
161-
sg('HomeBridge.to_set', json_encode($payload));
162-
163-
$payload['characteristic'] = 'Hue';
164-
$payload['value'] = gg($device1['LINKED_OBJECT'] . '.hue');
165-
sg('HomeBridge.to_set', json_encode($payload));
166-
167-
$payload['characteristic'] = 'Saturation';
168-
$payload['value'] = gg($device1['LINKED_OBJECT'] . '.saturation');
169-
sg('HomeBridge.to_set', json_encode($payload));
170-
171-
$payload['characteristic'] = 'Brightness';
172-
$payload['value'] = gg($device1['LINKED_OBJECT'] . '.brightness');
173-
sg('HomeBridge.to_set', json_encode($payload));
174-
unset($payload['service']);
175-
break;
176-
case 'ledlamp':
177-
$payload['service'] = 'Lightbulb';
178-
sg('HomeBridge.to_add', json_encode($payload));
179-
180-
$payload['characteristic'] = 'On';
181-
if (gg($device1['LINKED_OBJECT'] . '.status')) {
182-
$payload['value'] = true;
183-
} else {
184-
$payload['value'] = false;
185-
}
186-
sg('HomeBridge.to_set', json_encode($payload));
187-
188-
189-
$payload['characteristic'] = 'Brightness';
190-
$payload['value'] = gg($device1['LINKED_OBJECT'] . '.brightness');
191-
sg('HomeBridge.to_set', json_encode($payload));
192-
unset($payload['service']);
193-
break;
194-
195-
case 'thermostat':
196-
$payload['characteristic'] = 'CurrentTemperature';
197-
$payload['value'] = gg($device1['LINKED_OBJECT'] . '.value');
198-
sg('HomeBridge.to_set', json_encode($payload));
199-
200-
$payload['characteristic'] = 'TargetTemperature';
201-
$payload['value'] = gg($device1['LINKED_OBJECT'] . '.currentTargetValue');
202-
sg('HomeBridge.to_set', json_encode($payload));
203-
$payload['characteristic'] = 'CurrentHeatingCoolingState'; //off = 0, heat = 1, and cool = 2, auto = 3
204-
if (!gg($device1['LINKED_OBJECT'] . '.disabled')) {
205-
if (gg($device1['LINKED_OBJECT'] . '.status')) {
206-
$payload['value'] = 1;
207-
} else {
208-
$payload['value'] = 2;
209-
}
210-
} else {
211-
$payload['value'] = 0;
212-
}
213-
break;
214-
/*
215-
case 'sensor_battery':
216-
$payload['service']='BatteryService';
217-
sg('HomeBridge.to_add',json_encode($payload));
218-
// Characteristic.BatteryLevel;
219-
// Characteristic.ChargingState; 0 - NOT_CHARGING, 1 - CHARGING, 2 - NOT_CHARGEABLE
220-
// Characteristic.StatusLowBattery;
221-
$payload['characteristic'] = 'BatteryLevel';
222-
$payload['value']=gg($device1['LINKED_OBJECT'].'.value');
223-
sg('HomeBridge.to_set',json_encode($payload));
224-
225-
$payload['characteristic'] = 'ChargingState';
226-
$payload['value']=2;
227-
sg('HomeBridge.to_set',json_encode($payload));
228-
229-
$payload['characteristic'] = 'StatusLowBattery';
230-
$payload['value']=gg($device1['LINKED_OBJECT'].'.normalValue') ? 0 : 1;
231-
sg('HomeBridge.to_set',json_encode($payload));
232-
233-
break;
234-
*/
235-
}
236-
if (isset($payload['service'])) {
237-
$hmName = 'hmb:'.$payload['name'];
238-
$payload_encoded = json_encode($payload);
239-
$hmValue = md5($payload_encoded);
240-
if (checkFromCache($hmName)!=$hmValue) {
241-
saveToCache($hmName, $hmValue);
242-
if ($debug_sync) {
243-
DebMes("MQTT to_set : " . $payload_encoded, 'homebridge');
244-
}
245-
sg('HomeBridge.to_set', $payload_encoded);
246-
}
247-
}
248-
if (isset($payload2['service'])) {
249-
$hmName = 'hmb:'.$payload2['name'];
250-
$payload2_encoded = json_encode($payload2);
251-
$hmValue = md5($payload2_encoded);
252-
if (checkFromCache($hmName)!=$hmValue) {
253-
saveToCache($hmName, $hmValue);
254-
if ($debug_sync) {
255-
DebMes("MQTT to_set : " . $payload2_encoded, 'homebridge');
256-
}
257-
sg('HomeBridge.to_set', $payload2_encoded);
258-
}
259-
}
11+
require DIR_MODULES.'devices/homebridgeSendUpdate.inc.php';
26012
}
26113
endMeasure('homebridge_update');
26214

0 commit comments

Comments
 (0)