Situationsabhängige Meldungsanzeige

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

Wie geht sowas??
Danke für eure Unterstützung!

LG Peter

Hilft dir das weiter:
Meldungsanzeige im WebFront

macht soweit genau das was du willst.

gruß
bb

Bin gerade geschäftlich unterwegs und werds am Donnerstag testen, aber soweit ich jetzt gelesen habe, dürfte das genau das sein.

Danke!

Gesendet von meinem SM-A510F mit Tapatalk

Hi zusammen,

wollte das auch vorschlagen, Loewenkoenig war schneller :wink:

Habe daran ja auch etwas rumgebastelt und beigesteuert, also wenn Du weitere Ideen hast, melde Dich einfach! Würde das Teil gerne wieter ausbauen.

Ciao Pitti

Servus Pitti!

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? :confused:

Danke Peter

Servus Loewenkoenig,

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.

Ciao Heiko

kann man eine Meldung auch 2zeilig ausgeben, bevorzugt aus einer Textdatei ?
würde gerne mit anderen Programmen diese txt erzeugen

Habe gerade mal folgendes ausprobiert:

IPS_RunScriptWaitEx(12345, array(‚action‘ => ‚add‘, ‚text‘ => ‚ToDo-Hinweis (blau)!<br>Text 2te Zeile‘, ‚expires‘ => time() + 3600, ‚removable‘ => true, ‚type‘ => 3, ‚image‘ => ‚Clock‘));

Also den Text mit einem „<br>“ drin übergeben … und es geht :slight_smile:

werd ich gleich mal probieren. hatte es mit "
" gemacht und es ging nicht :rolleyes:

also, geht nicht, aber…
habe das <br> programmtechnisch in die Textdatei eingebunden, damit gehts.
es sieht jetzt so aus:

<?
	$ObjektID=55175 /*[IPSView\Meldungen\meldungen]*/;
	$file = IPS_GetKernelDir()."cams\	est.txt";
	$lines = array(file_get_contents($file));
	echo $lines[0];
	$text = explode("<br>", $lines[0]);    // nach Zeilenumbruch trennen funzt hier nicht
	print_r($text);
	
	IPS_RunScriptWaitEx($ObjektID, array('action' => 'add', 'text' => $lines[0], 'expires' => time() + 3600, 'removable' => true, 'type' => 3, 'image' => 'Clock'));
?>

Inhalt der Textdatei

Hier steht Zeile 1<br>
Hier steht Zeile 2

Supi, schön das es jetzt bei Dir geht, aber die Lösung verstehe ich nicht ganz. Kannste es mir vielleicht genauer beschreiben!

Danke
Heiko

hab vorherigen fred ergänzt

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 :confused:
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 :confused: Was für ein Text brauchst Du?

Klingt einfach :wink: Könntest du mir hier etwas behilflich sein, wie ich das umsetzen kann :slight_smile:

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 :wink:

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?

Gruß
Heiko

Super Heiko, das hilft mir schon mal weiter :slight_smile:
Ich werde morgen ein wenig herum probieren und schaun, ob ich es hinbekomme.

Danke für deine Hilfe!

Gruß
Peter

Hab es jetzt geschafft - dank deiner Hilfe - eine funktionierende Meldungsanzeige im IPSView zu realisieren!

Danke nochmals Heiko!

Gruß
Peter