ich versuche seit Wochen ein Startbildschirm mit folgendem Inhalt zu realisieren.
Ich möchte eine Statusseite erstellen, um auf einem Blick zu sehen wieviele Fenster/Türen
sind geöffnet, gekippt oder geschlossen. Auch interessiert mich wieviele Rollläden sind geschlossen,
angehallten oder geöffnet. Wieviele Leuchten sind AN oder Aus. Vorgestellt habe ich mir eine Liste
mit folgendem Inhalt:
Dies ist ein Beispiel. Die Werte sollten sich automatisch abgleichen.
Schön wäre noch bei Auswahl Türen/Fenster geöffnet (zum Beispiel), eine Anzeige der
geöffneten Fenster/Türen öffnet.
Ich benutze nur Enocean. Den Status der Fenster/Türen bekomme ich durch Hoppe Fenstergriffe.
Kann mir jemand helfen wie ich sowas Anfange/Realisiere?
Du must halt einen Array anlegen mit allen Deinen Geräten und dann jeweils prüfen welche Geräte gerade welchen Status haben.
Als Beispiel für Lampen
// Objekt IDs aller Lampen
$lamps = [
47597 /*[Geräte\Homematic\Räume\Büro\Arbeitszimmer\Zustand]*/,
24979 /*[Geräte\Homematic\Räume\Schlafzimmer\Schlafzimmer Wandschrank\Zustand]*/,
55985 /*[Geräte\Homematic\Räume\Bad\Bad Deckenlampe\Zustand]*/
];
$lamps_on = 0;
$lamps_off = 0;
$lamps_arr_on = [];
$lamps_arr_off = [];
foreach($lamps as $lamp)
{
$state = GetValue($lamp);
if($state)
{
$lamps_on++;
$lamps_arr_on[] = $lamp;
}
else
{
$lamps_off++;
$lamps_arr_off[] = $lamp;
}
}
echo "Es sind ".$lamps_on." Lampen eingeschaltet.
";
echo "Es sind ".$lamps_off." Lampen ausgeschaltet.
";
echo "Es sind die Lampen ";
foreach($lamps_arr_on as $lamp)
{
echo IPS_GetName(IPS_GetParent($lamp))."
";
}
echo " eingeschaltet.
";
echo "Es sind die Lampen ";
foreach($lamps_arr_off as $lamp)
{
echo IPS_GetName(IPS_GetParent($lamp))."
";
}
echo " ausgeschaltet.
";
Wie Du die Variablen dann darstellst ist dann ja Dir überlassen, Du kannst die Werte in einzelne Variablen schreiben und diese dann in IPSView anordnen oder aber die Werte als Tabelle in eine String Variable mit Profil ~HTMLBox schreiben.
Dazu must Du auf alle Variablen, die Du prüfen willst, ein Ereigniss legen, dass bei Variablenänderung Dein Skript auslöst. Dann zählt Dein Skript zu dem Zeitpunkt die Anzahl der Lampen durch, die an bzw. aus sind und erstellt Dir eine Liste der Lampen die an/aus sind.
Das gleiche machst Du für Deine anderen Geräte, nur das Du da dann halt auf drei Werte prüfst und nicht nur auf true/false, wie bei einer Lampe.
Super, mit Licht hat das schon einmal geklappt.Danke
Jetzt habe ich es mit Fenstergriffe versucht. Script erweitert
auf 3 Zustände. Leider bekomme ich folgende Ausgabe:
Es sind 13 Fenster geöffnet.
Es sind 13 Fenster geschlossen.
Es sind 0 Fenster gekippt.
ich hab das Script jetzt nur überflogen, mein Tipp:
du prüfst zweimal ob $state „true“ ist, schreibst das ergebnis dann jeweils als offen und geschlossen weg.
Das kann ja nicht richtig sein ?! Ich kenn deine Statusvariable nicht, aber die muss ja 3 Zustände haben, z.B. 0,1,2, dadrauf musst du prüfen.
Ich finde den Ansatz von Ralf allerdings viel eleganter … danke für diesen Tip, das werd ich mir mal abspeichern für später
Gruß Julian
Edit:
Vielleicht hilft das:
wenn du Variablen prüfst geht das z.B. so: if ($variable == true) oder if ($variable == 4)
als Abkürzung verwendet man oft einfach nur if($variable), wenn die variable true ist, ist die Bedingung erfüllt, alles ausser 0 ist true. Das würde ich als Anfänger aber nicht machen, das verwirrt dich nur.
nach Rat von Fonzo habe ich mich an deine Lösung gesetzt (soll leichter sein).
Es funktioniert auch. Leider bekomme ich nur eine Meldung Licht an oder aus (nicht welche sind an oder aus).
Ich weiß auch nicht wie ich es mit drei Zustände (Fenster geöffnet/geschlossen/gekippt) hinbekomme.
Vieleicht kannst du mir ein wenig den Weg zeigen.
super das hat geklappt. Danke.
Meine Hoppe Fenstergriffe haben 4 Zustände:
0=geöffnet
1=gekippt
2=geöffnet
3=geschlossen.
Kann ich die Zustände 0 + 2 irgendwie zusammen fassen?
Je nachdem wie die Fenster geöffnet werden, bekomme ich mal 0 für geöffnet
und mal 2 für geöffnet.
Ich hatte es heute morgen gelesen. Leider bin ich im Programmieren nicht die hellste Leuchte.
Mein Hauptgebiet ist die Installation. Ich versuche aber die Lösungen / Lösungsvorschläge zu
verstehen und daraus zu lernen. Leider fehlt mir als selbständiger Elektromeister auch immer die
nötige Zeit. Ich Versuche jetzt mit meinen anderen Aufgaben (Rollläden, Steckdosen, Lüftungsstatus usw)
weiter zu kommen. Durch diese Lösungen, habe ich schon wieder etwas gelernt und hoffe wenn ich
fertig bin, dass sich das Wissen auch etwas gefestigt hat.
Für eure Hilfe aber gang lieben Dank.
Das echo macht ja eigentlich nur Sinn wenn Du das testen willst beim Skript ausführen, ansonsten würde ich den Wert (Anzahl) nur in eine Variable schreiben. Meldungen sind normal, auch wenn eine Variable geändert wird. Wenn Dich das stört kannst Du das unter Spezialschalter anzeigen das Watch für Variablen oder Skripte deaktivieren.