Ich habe eine Lösung gefunden
Bin mal gespannt auf Eure Meinungen dazu oder ob ich mich da um die Ecke Programmiert habe
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
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
Hierbei ist es wichtig, in der jdbc.cfg folgenden Eintrag zu machen
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
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
