enstanden ist das Skript fuer die Zeitsteuerung des Automower der 1 Generation
Der Automower wird einfach über die Steckdose ein oder Ausgeschaltet ,da die Service Schnittstelle keine Daten liefert (Frust) .
Was war das Problem.
Über den Skript Timer habe ich morgens die Steckdose eingeschaltet und Abends wieder Aus also gar kein Problem.
Leider hat der Automower kein Regensensor ist ja auch von 1998 . Aber das wollte ich ihm beibringen . Bei Regen nicht zu arbeiten.
Also musste ich eine Möglichkeit suchen diese beiden Zustande in ein skrtipt zu packen.
Dazu kommt die Hand-Auto-Aus Bedienung .
so hier das Skript
<?
$EreignisIDon = 27448 /*[Zimmer\Garten\Automower\]*/ ;
$EreignisInfoon = IPS_GetEvent($EreignisIDon);
$EreignisIDoff = 12430 /*[Zimmer\Garten\Automower\]*/ ;
$EreignisInfooff = IPS_GetEvent($EreignisIDoff);
$uhrzeit_on = date("H:i","$EreignisInfoon[NextRun]");
$uhrzeit_off = date("H:i","$EreignisInfooff[NextRun]");
$day_zsp= ($EreignisInfoon['CyclicDateDay']);
$binweekday = str_pad(decbin($day_zsp), 7 ,'0', STR_PAD_LEFT);
$time = date("H:i:s:M:D:m:d"); //aktuelle Uhrzeit H:i:s:M:D:m:d
$szene = GetValueString(24028 /*[Trent\Wetter\Heute]*/ ); // Wetter vorhersage Underground
$betiebsart = GetValue(42529 /*[Zimmer\Garten\Betriebsart]*/ ); // Hand 0 Auto
$timestamp = date("H:i"); //
$uhrzeit_ein = date($timestamp); // letzter Einschaltbefehl
$uhrzeit_aus = date($timestamp); // letzter Ausschaltbefehl
$Tag = date("D"); // abfrage welcher Tag
$betriebstunden = time($uhrzeit_aus - $uhrzeit_ein) ;
SetValueString(11573 /*[Zimmer\Garten\Automower\Betriebstunden xTag]*/ , date("H:i",$betriebstunden) );
if (($betiebsart == 0 )||($time > $uhrzeit_off ) || ($time <= $uhrzeit_on) || (($szene == "Leichter Regen") or ($szene == "Regen") or ($szene == "Nieselregen") or ($szene == "Gewitterschauer"))) // bei Bedarf anpassen
{
HM_WriteValueBoolean(43162 /*[HomeMatic Socket\Automower]*/, "STATE", false); //Gerät ausschalten
SetValueString(36114 /*[Zimmer\Garten\Automower\Schaltbefehl aus]*/ ,$uhrzeit_aus);
}
else
{
if (($Tag == $binweekday[6]) || ($Tag == $binweekday[5]) || ($Tag == $binweekday[4]) || ($Tag == $binweekday[3]) || ($Tag == $binweekday[2]) || ($Tag == $binweekday[1]) || ($Tag == $binweekday[1]))
{
HM_WriteValueBoolean(43162 /*[HomeMatic Socket\Automower]*/, "STATE", true); //Gerät einschalten
SetValueString(44902 /*[Zimmer\Garten\Automower\Schaltbefehl Ein]*/ ,$uhrzeit_ein);
}
}
if ($betiebsart == 1 )
{
HM_WriteValueBoolean(43162 /*[HomeMatic Socket\Automower]*/, "STATE", true); //Gerät ausschalten
SetValueString(36114 /*[Zimmer\Garten\Automower\Schaltbefehl aus]*/ ,$uhrzeit_ein);
}
if ($betiebsart == 2 )
{
HM_WriteValueBoolean(43162 /*[HomeMatic Socket\Automower]*/, "STATE", false); //Gerät einschalten
SetValueString(44902 /*[Zimmer\Garten\Automower\Schaltbefehl Ein]*/ ,$uhrzeit_aus);
}
?>
Skript wird bei Anderung Wetter und Betriebsart ausgeführt .
Eine andere Möglichkeit flexible Zeitschalt Programme zu benutzen
Skript ist ohne Schleifen da PHP nicht meine Stärke .
MFG JENS