Das wäre super nett! Ich habe einfach Probleme IPS ohne passende Geräte/Module zu verstehen. Meine jetzigen Geräte muss ich halt alle „manuell“ einbinden.
Das Aktionsscript muss ich einmal Manuell ausführen, damit der Timer gesetzt wird? Wie ist das dann nach einem IPS neustart?
Funktionen die ich bisher implementiert habe:
$result = HP_getFullAllDevicesStatus(); // dauert ca. 1000ms (Array 1zu1 unformatiert wie es vom HomePilot kommt)
HP_getFullDeviceStatusStandAlone($deviceID); // ca. 100ms schneller als HP_getFullAllDevicesStatus()
HP_getFullDeviceStatus($deviceID, $result); //Array mit einem Gerät 1zu1 unformatiert
HP_getDeviceBugStatus($result); //Liest Fehlerstatus aus einem Gerät (returnt ein Array)
HP_getDeviceAutomation($result); //Liest Automationen aus einem Gerät (returnt ein Array)
HP_getDevicePosition($result); //Liest Pos aus einem Gerät (returnt ein Array)
HP_getDeviceSwitchingState($result); // //Liest Zustand aus (Steckdose): pos=100 -> an und pos=0 -> aus (returnt ein Array)
HP_getDeviceInfo($result); //Liest Namen und Beschreibung aus (returnt ein Array)
HP_getReturnAsBoolean($result); //Liesst Status aus Array aus - bei Erfolg true und bei Fehler false
HP_setDeviceCommand($deviceID, POSITION_N, 50); //Command (returnt ein Array)
HP_setDevicePosition($deviceID, 100); //Command für Rollo (returnt ein Array)
HP_setDeviceSwitchingState($deviceID, AUS); //Command Steckdose (returnt ein Array)
HP_setDeviceAutomation($deviceID , MORGENDAEMMERUNG, AN); // Rollo Automationstasten (returnt ein Array)
Ich wollte immer den Status aller Geräte abrufen (HP_getFullAllDevicesStatus), da dies 1000ms dauert. Wenn ich
den Status einzeln für jedes Gerät abrufen würde, dauert das pro Gerät 900ms und das bei 20 Rollos… Der
HomePilot (Gerät welches ich über http ansteure) wäre über die vielen Anfragen wohl auch nicht begeistert.
Beispielscript Position setzen:
<?
require_once("50358.ips.php"); //[HomePilot\HomePilot Controller]
$result = HP_setDevicePosition(10015 , 100); //Rollo
//$result = HP_setDeviceCommand($deviceID, POSITION_N, 50); //identisch zu oberen
print_r(HP_getReturnAsBoolean($result) ? 'Status: OK' : 'Status: FEHLER');
?>
Beispielscript Position abfragen:
<?
require_once("50358.ips.php"); //[HomePilot\HomePilot Controller]
$result = HP_getFullAllDevicesStatus();
$result = HP_getFullDeviceStatus(10015, $result);
$result = HP_getDevicePosition($result);
print_r(HP_getReturnAsBoolean($result) ? 'Status: OK' : 'Status: FEHLER');
//$devicePos = $result['Position'];
?>
Mein Ziel für jedes Rollo (Ich hoffe das das so Sinn ergibt):
Dummy Instanz mit Variable Position (Schieberegeler), Morgendämmerung (Schalter), Abendämmerung (Schalter), Zeitsteuerung (Schalter), Manuellbetrieb (Schalter), Sonne (Schalter), Regen (Schalter), Wind (Schalter), Fehlerstatus (soll Position Icon ändern wenn Gerät Fehler hat)
Wenn ein Befehl nicht erfolgreich ausgeführt wurde oder Variable Fehlerstatus === true soll das Icon der Variable Position auf „Fehler“ geändert werden. Wenn nicht normales Icon.
Für die Automations-Schalter brauche ich dann ein eigenes Aktionsscript, aber nicht noch eine periodische Statusabfrage. Sollte ich „Position setzen“, „Automation setzen“ und „Statusabfrage“ in 3 eigene Scripte auslagern?
Vielen Dank!
Gruß Basti