Eine Meldung für mehrere Aktoren mit Hinweis

Erst einmal ein DANKE SCHÖN! an alle die mir dabei geholfen haben. Auch wen ich das mit den Verstecken bzw. ausblenden der „Links“ zu meinem Vorhaben nicht nutze, ist es in anderen bereichen wiederum sehr nützlich.

Ich habe mich jetzt an den Script von „nancilla“ gehalten und fasse noch mal zusammen:

  • Eine Variable „String“ mit dem Profil ~TextBox erstellt (Objekt ID:30844)
  • den unten stehenden Script angelegt und die Objekt ID der „String Variable“ eingetragen sowie jeweils die Objekt ID’s der TürKontakt Variablen
  • auf das Skript jeweils ein Ausgelöstes Ereignis „bei Variablenänderung“ der einzelnen Türkontakte

<?
// Stringvariable anlegen mit Profil ~Textbox
$string = 30844 /*[Security\Tür/- & Fensterkontakte\Tür Kontakte\Alle Türen geschlossen!]*/; // ID der Stringvariable


// IDs der Fensterkontakte und Bezeichnungen der Fenster, die das Script auf Änderung triggern
if ($_IPS['VARIABLE'] == 35182 /*[Security\Tür/- & Fensterkontakte\Tür Kontakte\Geräteschuppen\Geräteschuppen]*/) $trigger = "Geräteschuppen";
if ($_IPS['VARIABLE'] == 18709 /*[Security\Tür/- & Fensterkontakte\Tür Kontakte\Fahrradschuppen\Fahrradschuppen]*/) $trigger = "Fahrradschuppen";
if ($_IPS['VARIABLE'] == 51250 /*[Security\Tür/- & Fensterkontakte\Tür Kontakte\Werkstatt\Werkstatt]*/) $trigger = "Werkstatt";



// Script
$textalt = GetValueString($string);

if ($_IPS['VALUE'])
   {
   IPS_SetName($string, "Tür geöffnet:");
           if ($textalt == "")
       {
        $text = "$trigger
";
       SetValueString($string, $text);
        }
       else
       {
        $text.= "$trigger
$textalt";
       SetValueString($string, $text);
        }
   }
else
   {
   $textalt = str_replace($trigger."
", "", $textalt);
       if ($textalt == "")
       {
       IPS_SetName($string, "Alle Türen geschlossen!");
       SetValueString($string, $textalt);
       }
       else
       {
       SetValueString($string, $textalt);
       }
   }
?>

in Bildern schaut es dann so aus:
Türen geschlossen
Türen geschlossen.JPG
Tür geöffnet
Türen geöffnet.JPG

Eigendlich total Easy aber so wie das ist wen man länger mit dem system nicht gearbeitet hat - Danke für Eure Hilfe wen es jetzt noch weitere Tipps oder verbesserungen gibt, bitte schön ich bin ganz Ohr :wink:

Ich doch nochmal…
Die Screenshots, die gepostet hast, resultieren aber nicht allein aus dem Script, was ich vorgeschlagen habe.
Da hast du noch etwas anderes am Laufen, was das eine bzw. das andere überflüssig macht.
Mein Script hätte dir nur die geöffneten Kontakte der Reihefolge nach Öffnung gelistet bzw. wieder geschlossene Kontakte aus der Liste gelöscht.
Nun scheint mir das doppelt gemoppelt zu sein… das bekommst du mit einer HTML-Tabelle (bzw. in der HMTL-Box) besser und übersichtlicher hin, oder willst du wirklich nur einen String für das letzte Ereignis und darunter den Rest?
Der von mir vorgeschlagene Weg war die Basis für den weiteren Ausbau und diente dem Verständnis der Abfolgen für „JETZT“… danach gehts in die zweite Stufe… ist aber schon etwas Eingemachter :wink:
Dann siehts anders aus, aber regt zum Mitlernen an :slight_smile:

Ich hatte hier schonmal eine Idee erfolgreich (zumindest für mich) als dynamischen Stundenplan umgesetzt. Da lässt sich auch noch was raussuchen. Zu der Zeit habe ich mich kaum mit HTML beschäftigt, aber Dr. Goo… hat mir dabei auch weitergeholfen… Stichwort Tabellen HTML.

Bitte definiere nochmal deine genauen Vorstellungen anhand des Erreichten neu. Oder bist du so zufrieden?
Langsam kommen wir auch dahinter…

Doppelt gemoppelt…, ich habe genau deinen Vorschlag so wie er ist genommen und er zeigt mir „Alle Türen geschlossen“ an wen die Türen zu sind und zeigt mir an welche geöffnet sind… - für die ~TextBox habe ich mich entschieden da die einzelnen Türen unter einander geschrieben werden, bei allen anderen wurde es mir hinter einander weggeschrieben.

Was vielleicht noch ganz sinnvoll wäre, ist ne Uhrzeit - vielleicht kannst du mir ja mal dein Html Script schicken, mal schauen was ich, wahrscheinlich ne menge - noch lernen kann :wink:

Die drei Anzeigen darunter werde ich noch löschen den die benötige ich damit ja nicht mehr.

Das von mir gepostete Script würde den gelb markierten Bereich ergeben.

Die drei Anzeigen darunter werde ich noch löschen den die benötige ich damit ja nicht mehr.

Wenn du den rot markierten Bereich meinst, dann habe ich das missverstanden bzw. zum Script nicht einorden können.
Türen geöffnet1.JPG
Ja und mit der Uhrzeit (jetzt hast du Blut geleckt… :slight_smile: ) … kann man sicher auch noch reinpacken (wobei es schon ein schönes Meldungsscript im Forum gibt)… aber du willst doch erstmal die Basis haben zur ursprünglichen Frage… Übersättigung bringt nur Frust.

Jo genau, das was du Rot Markiert hattest war mein alter Stand, den ich inzw. entfernt habe „siehe Bild“
Unbenannt.JPG

Danke Schön :wink:

Na da gibt es ja möglichkeiten…

Ich habe es nicht nur mit der Uhrzeit hinbekommen sondern habe auch gleich mal die Farbe angepasst, die diejenigen den es Interessiert hier der Script:

<?
//ermitteln des datum und der Uhrzeit:
$timestamp = time();

$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);

// Stringvariable anlegen mit Profil ~HTML
$string = 26215 /*[Security\Tür/- & Fensterkontakte\Tür Kontakte\Alle Türen geschlossen!]*/; // ID der Stringvariable


// IDs der Fensterkontakte und Bezeichnungen der Fenster, die das Script auf Änderung triggern echo "<font color='#ff0000'>Mein Text</font>";
if ($_IPS['VARIABLE'] == 35182 /*[My @Home\Schuppen & Garten\Garten/- & Geräteschuppen\Geräteschuppen\Geräteschuppen\Geräteschuppen]*/) $trigger = "<font color='#00FF00'>Geräteschuppen um $uhrzeit</font/><br />";
if ($_IPS['VARIABLE'] == 18709 /*[My @Home\Schuppen & Garten\Fahrrad Schuppen\Fahrradschuppen\Fahrradschuppen\Fahrradschuppen]*/) $trigger = "<font color='#00FF00'>Fahrradschuppen um $uhrzeit</font/><br />";
if ($_IPS['VARIABLE'] == 51250 /*[My @Home\Schuppen & Garten\Werkstatt\Werkstatt\Werkstatt\Werkstatt]*/) $trigger = "<font color='#00FF00'>Werkstatt um $uhrzeit</font/><br />";



// Script 
$textalt = GetValueString($string);

if ($_IPS['VALUE'])
   {
   IPS_SetName($string, "Tür geöffnet:");
           if ($textalt == "")
       {
        $text = "$trigger
";
       SetValueString($string, $text);
        }
       else
       {
        $text.= "$trigger
$textalt";
       SetValueString($string, $text);
        }
   }
else
   {
   $textalt = str_replace($trigger."
", "", $textalt);
       if ($textalt == "")
       {
       IPS_SetName($string, "Alle Türen geschlossen!");
       SetValueString($string, $textalt);
       }
       else
       {
       SetValueString($string, $textalt);
       }
   }
?>

und so schaut das ganze dann mal aus:
Türkontakte.JPG

Aber, jetzt löscht er mir den Zustand nicht wieder raus wen die Tür geschlossen wird…

Weil sich mit der Uhrzeit der $trigger(-wert) ändert und mit dieser Zeile…

$textalt = str_replace($trigger."
", "", $textalt);

… nach dem Trigger (Zum Löschen) gesucht wird, der natürlich mit der aktuellen Uhrzeit nicht mehr zum alten (Kontakt-Offen)-String passt.

Hmmnnn…, habe jetzt einfach mal die Ermittlung von datum und Zeit unter der String variable gelegt und so funktioniert es.

<?
// Stringvariable anlegen mit Profil ~HTML
$string = 38344 /*[Security\Tür/- & Fensterkontakte\Tür Kontakte\Alle Türen geschlossen!]*/; // ID der Stringvariable

//ermitteln des datum und der Uhrzeit:
$timestamp = time();

$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);

// IDs der Fensterkontakte und Bezeichnungen der Fenster, die das Script auf Änderung triggern echo "<font color='#ff0000'>Mein Text</font>";
if ($_IPS['VARIABLE'] == 35182 /*[My @Home\Schuppen & Garten\Garten/- & Geräteschuppen\Geräteschuppen\Geräteschuppen\Geräteschuppen]*/) $trigger = "<font color='#00FF00'>Geräteschuppen um  $uhrzeit</font/><br />";
if ($_IPS['VARIABLE'] == 18709 /*[My @Home\Schuppen & Garten\Fahrrad Schuppen\Fahrradschuppen\Fahrradschuppen\Fahrradschuppen]*/) $trigger = "<font color='#00FF00'>Fahrradschuppen um  $uhrzeit</font/><br />";
if ($_IPS['VARIABLE'] == 51250 /*[My @Home\Schuppen & Garten\Werkstatt\Werkstatt\Werkstatt\Werkstatt]*/) $trigger = "<font color='#00FF00'>Werkstatt um $uhrzeit</font/><br />";