Hallo,
ich schreibe zur Zeit ja an der Anbindung der Homebridge über WebHooks an IPS. (Apple HomeKit über IP-Symcon WebHook)
Nun habe ich folgendes vor, da man zur Zeit den WebHook immer per Hand anpassen musse, würde ich gerne ein kleines PHP Modul dafür schreiben, welches genau diese Aufgabe übernimmt, ob das so möglich ist weiß ich nicht, daher hier mal meine Überlegung…
Der WebHook wird so aufgebaut:
<?
switch ($_GET["action"]) {
case "get":
switch ($_GET["device"]) {
case "TVBuero":
echo GetValue(39504 /*[zwave-Module\WG\Stecker Büro (031)\Status]*/);
break;
case "Flur Temperatur":
echo GetValue(47209 /*[zwave-Module\Rauchmelder\Z-Wave Rauch Flur (NodeID 045)\Wert\Temperature]*/);
break;
case "Sterne":
echo GetValue(45652 /*[zwave-Module\WG\Z-Wave Dimmer (NodeID 043)\Status]*/);
if($_GET["brightness"] == "1") {
echo GetValue(36873 /*[zwave-Module\WG\Z-Wave Dimmer (NodeID 043)\Intensität]*/);
}
break;
case "Wohnzimmer Decke":
echo GetValue(31296 /*[zwave-Module\WG\UP Wohn(035)\Status]*/);
break;
case "Luftfeuchtigkeit Badezimmer":
echo GetValue(23228 /*[LCN-Module\022-ix Boden Bad\Values (0, 22)\03 Feuchte]*/);
break;
case "Thermostat Balkon":
if (isset($_GET["CurrentHeatingCoolingState"])) {
echo GetValue(34095 /*[zwave-Module\WG\Z-Wave Thermostat Wohn (NodeID 051)\Modus]*/);
}
if (isset($_GET["TargetHeatingCoolingState"])) {
echo GetValue(34095 /*[zwave-Module\WG\Z-Wave Thermostat Wohn (NodeID 051)\Modus]*/);
}
if (isset($_GET["CurrentTemperature"])) {
echo GetValue(19317 /*[zwave-Module\WG\Z-Wave Thermostat Wohn (NodeID 051)\Wert\Temperature]*/);
}
if (isset($_GET["TargetTemperature"])) {
echo GetValue(56056 /*[zwave-Module\WG\Z-Wave Thermostat Wohn (NodeID 051)\SetPoint (Heating)]*/);
}
break;
}
break;
case "setOn":
switch ($_GET["device"]) {
case "TVBuero":
ZW_SwitchMode(50077 /*[zwave-Module\WG\Stecker Büro (031)]*/, true);
echo GetValue(39504 /*[zwave-Module\WG\Stecker Büro (031)\Status]*/);
break;
case "Wohnzimmer Decke":
ZW_SwitchMode(13588 /*[zwave-Module\WG\UP Wohn(035)]*/, true);
echo GetValue(31296 /*[zwave-Module\WG\UP Wohn(035)\Status]*/);
break;
case "Sterne":
ZW_SwitchMode(54766 /*[zwave-Module\WG\Z-Wave Dimmer (NodeID 043)]*/,true);
break;
}
break;
case "setOff":
switch ($_GET["device"]) {
case "TVBuero":
ZW_SwitchMode(50077 /*[zwave-Module\WG\Stecker Büro (031)]*/, false);
echo GetValue(39504 /*[zwave-Module\WG\Stecker Büro (031)\Status]*/);
break;
case "Wohnzimmer Decke":
ZW_SwitchMode(13588 /*[zwave-Module\WG\UP Wohn(035)]*/, false);
echo GetValue(31296 /*[zwave-Module\WG\UP Wohn(035)\Status]*/);
break;
case "Sterne":
ZW_SwitchMode(54766 /*[zwave-Module\WG\Z-Wave Dimmer (NodeID 043)]*/, false);
echo GetValue(45652 /*[zwave-Module\WG\Z-Wave Dimmer (NodeID 043)\Status]*/);
break;
}
case "setBrightness":
switch ($_GET["device"]) {
case "Sterne":
ZW_DimSet(54766 /*[zwave-Module\WG\Z-Wave Dimmer (NodeID 043)]*/,$_GET["Intensity"]);
break;
}
case "setThermostat":
switch ($_GET["device"]) {
case "Thermostat Balkon":
if (isset($_GET["State"])) {
ZW_ThermostatModeSet(46464 /*[zwave-Module\WG\Z-Wave Thermostat Wohn (NodeID 051)]*/, $_GET["State"]);
}
if (isset($_GET["TargetTemperature"])) {
ZW_ThermostatSetPointSet(46464 /*[zwave-Module\WG\Z-Wave Thermostat Wohn (NodeID 051)]*/, 1, $_GET["TargetTemperature"]);
}
}
}
?>
Ich würde gerne ein Modul schreiben, wo ich in einer Form alle Geräte auswählen kann, die in den WebHook intergriert werden sollen.
Also wenn ich zum Beispiel einen Thermostaten im Modul auswähle müsste folgendes im WebHook angelegt werden:
Unter dem case „get“:
case "Thermostat Balkon":
if (isset($_GET["CurrentHeatingCoolingState"])) {
echo GetValue(34095 /*[zwave-Module\WG\Z-Wave Thermostat Wohn (NodeID 051)\Modus]*/);
}
if (isset($_GET["TargetHeatingCoolingState"])) {
echo GetValue(34095 /*[zwave-Module\WG\Z-Wave Thermostat Wohn (NodeID 051)\Modus]*/);
}
if (isset($_GET["CurrentTemperature"])) {
echo GetValue(19317 /*[zwave-Module\WG\Z-Wave Thermostat Wohn (NodeID 051)\Wert\Temperature]*/);
}
if (isset($_GET["TargetTemperature"])) {
echo GetValue(56056 /*[zwave-Module\WG\Z-Wave Thermostat Wohn (NodeID 051)\SetPoint (Heating)]*/);
}
break;
Und unter dem case „setThermostat“:
case "setThermostat":
switch ($_GET["device"]) {
case "Thermostat Balkon":
if (isset($_GET["State"])) {
ZW_ThermostatModeSet(46464 /*[zwave-Module\WG\Z-Wave Thermostat Wohn (NodeID 051)]*/, $_GET["State"]);
}
if (isset($_GET["TargetTemperature"])) {
ZW_ThermostatSetPointSet(46464 /*[zwave-Module\WG\Z-Wave Thermostat Wohn (NodeID 051)]*/, 1, $_GET["TargetTemperature"]);
}
}
Ist sowas möglich? Wenn ja hat evtl. jemand einen Ansatz für mich, wie ich anfangen müsste?
Grüße,
Kai