Brauche eure Hilfe!
Ich habe auf meiner Übersichtsseite ein Feld mit der Bezeichnung „Meldungen“ freigelassen. Dort möchte ich situationsabhängige Texte anzeigen lassen z.B. „Waschmaschine läuft“, „Gartentüre ist offen“, „Bewässerung aktiv“ usw. Diese Meldungen sollen aber nur angezeigt werden, wenn ein bestimmter Status erreicht ist (boolean true). Soweit ist dies ja mit dem IPS-Studio ohne Probleme umsetzbar. Was ich aber nicht hinbekomme ist, das sich die Texte untereinander anreihen. Wenn also die Waschmaschine läuft und die Gartentüre offen ist, sollen diese beiden Text in jeweils einer Zeile stehen:
-Waschmaschine läuft
-Gartentüre ist offen
-Bewässerung aktiv
Wenn jetzt die Gartentüre geschlossen wird, soll die Bewässerung eine Zeile nach oben wandern und die Gartentüre nicht mehr aufscheinen:
-Waschmaschine läuft
-Bewässerung aktiv
Das Skript ist (fast) genau das Skript, welches ich gesucht habe.
Jetzt hab ich nur folgendes Problem: Wenn z.B. die Waschmaschine läuft und eine Meldung ausgibt „Waschmaschine aktiv“ und diese dann das Programm beendet hat, wie kann ich dann die Meldung wieder automatisch löschen lassen? Ich weiß ja im vorhinein die Meldungsnummer nicht?
das geht schon, du bekommst die Nummer als Resultat des ausgeführten Skripts zurück.
IPS_RunScriptWaitEx(…) liefert dann z.B. 1234 - das ist die Nummer um mit „remove“ die Meldung wieder zu löschen.
Also ich hab mir das jetzt nochmals angesehen.
Wie das mit der Meldungsnummer funktioniert, musst du mir bitte nochmals erklären. Beispiel: Die Waschmaschine gibt die Meldung „Waschmaschine aktiv“ aus. Es wird z.B. die Meldungsnummer 8 erzeugt. Danach wird der Geschirrspüler aktiviert, dieser erhält die Meldungsnummer 9 und danach wird der Wäschetrockner eingeschalten = Meldungsnummer 10. Wenn jetzt nach 2 Stunden die Waschmaschine fertig ist, soll die Meldung in der Meldungsliste „Waschmaschine aktiv“ herausgelöscht werden. Es stehen dann nur mehr der Geschirrspüler und der Wäschetrockner in der Liste. Wo bekomme ich jetzt nach 2 Stunden die Meldungsnummer 8 für die Waschmaschine her? Des weiteren brauche ich die Meldung als String-Variable ohne weitere Daten, da ich die Meldungen nicht im Webfront, sondern im IPSView verwende.
Sorry, mit IPSView kenne ich mich nicht aus - habe ich nicht!
Du wirst Dir wohl die Nummer beim Aktivieren merken/wegspeichern müssen
Läuft den die Aktivierung/Deaktivierung der einzelnen Geräte (Wachmaschine usw.) über eigene seperate Scripts? Dann sollte das ja nicht so aufwendig sein.
Ja, ich habe ein Skript welches den Stromverbrauch erkennt und dann auf „Aktiv“ oder „Fertig“ schaltet.
Bezüglich Meldungstext bräuchte ich eigentlich nur eine String-Variable (ohne Formatierung für das WebFront) mit dem Text, diesen kann ich dann ganz einfach in IPSView einbinden.
Okay, dann lege doch eine Variable an, in die du dann bei „Aktiv“ die Meldungsnummer reinschreibst und bei „Fertig“ diese ausließt und die Meldung löschen kannst.
Heißt das, Du brauchst das Meldungsscript Zeugs gar nicht? Bin verwirrt Was für ein Text brauchst Du?
Klingt einfach Könntest du mir hier etwas behilflich sein, wie ich das umsetzen kann
Ich brauche das Skript aus dem Grund, weil ich bei IPSView zwar ein Textfeld mit einer bestimmten String-Variable ganz einfach einfügen kann, wenn ich aber bestimmte Texte wieder löschen möchte, kann ich das nicht (bzw. wüsste ich nicht wie das geht). Ich hoffe, ich habe es halbwegs verständlich erklärt.
Da ich nicht viel über Dein Script weiß, welches den Stromverbrauch überwacht versuche ich es einfach mal ins „blaue“ hinein.
Ich würde eine Integer (Hilfs-)Variable unterhalb des Scripts anlegen (so mach ich es jedenfalls immer) - z.B. MSG_WM (für Message# Waschmaschine).
Die Object-ID dieser Variable würde ich mir im Script hinterlegen, z.B. $id_msg_wm = 12345; // natürlich die reale ID
An der Stelle wo Du das Script zur Erzeugung des Meldungstextes muss es dann irgendwie so aussehen:
$msg_num = IPS_RunScriptWaitEx(11111 , array(‚action‘ => ‚add‘, ‚text‘ => ‚Aktiv‘, …
SetValue($id_msg_wm, $msg_num);
Somit ist die Meldungs-Nummer gesichert
An der Stelle wo Du in deinem Script die Meldung wieder löschen willst, muss es dann irgendwie so aussehen:
$msg_num = GetValue($id_msg_wm);
IPS_RunScriptWaitEx(11111 , array(‚action‘ => ‚remove‘, ‚number‘ => $msg_num, …
Ist jetzt schnell mal aus der Hüfte geschossen, aber vom Prinzip her sollte es so passen/gehen. Kannste damit was anfangen?