Störungen visualisieren

Hallo @Loewenkoenig,

wie hast du in deinem Visu unten die Gaugen gemacht? Grafana?
Gruß

Ja genau, mit Grafana.

Peter

Was hast du im Meldungen Script alles geändert? Farben auf der linken Seite und klein (ohne OK) würde ich auch gerne haben.
Kannst du dein Script Teilen?

Gruß

Verwende ebenfalls das Meldungsskript von Pitti dem Lieben!
Hier gibts auch Support wenns mal hackt, wie bei mir.
Ich habe mittlerweile 5 Meldungsskripte laufen:

  • Wichtige Systemmeldungen (Pumpen, Alarme, Fehler,…)
  • Beleuchtung (Umschalten Tag/Nacht, Umschalten Helligkeit für KLR,…)
  • Beschattung (Autom. Beschattung, Autom. Verdunkelung, Autom. Frostschutz,…)
  • Zutritt (ekey Fingerprint Zutritte)
  • Infos (allgemeine nicht so wichtige Meldungen, Luftfeuchtigkeit zug ering, suw.)

Die Meldungen können entweder weggeklickt, oder automatisch nach Zeit gelöscht werden.
4 Farben stehen zur Verfügung (Prios)

Pitti, Danke für dein Skript!

gibt es einen Link wo ich das Script finde

Bittesehr
lg

Sicher teile ich es.
Hab genau die von dir erwähnten Dinge geändert, also das OK weg, die Punkte in unterschiedlichen Farben auf der linken Seite und das ganze in klein gehalten, danach wollte ich die Symbole haben und zum Schluss der Meldungstext.
Wenn keine Meldungen vorhanden sind, wollte ich einen zentrierten Text „Keine Meldungen vorhanden!“ haben und das ganze ohne Farbpunkt oder OK-Feld.

Bitte extrem zufrieden und nutze wie gesagt die Meldungsübersicht täglich mehrmals.

Bittesehr:

<?
################################################################################
# Scriptbezeichnung: System.Dashboard.ips.php
# Version:    1.0
# Author:    Heiko (Pitti)
#            Original von Horst (12.11.2010)
#        Angepasst für RasPi lueralba (31.3.2015)
#        geändert von Loewenkoenig (07.01.2020)
#
# Meldungsanzeige im WebFront 
# =========================== 
#
# Dieses Skript dient zur Verwaltung einer Meldungsliste im WebFront. 
# Meldungen können hinzugefügt und entfernt werden. Es ist auch möglich, 
# Meldungen zu einem bestimmten Zeitpunkt automatisch löschen zu lassen, 
# sowie das Löschen von Meldungen durch Klick im WebFront zu aktivieren. 
#
# Installation: 
# ------------- 
#
# Dieses Skript richtet automatisch alle nötigen Objekte bei manueller 
# Ausführung ein. Eine weitere manuelle Ausführung setzt alle benötigten Objekte
# wieder auf den Ausgangszustand. 
#
# - Neues Skript erstellen (unterhalb eines dafür erzeugten Vaterobjektes)  
# - Diesen PHP-Code hineinkopieren 
# - Skript Abspeichern 
# - Skript Ausführen 
#
# Meldung durch ein anderes Skript hinzufügen lassen: 
# --------------------------------------------------- 
# 
# $number = IPS_RunScriptWaitEx(ObjektID, array('action' => 'add', 'text' => 'Test', 'expires' => time() + 60, 'removable' => true)); 
# Die Rückgabe des Aufrufes ist die Identifikationsnummer der neuen Nachricht, 
# bei Misserfolg wird der Wert 0 zurückgegeben. 
# 
# Parameter: 
# - 'text': Meldungstext 
# - 'expires' (optional): Zeitpunkt des automatischen Löschens der Meldung 
#          als Unix-Timestamp. Ist der Wert kleiner als die aktuelle Timestamp, 
#          wird nicht automatisch gelöscht. 
# - 'removable' (optional): Anzeige eines Buttons zum Löschen der Meldung im WebFront. 
# - 'type' (optional): Art der Meldung ... 0 => Normal(grün), 
#          1 => Fehler(rot), 2 => Warnung(gelb), 3 => Todo(blau) 
# - 'image' (optional): Name des WebFront-Icons (ipsIcon<name>), welches
#          für Meldung verwendet werden soll, Standard ist "Talk" 
# 
# Meldung durch ein anderes Skript löschen lassen: 
# ------------------------------------------------ 
# 
# $success = IPS_RunScriptWaitEx(ObjektID, array('action' => 'remove', 'number' => 123)); 
# Bei erfolgreichem Löschen wird der Wert 1 zurückgegeben, bei Misserfolg der Wert 0. 
# 
# Parameter: 
# - 'number': Identifikationsnummer der zu löschenden Meldung 
#
# Meldung eines bestimmten Types löschen: 
# ------------------------------------------------ 
# 
# $success = IPS_RunScriptWaitEx(ObjektID, array('action' => 'removeType', 'type' => x)); 
# Bei erfolgreichem Löschen wird der Wert 1 zurückgegeben, bei Misserfolg der Wert 0. 
# 
# Parameter: 
# - 'type': Meldungstyp der gelöscht werden soll (x = 0|1|2|3) 
#
# Alle vorhandenen Meldungen durch ein anderes Skript löschen lassen: 
# ------------------------------------------------------------------- 
#
# $success = IPS_RunScriptWaitEx(ObjektID, array('action' => 'removeAll')); 
# Bei erfolgreichem Löschen wird der Wert 1 zurückgegeben, bei Misserfolg der Wert 0. 
#
################################################################################

switch ($_IPS['SENDER']) { 
    case 'Execute': 
        install(); 
        break; 

    case 'RunScript': 
        $result = 0; 
        switch ($_IPS['action']) { 
            case 'add': 
                $expires = $_IPS['expires']; 
                $removable = $_IPS['removable']; 
                $text = $_IPS['text']; 
                $type = $_IPS['type'];
                $image = $_IPS['image'];
                $timestamp = time();
                if (!(isset($expires) && $expires > time())) { $expires = 0; } 
                if (!(isset($removable) && $removable === true)) { $removable = false; } 
                if (!(isset($type) && $type > 0)) { $type = 0; } 
                if (!(isset($image) && $image != '')) { $image = 'Talk'; } 
                if (isset($text) && is_string($text) && $text != '') { 
                    $result = addMessage($text, $expires, $removable, $type, $image, $timestamp); 
                } 
                break; 

            case 'remove': 
                $number = $_IPS['number']; 
                if (isset($number) && $number > 0) { 
                    $result = removeMessage($number); 
                } 
                break; 

            case 'removeAll': 
                $result = removeAllMessages(); 
                break; 
            case 'removeType': 
                if (isset($type) && $type > 0) { 
                    $result = removeTypes($type); 
                } 
                break;             
        } 
        echo $result; 
        break; 

    case 'TimerEvent': 
        $number = explode('#', IPS_GetName($_IPS['EVENT'])); 
        $number = $number[1]; 
        IPS_DeleteEvent($_IPS['EVENT']); 
        removeMessage($number); 
        break; 
} 

function removeAllMessages () 
{ 
    $ParentID = IPS_GetParent($_IPS['SELF']); 
    $DataID = IPS_GetVariableIDByName('Daten', $ParentID); 
    $MessagesID = IPS_GetVariableIDByName('Meldungen', $ParentID); 
    $LastNumberID = IPS_GetVariableIDByName('letzte Meldungsnummer', $ParentID); 

    $ids = IPS_GetChildrenIDs($_IPS['SELF']); 
    foreach ($ids as $id) { 
        if (IPS_EventExists($id) && substr(IPS_GetName($id), 0, 16) == 'Remove Message #') { 
            IPS_DeleteEvent($id); 
        } 
    } 
    SetValueString($DataID, json_encode(array())); 
    SetValueString($MessagesID, 'Keine Meldungen vorhanden!'); 
    SetValueInteger($LastNumberID, 0); 

    return 1; 
} 

function removeTypes($type) { 
    $ParentID = IPS_GetParent($IPS_SELF); 
    $DataID = IPS_GetVariableIDByName('Daten', $ParentID); 

    $result = 0; 
    $i = 0; 
    $j = 0; 
    $data = json_decode(GetValueString($DataID), true); 
      
     if(!empty($type)) { 
         foreach($data as $dataid => $dataval) { 
              if($dataval['type'] == $type) { 
                if(removeMessage($dataid)) $i++; 
                $j++; 
             } 
          } 
          if ($i == $j) $result = 1; 
     } 
    return $result; 
} 

function removeMessage ($number) 
{ 
    $ParentID = IPS_GetParent($_IPS['SELF']); 
    $DataID = IPS_GetVariableIDByName('Daten', $ParentID); 

    $result = 0; 

    if (IPS_SemaphoreEnter($_IPS['SELF'].'DataUpdate', 2000)) { 
        $data = json_decode(GetValueString($DataID), true); 
        if (isset($data[$number])) { 
            unset($data[$number]); 
            $eventID = @IPS_GetEventIDByName('Remove Message #'.$number, $_IPS['SELF']); 
            if ($eventID !== false) { 
                IPS_DeleteEvent($eventID); 
            } 
            SetValueString($DataID, json_encode($data)); 
            $result = 1; 
        } 
        else { 
            throwException('Could not remove message #'.$number.': Unknown message number!'); 
        } 
        IPS_SemaphoreLeave($_IPS['SELF'].'DataUpdate'); 
        renderData($data); 
    } 
    else { 
        throwException('Could not remove message #'.$number.': Semaphore timeout!'); 
    } 

    return $result; 
} 

function addMessage ($text, $expires, $removable, $type, $image, $timestamp) 
{ 
    $ParentID = IPS_GetParent($_IPS['SELF']); 
    $DataID = IPS_GetVariableIDByName('Daten', $ParentID); 
    $LastNumberID = IPS_GetVariableIDByName('letzte Meldungsnummer', $ParentID); 

    $number = 0; 

    if (IPS_SemaphoreEnter($_IPS['SELF'].'DataUpdate', 2000)) { 
        $data = json_decode(GetValueString($DataID), true); 
        if (!is_array($data)) { 
            $data = array(); 
        } 
        $number = GetValueInteger($LastNumberID) + 1; 
        $data[$number] = array('text' => utf8_encode($text), 'expires' => $expires, 'removable' => $removable, 'type' => $type, 'image' => $image, 'timestamp' => $timestamp); 
        if ($expires > time()) { 
            $eventID = IPS_CreateEvent(1); 
            IPS_SetParent($eventID, $_IPS['SELF']); 
            IPS_SetName($eventID, 'Remove Message #'.$number); 
            IPS_SetEventCyclic($eventID, 1, 0, 0, 0, 0, 0); 

            if($expires == 0) { 
               IPS_SetEventCyclicDateFrom($eventID, 0, 0, 0); 
            } else { 
               IPS_SetEventCyclicDateFrom($eventID, (int)date('j',$expires), (int)date('n', $expires),  (int)date('Y', $expires)); 
            } 
            IPS_SetEventCyclicDateTo($eventID, 0, 0, 0); 

            if($expires == 0) { 
                IPS_SetEventCyclicTimeFrom($eventID, 0, 0, 0); 
            } else { 
                IPS_SetEventCyclicTimeFrom($eventID, (int)date("H", $expires), (int)date("i", $expires), (int)date("s", $expires)); 
            } 
            IPS_SetEventCyclicTimeTo($eventID, 0, 0, 0);
            IPS_SetEventActive($eventID, true); 
        } 
        SetValueString($DataID, json_encode($data)); 
        SetValueInteger($LastNumberID, $number); 
        IPS_SemaphoreLeave($_IPS['SELF'].'DataUpdate'); 
        renderData($data); 
    } 
    else { 
        throwException('Could not add message: Semaphore timeout!'); 
    } 

    return $number; 
} 

function install () 
{ 
    IPS_SetHidden($_IPS['SELF'], true); 

    $ParentID = IPS_GetParent($_IPS['SELF']); 

    $instanceID = 0; 
    if (IPS_InstanceExists($ParentID)) { 
        $instance = IPS_GetInstance($ParentID); 
        if ($instance['ModuleInfo']['ModuleID'] == '{485D0419-BE97-4548-AA9C-C083EB82E61E}') { 
            $instanceID = $ParentID; 
        } 
    } 
    if ($instanceID == 0) { 
        $instanceID = IPS_CreateInstance('{485D0419-BE97-4548-AA9C-C083EB82E61E}'); 
        IPS_SetParent($instanceID, $ParentID); 
        IPS_SetName($instanceID, 'Meldungen'); 
        IPS_SetParent($_IPS['SELF'], $instanceID); 
        $ParentID = $instanceID; 
    } 

    $DataID = @IPS_GetVariableIDByName('Daten', $ParentID); 
    if ($DataID === false) { 
        $DataID = IPS_CreateVariable(3); 
        IPS_SetParent($DataID, $ParentID); 
        IPS_SetName($DataID, 'Daten'); 
    } 
    SetValueString($DataID, json_encode(array())); 

    $MessagesID = @IPS_GetVariableIDByName('Meldungen', $ParentID); 
    if ($MessagesID === false) { 
        $MessagesID = IPS_CreateVariable(3); 
        IPS_SetParent($MessagesID, $ParentID); 
        IPS_SetName($MessagesID, 'Meldungen'); 
        IPS_SetVariableCustomProfile($MessagesID, '~HTMLBox'); 
    } 
    SetValueString($MessagesID, 'Keine Meldungen vorhanden!'); 

    $LastNumberID = @IPS_GetVariableIDByName('letzte Meldungsnummer', $ParentID); 
    if ($LastNumberID === false) { 
        $LastNumberID = IPS_CreateVariable(1); 
        IPS_SetParent($LastNumberID, $ParentID); 
        IPS_SetName($LastNumberID, 'letzte Meldungsnummer'); 
    } 
    SetValueInteger($LastNumberID, 0); 

    $ids = IPS_GetChildrenIDs($_IPS['SELF']); 
    foreach ($ids as $id) { 
        if (IPS_EventExists($id) && substr(IPS_GetName($id), 0, 16) == 'Remove Message #') { 
            IPS_DeleteEvent($id); 
        } 
    } 
} 

function renderData ($data) 
{ 
    $ParentID = IPS_GetParent($_IPS['SELF']); 
    $DataID = IPS_GetVariableIDByName('Daten', $ParentID); 
    $MessagesID = IPS_GetVariableIDByName('Meldungen', $ParentID); 

    // Etwas CSS und HTML
    $style = "";
    $style = $style.'<style type="text/css">';
    $style = $style.'table { width:100%; border-collapse: collapse; }';
    $style = $style.'td.fst { width: 16px; text-align:center; padding: 0px;  border-left: 0px solid rgba(255, 255, 255, 0.2); border-top: 0px solid rgba(255, 255, 255, 0.1); }'; 
    $style = $style.'td.pre { width: 89px; padding: 5px; border-top: 0px solid rgba(255, 255, 255, 0.1); }'; 
    $style = $style.'td.mid { width: 32px; padding: 0px; border-top: 0px solid rgba(255, 255, 255, 0.1); }'; 
    $style = $style.'td.lst { padding: 2px;  border-right: 0px solid rgba(255, 255, 255, 0.2); border-top: 0px solid rgba(255, 255, 255, 0.1); }';
    $style = $style.'tr:last-child { border-bottom: 0px solid rgba(255, 255, 255, 0.2); }';
    $style = $style.'.blue { padding: 7px; color: rgb(255, 255, 255); background-color: rgb(0, 0, 255); background-image: linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -o-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -moz-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -ms-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); }';
    $style = $style.'.red { padding: 7px; color: rgb(255, 255, 255); background-color: rgb(255, 0, 0); background-image: linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -o-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -moz-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -ms-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); }';
    $style = $style.'.green { padding: 7px; color: rgb(255, 255, 255); background-color: rgb(0, 255, 0); background-image: linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -o-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -moz-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -ms-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); }';
    $style = $style.'.yellow { padding: 7px; color: rgb(255, 255, 255); background-color: rgb(255, 255, 0); background-image: linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -o-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -moz-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -ms-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); }';
    $style = $style.'</style>';

    $content = $style; 
    $content = $content.'<table>';

    if (count($data) == 0) {  
    // $content = $content.'<tr><td></td></tr>'; // Diese Zeile ersetzt die nächsten 5 und bewirkt, dass das Meldungsfenster leer bleibt, wenn keine Meldungen anstehen. 
        $content = $content.'<tr>'; 
    // $content = $content.'<td>'; // class="fst"><img src=\'img/icons/Ok.svg\'></img></td>'; 
        $content = $content.'<td class="fst">Keine Meldungen vorhanden!</td>'; 
    // $content = $content.'<td class=\'lst\'><div class=\'green\' onclick=\'alert("Nachricht kann nicht bestätigt werden.");\'>OK</div></td>'; 
        $content = $content.'</tr>'; 
    }  
    else {  
        foreach ($data as $number => $message) { 
            if ($message['type']) { 
                switch ($message['type']) {  
                    case 3:  
                        $type = 'blue'; 
                        break; 
                    case 2:  
                        $type = 'yellow'; 
                        break; 
                    case 1:  
                        $type = 'red'; 
                        break; 
                    default: 
                        $type = 'green'; 
                        break; 
                } 
            } 
            else { 
                $type = 'green'; 
            }  
            if ($message['image']) {  
                $image = '<img src=\'img/icons/'.$message['image'].'.svg\'></img>';  
            }  
            else {  
                  $image = '<img src=\'img/icons/Ok.svg\'></img>';  
            }          

            $content .= '<tr>';  
            if ($message['removable']) {  
                $content = $content.'<td class=\'fst\'><div class=\''.$type.'\' onclick="window.xhrGet=function xhrGet(o) {var HTTP = new XMLHttpRequest();HTTP.open(\'GET\',o.url,true);HTTP.send();};window.xhrGet({ url: \'hook/remove?ts=\' + (new Date()).getTime() + \'&ScriptID='.$_IPS['SELF'].'&number='.$number.'\' }); "></div></td>'; // original: ">OK</div></td>'; 
            }  
            else {  
                $content = $content.'<td class=\'fst\'><div class=\''.$type.'\' onclick=\'alert("Nachricht kann nicht bestätigt werden.");\'></div></td>'; // original: '>OK</div></td>';
            }  
            $date = '';
            if (isset($message['timestamp'])) {
                $date = date("d.m. H:i", $message['timestamp']);
            }
            else {
                $date = date("d.m. H:i", time());
            }
            $content = $content.'<td class="pre">'.$date.'</td>'; 
            $content = $content.'<td class="mid">'.$image.'</td>'; 

            $content = $content.'<td class="lst">'.utf8_decode($message['text']).'</td>'; 
            $content .= '</tr>';  
        }  
    } 
    $content = $content. '</table>'; 
    SetValueString($MessagesID, $content); 
} 

function throwException ($message) 
{ 
    IPS_LogMessage($_IPS['SELF'], $message); 
}
 
?>

Hallo Löwenkönig,

Vielen Dank auch dir für deine Mühe und das Skript, ich werde das gleich ausprobieren!
Muss man manuell einen WebHook erzeugen um löschen zu können?
Durch klicken auf das farbige Quadrat am Anfang geht die Meldung nicht weg.

lg
Christian

Guten Morgen,

sorry für die Anfänger-Frage, aber wie bekomme ich jetzt Meldungen in das Script ergänzt?
Ich konnte das Script hinzufügen und ausführen. Allerdings erhalte ich die Rückmeldung im WebFront, dass derzeit keine Meldungen vorliegen → klar, dass Script weiß ja noch nicht was es alles melden soll :wink:

Hi,

Im Script oben ist die Beschreibung :wink:

Meldung Erstellen:

$number = IPS_RunScriptWaitEx(ObjektID, array('action' => 'add', 'text' => 'Test', 'expires' => time() + 60, 'removable' => true)); 

ObjektID ist die ID von dem Script.

Gruß

Sagt mal,
wie kann ich denn beim Anlegen einer Meldung die Meldungsnummer selbst bestimmen?
Ich dachte da an Scriptnummer+2 Stellen zum durchnummerieren.

Oder anders gefragt, woher wisst ihr später in den Scripts, welche Meldungsnummer ihr nach Beseitigung des Ursprungs löschen müsst?

Oder denke ich da zu kompliziert?

Viele Grüße,
Doc

Hi Doc,

der Aufruf des Scripts liefert Dir die Nummer zurück … und die könnte man sich merken.
Man kann ja Meldungen zeitgesteuert löschen oder durch einen Button-Klick löschen.

Also es gibt 3 Möglichkeiten zum Löschen:

  • Zeitgesteuert
  • Manuel durch Klick
  • merken und Delete aufrufen

Gruß Heiko

Die Nummern musst du dir dann merken, wenn du auch automatisch löschen willst.

Ich nutze das eher zum Melden und Anzeigen von „Aufgaben“, die ich automatisch anlege.

Damit die nicht täglich neu angelegt werden, wenn sie schon vorhanden sind, erzeuge ich einen Hash, der aber im HTML durch die Farbe unsichtbar ist.

Es kommt auf die Aufgabenstellung an, dann findet sich immer ein Weg :smiley:.

Ja das ich die Nummer geliefert bekomme, hatte ich gesehen.
Ich wollte aber nicht bei jeder Meldung extra eine Variable haben, um diese zu speichern.

Hintergedanke war der, das ich z.B. eine Meldung habe, das irgendwo eine Batterie leer wird.
Sobald ich dieses „Problem“ gelöst habe, soll die Meldung wieder verschwinden, ohne das ich etwas drücken muss.

Ich hätte mir jetzt gewünscht, das die Meldungsnummer eben die Nummer des ausführenden Scipts wäre plus 1 o. 2 Stellen um aus einem Script mehrere Meldungen generieren zu können.
Das gleiche Script kann dann seine eigenen Meldungen auch wieder löschen.

Wenn die Meldungen nur durchnummeriert werden, weiss ich nicht mehr, was zu löschen ist.

VG,
Doc

Hallo Christian,

hast du es zum Laufen gebracht?

lg
Peter

Das ist leider der Nachteil, dass du für jede Meldung eine Meldungs-Variable anlegen musst.

Das funktioniert bei mir einwandfrei.
Wenn ich eine Batterie wechsle, ändert das den Zustand der Batterie-Variable und diese wiederum löst das Skript aus und löscht die Meldung.

Ja Peter!
Vielen Dank. Jetzt laufen 4 Meldungsskripte einwandfrei!!!

Ich lasse so ziemlich alles melden, was mir wichtig erscheint.

  • Beleuchtungsänderungen in Lux (Zag/Nacht)
  • Beleuchtungssperren KLR (Tag/Nacht)
  • Alles was geschaltet wird (Pumpen, …)
  • ekey Zutritte (Name Uhrzeit Finger)
  • Schadstoffgrenzwertüberschreitungen und unterschreitungen
  • Beschattungssteuerungen und Eis/Frostschutz
  • Szenen
  • Überwachung geöffneter Fenster
  • Fehlermeldungen KNX Komponenten
  • usw.

Es ist mittlerweile elementares Bestandteil meiner Visualisierung !!!

lg aus Österreich

1 „Gefällt mir“

Hast du denn dafür jetzt auch für jede Meldung eine „Meldungsnummervariable“ angelegt oder setzt du alle Meldungen „händisch“ zurück?

Könnte man das Script nicht so umbauen, das es eben genau dafür die Scriptnummer benutzt?
Ich steig da gerade nicht so ganz hinter …

VG Doc

Legst du die Variablen dynamisch bei einer Meldung an und löscht die anschließend wieder oder wie machst du das?

meistens löschen nach zeit. oder händisch alle meldungen, z.b. gelb (warnungen)