Hallo Forenmitglieder
Nach einigem Tüfteln habe ich einen Workaround gefunden, wie man den Aeon Labs Multisensor mit IP Symcon (habe Ver. 2.7) zum Laufen bekommt. Die Betonung liegt aber auf ‚Workaround‘! Der ist nur so lange gut, bis IP Symcon das Gerät offiziell unterstützt (hoffentlich bald).
Bevor Ihr euch das Script reinzieht, bitte seid nachsichtig. Ich bin neu bei IP Symcon und PHP kenne ich auch nicht wirklich. Für Verbesserungsvorschläge bin ich immer dankbar.
Der Workaround hat folgende Einschränkungen:
[ul]
[li]Man kann die Werte nicht explizit abfragen, der Multisensor muss sie in regelmässigen Abständen schicken.
[/li][li]Es könnte spezielle Situationen geben, in denen die Werte nicht stimmen, z.B. wenn während das Script läuft, gerade die Sommerzeit wechseln würde, oder wenn IP Symcon ein Ereignis ‚verpasst‘. Die Werte sollten also nicht für Alarme verwendet werden, aber für eine Storensteuerung oder Lichtsteuerung reicht es allemal.
[/li][li]Es werden alle Werte im selben Intervall geschickt. Man kann leider nicht für jeden Wert ein anderes Intervall definieren, da IP Symcon (im Gegensatz zur Multisensor Dokumentation) nur eine Assoziationsgruppe anzeigt, anstatt deren drei.
[/li][/ul]
Ok, nun zum Workaround:
Man muss zuerst im Multisensor den Parameter 101 auf den Wert 224 setzen oder auf 225, wenn man den Batteriestatus ebenfalls in regelmässigen Abständen mitgeteilt bekommen möchte.
Dann muss man den Parameter 111 auf das Intervall in Sekunden setzen, in welchem die Werte vom Multisensor gesendet werden sollen (wegen dem Script mindestens 10 Sekunden zwingend). Bei Batteriebetrieb sind es sowieso automatisch mindestens 4 Minuten.
Der Multisensor sendet nun im definieren Intervall drei Werte der Klasse 31, welche von IP Symcon offensichtlich als ‚Value‘ Statusvariable interpretiert werden. Die Variable ‚Value‘ wird also drei Mal hintereinander überschrieben. Der erste Wert definiert die Helligkeit, der zweite die Feuchtigkeit und der dritte die Temperatur.
Nun legen wir unter dem Multisensor vier neue Variablen an, Helligkeit (int), Feuchtigkeit (int), Temperatur (float) und Counter (int). Wir erstellen noch ein Ereignis, welches bei jeder Aktualisierung der Statusvariable ‚Value‘ das Script startet.
Und hier das Script:
Die Ids der Variablen müsst ihr natürlich entsprechend eurer Installation anpassen.
<?
$obj = IPS_GetVariable(23029 /*[Counter]*/);
if (time()-$obj['VariableUpdated']>5)
//In case the counter gets 'out of sync'
$counter=1;
else
$counter = $obj["VariableValue"]["ValueInteger"];
if ($counter<3)
{
if ($counter<2)
{ //Luminance
$obj = IPS_GetVariable(37573 /*[Aeon Labs Multisensor Value]*/);
$value = $obj["VariableValue"]["ValueFloat"];
SetValueInteger(42305 /*[Variable Liminance]*/,$value);
}
else
{ //Humidity
$obj = IPS_GetVariable(37573 /*[Aeon Labs Multisensor Value]*/);
$value = $obj["VariableValue"]["ValueFloat"];
SetValueInteger(43301 /*[Variable Humidity]*/,$value);
}
SetValueInteger(23029 /*[Counter]*/,$counter+1);
}
else
{ //Temperature
$obj = IPS_GetVariable(37573 /*[Aeon Labs Multisensor Value]*/);
$value = $obj["VariableValue"]["ValueFloat"];
SetValueFloat(39157 /*[Variable Temperature]*/,$value);
SetValueInteger(23029 /*[Counter]*/,1);
}
?>
Viel Spass!