Seite 1 von 1

Notifications in Liste anzeigen

Verfasst: 15. Feb 2021 17:43
von sonic
Hallo zusammen,

ich habe schon Google bemüht aber werde nicht wirklich fündig.
Ich habe in meinen Rules eine ganze Menge

Code: Alles auswählen

sendBroadcastNotification("Aktion")
Da auch die Brandmeldeanlage, Alarmanlage etc. Meldungen raushaut würde ich diese gerne in einer Liste anzeigen lassen.
Ist das möglich?

beste Grüße
Bernhard

Re: Notifications in Liste anzeigen

Verfasst: 16. Feb 2021 20:08
von sonic
Ich habe eine Lösung gefunden :-)

Bin mal gespannt auf Eure Meinungen dazu oder ob ich mich da um die Ecke Programmiert habe :lol:

Um die einzelnen Notifications zu speichern, nutze ich eine MySQL Datenbank auf einem anderen Raspberry als OpenHAB. Die Datenbank dient aktull als Datenspeicher für allerlei Temperaturen etc.
Zum speichern der Notifications habe ich ein String Item angelegt:

xxx.items

Code: Alles auswählen

String M_Persist_Notify
Dieses Item fülle ich immer dann, wenn eine Notification rausgeworfen wird.

xxx.rules

Code: Alles auswählen

...
sendBroadcastNotification("Erinnerung - Kinderzimmerfenster seit 15 Minuten offen")
M_Persist_Notify.postUpdate("Erinnerung - Kinderzimmerfenster seit 15 Minuten offen")
...
Beim Update des Item speicher ich den String einfach weg in die MySQL Datenbank
mysql.persist

Code: Alles auswählen

M_Persist_Notify : strategy = everyUpdate
Hierbei ist es wichtig, in der jdbc.cfg folgenden Eintrag zu machen

Code: Alles auswählen

sqltype.STRING        =   VARCHAR(4096)
Ansonsten wird der Table in der MySQL Datenbank nicht angelegt. Warum auch immer, ich habe es mit sqltype.STRING = TEXT versucht. Klappt aber nicht.

Damit wird, wie für die MySQL Persistenz üblich "Time" und "Value" angelegt und die Daten weg gespeichert.
Bildschirmfoto 2021-02-16 um 20.01.38.png
Klappt super.

Jetzt habe ich unter /html eine Datei "notify.html angelegt mit folgendem Inhalt:

Code: Alles auswählen

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-type” CONTENT=”text/html; charset=utf-8″>
</head>
<body>
   <iframe src="http://192.168.2.5/notify.php" width="100%"></iframe>
</body>
Auf dem Server wo die SQL Datenbank liegt (192.168.2.5 in meinem Fall) frage ich die gespeicherten Infos einfach via PHP ab.
notify.php

Code: Alles auswählen

<?php
$servername = "localhost";
$username = "openhab";
$password = "xxx!";
$dbname = "OpenHAB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT * FROM Item15";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    echo "Time: " . $row["Time"]. " - Message: " . $row["Value"];
  }
} else {
  echo "0 results";
}
$conn->close();
?>
In dem Beispiel zum Test werden die Daten einfach in einer while Schleife hintereinander "gerotzt". Das ganze muss natürlich noch in einer Tabelle grafisch etwas aufbereitet werden.

in meiner Sitemap füge ich unten einfach die notify.html ein:
xxx.sitemap

Code: Alles auswählen

Webview url="/static/notify.html" height=50 icon=none
Das ganze sieht dann so aus:
WIE GESAGT, AKTUELL NOCH NICHT GRAFISCH AUFBEREITET, NUR ZUM TEST
Bildschirmfoto 2021-02-16 um 20.07.15.png
Ich bin gespannt auf Eure Meinung zu meinem Workaround :-)

Re: Notifications in Liste anzeigen

Verfasst: 16. Feb 2021 22:23
von PeterA
Nice. So sind die Notifications auch in der Ui zu sehen.
Ich schau halt immer direkt auf myopenhab.org
Bild

Re: Notifications in Liste anzeigen

Verfasst: 17. Feb 2021 00:30
von udo1toni
Ich nutze dazu Grafana (natürlich nur, weil Grafana eh da ist). Man kann in Grafana auch direkt auf MySQL oder MariaDB zugreifen und z.B. die neuesten 10 Datensätze tabellarisch darstellen. Die Seite wiederum kann man per webview darstellen, also ähnlich wie Deine Lösung.