Hallo, mit besten Dank an Peter habe ich ein PHP Script, welches mir die aktuellen Werte aus eine Windhager BIOWIN2 Heizung ausliest und als Text im Browser darstellt (s.Anlage). Das läuft aktuell sowohl auf dem PC (Windows 10) als auch auf des Synology NAS. Nach einem Reload der Seite (F5) werden die Werte aktualisiert, das geht auch automatisch alle 10 Sekunden mit einem Browser Addon. Soweit OK. Jetzt möchte ich aber zusätzlich die Messwerte in grafischer Form eines Charts darstellen. Also immer wenn ein "Reload" der Seite gemacht wird, kommen ja neue Werte, die dann als neuer Datenpunkt im Chart erscheinen sollen. SO sollen z.B. Jede Minute 1 neuer Datenpunkt >> 1440 Datenpunkte für einen ganzen Tag im Chart dargestellt werden. Jetzt gibt es ja jedem Menge freier Tools im Internet. Könnt ihr mir eine Empfehlung geben, welches hierfür geeignet ist ? Muss einfach sein und ohne Gebühr privat nutzbar sein. Danke
So wie du das momentan hast, sieht deine Seite immer nur den aktuellen Wert. Wenn du jetzt zukünftig ein Diagramm haben möchtest, muss sich irgendjemand die vergangenen Werte speichern. Sprich, irgendetwas muss 24h am Tag laufen um die Werte abzuspeichern. Da du sowieso ein NAS hast (das wahrscheinlich immer an ist) würde sich das anbieten. Ich würde auf dem NAS InfluxDB und Grafana installieren (oder einen Docker Container verwenden). Der Loggt dann die Daten mit und stellt dir die Diagramme zur Verfügung. Die kannst du dann in deine Seite einbinden wenn du möchtest.
Hallo Manni, danke für die Hinweise. Ja, das auf dem NAS laufen zu lassen macht Sinn ! Ich vermute: InfluxDB ist eine Art Datenbank Grafna ist eine grafische Anzeige zu Inhalten aus der o.g. Datenbank. Werde mal versuchen die beiden Teile auf der NAS zu installieren und ans laufen zu bekommen. Gruß Dirk
Ich würde einfach ein kleines Angular-Projekt (oder VUE oder REACT) machen mit irgendeiner Chart Lib. Gibt etliche. So kann die Seite regelmäßig automatisch die Werte abrufen und das Chart anzeigen. Dann brauchst du noch ein kleines Backend. Für das was du vor hast kann man ein ganz rudimentäres PHP Skript schreiben das als REST API je nach Anfrage den / die Werte aus einer Datenbank (z. B. MariaDB) liefert. Und ein zweites Skript das die Datenbank füttert. Das dann per Cronjob ausführen. Zeitaufwand 1 Tag wenn du in der Materie steckst. Länger wenn nicht. Falls du noch einen alten Raspi rumliegen hast könntest du dir ein LCD Display dazu besorgen, dann hängst du dir das Ding an die Wand und lässt dir einfach permanent die Website anzeigen. Schick, schnell, übersichtlich. Dauert dann auch nochmal einen Tag.
:
Bearbeitet durch User
Dieter D. schrieb: >aus einer Datenbank (z. B. MariaDB) liefert. Hallo Dieter, also MariaDB version 10 habe ich bereits auf der Synology installiert. Bisher scheitert es daran, dass ich Werte von der Heizung über ein PHP script in die Datenbank schreiben kann. Ich kann mich nicht mit der Datenbank verbinden, Ursache noch unbekannt...
Habe mich als Anfänger durch ein PHP Tutorial gearbeitet. Vielleicht wäre es einfacher, von PHP aus eine .csv Datei zu erstellen/öffnen und dann die neuen Messwerte einfach bei jedem page-reload in die Datei hinzufügen. Den Graph kann ich dann einfach mit Excel über die .csv Datei erzeugen.
Dazu müsste man aber programmieren können und das NAS wird wahrscheinlich kein installiertes PHP/MySQL oder vergleichbares haben.
Ben B. schrieb: > Dazu müsste man aber programmieren können und das NAS wird > wahrscheinlich kein installiertes PHP/MySQL oder vergleichbares haben. Das PHP-Skript läuft ja schon auf dem NAS...
Ich würde rrd-Tool nehmen. rrd-Tool ist eine Datenbank und die kann die Daten auch grafisch ausgeben. Dabei ist Minimum/Maximum/Mittel-Wert möglich. Ich habe mal eine Grafik von meiner Wetterstation angehangen. Der Bereich zwischen Min/Max ist als Band dargestellt. Die dickere rote Linie ist Mittelwert. Im Bild ist der Zeitraum des letzten Jahres dargestellt, man kann sich aber beliebige Zeiträume anzeigen lassen.
Wenn PHP/MySQL vorhanden ist, gibt's so viele Tools, die darauf basierend Diagramme erstellen können. Ich würde mir sowas selbst schreiben und hab daher keine so richtige Ahnung was ich da genau empfehlen soll, aber selbst basteln kann halt nicht jeder.
Hallo, danke für die bisherigen Anregungen. ich habs jetzt einfach so gelöst: - PHP Script läuft auf NAS - Jede Minute werden neue Werte in eine CSV Datei geschrieben - Über Excel ein Diagramm erstellt (s.Anlage) Aktuell wird das PHP-Skript (NAS) vom PC aus (Webbrowser mit Reload 1 Minute) getriggert. Jetzt suche ich noch eine Möglichkeit, dass die NAS automatisch jede Minute das PHP Skript ausführt....
Frage: Um das PHP-Skript jede Minute auszuführen, spricht etwas dagegen, es so zu machen wie im Anhang zu sehen ?
Du könntest das ganze Script in eine While(1) Schleife packen, am Anfang der PHP-Datei ein Set_Time_Limit(0); und ein Sleep(60); am Ende der Schleife. Nachteil: Ohne irgendwelche Steuerfunktionen läuft das für immer und man bekommt's nur durch Neustart des PHP-Servers weg. Wenn ich sowas mache, dann lasse ich solche Scripte immer nach einer z.B. "kill.me"-Datei suchen. Wenn die vorhanden ist, wird sie gelöscht und das Script beendet, dann muß man nicht den Server dafür neustarten. Alternativ kann man an den Anfang des Codes in der Schleife auch eine Zeitvergleichs-Funktion ausführen, die alle sagen wir 0,9 Sekunden prüft, ob der Zeitwert (z.B. jede volle Minute) für den nächsten Durchlauf erreicht wurde. Damit kriegt man sowas mit der NAS-Zeit synchronisiert, mit dem einfachen sleep(60); driftet das durch die Scriptlaufzeit irgendwann weg.
:
Bearbeitet durch User
Ben B. schrieb: > mit dem einfachen sleep(60); driftet das durch die > Scriptlaufzeit irgendwann weg Das macht aber nichts in der Anwendung. Wird denn die CPU der NAS durch den Sleep Befehl belastet ?
Was ich so auf meinen Servern getestet habe eigentlich nicht. Aber das kannste ja testen, machst ein Set_Time_Limit(70); und Sleep(60); und schaust dann ob es in der Minute hohe CPU-Last hast. Edit: Kann sein, daß das Set_Time_Limit bei Sleep auf manchen Systemen keine Wirkung hat bzw. die Sleep-Zeit nicht als Time_Limit mitgerechnet wird. Aber wenn Du nur 60 Sekunden wartest sollte das schnuppe sein, schlimmstenfalls wird das NAS für 60 Sekunden langsam.
:
Bearbeitet durch User
Hallo Ben, danke für die Hinweise. Wenn ich das so mit der Sleep Funktion mache, ist denn dann ein Ausführen eines weiteren PHP Skriptes zur gleichen Zeit noch möglich, oder ist der PHP Server dann blockiert ? Sorry für die vielen Fragen, bin PHP Neuling. Gruß
Nein der Server kann mehr als eine Anfrage parallel bearbeiten, sleep verbraucht auch keine nennenswerte Leistung
Du kannst ganz einfach in deine generierte Html-Seite ein weiteres PHP script als Bild einfügen. also ein IMG tag welches auf irgendein Chart.php zeigt welches als content-type: image/png oder gif liefert, aber wenn Du in php eine Grafikfunktion aufrufst sendet er es automatisch als Bild zum Browser
Hm vielleicht sollte man das grundlegend in zwei Prozesse unterscheiden. Der erste Prozess ist das Abrufen Deiner Daten einmal pro Minute und das Wegspeichern in der Datenbank. Ohne das geht's nicht. Der zweite Prozess ist das Abrufen der Werte aus der Datenbank und die Erstellung von Diagrammen daraus. Das kann man mit festen Werten machen und z.B. eine graph.png oder wie mas das nennen will einmal pro Minute nach dem Abrufen und wegspeichern der neuen Werte updaten, die dann von einer HTML/PHP-Seite aufgerufen wird. Oder wenn man dynamische Werte will (z.B. zeige mir ein Diagramm über alle Messwerte des letzten Monats oder speziell des Monats Dezember 2021), dann macht der erste Prozess gar nichts an den Diagrammen, sondern die werden erst bei Anforderung erstellt. Das beides sollte man nicht durcheinanderbingen. Eine saubere Datenbank ist die Grundlage für saubere Diagramme. Ansonsten können heute selbst schwächere CPUs 50..100 PHP-Scripte gleichzeitig ausführen, kommt drauf an wieviel Rechenleistung die einzelnen Scripte benötigen, wieviel Speicher, wieviel Datenbanklast. Aber das bißchen Diagramm erstellen und den ständig laufenden Datenerfassungsprozess wird man kaum merken. Ich verwende zB. als Testserver zuhause einen Celeron N3150, weil das Ding kaum Stromkosten erzeugt. Die Mühle hat für reines PHP mehr als genug Leistung, man merkt nur wenig Schwächen wenn man "mal schnell" in PHP irgendwas berechnet was ein wenig komplexer ist oder bei großen Datenbanken, bzw. umfangreichen Operationen auf große Datenbanken. Er machts klaglos, aber man merkt, daß er das nicht so richtig mag.
Dirk F schrieb: > Frage: > Um das PHP-Skript jede Minute auszuführen, spricht etwas dagegen, es so > zu machen wie im Anhang zu sehen ? Also du willst jetzt dein Script per Browser aufrufen und damit die Endlosschleife starten? Das ist keine gute Idee, durch die while(1) erhält der Browser vom Server ja keine Rückgabe, wird also nach einer Weile ein Fehlermeldung anzeigen und die Verbindung zum Webserver trennen. Jeder halbwegs normale Webserver wird dann nach einer gewissen Zeit die "hängende" PHP-Session abbrechen. Dein NAS wird doch wohl irgend eine andere Möglichkeit bieten ein Programm ggf. als Hintergrunddienst zu starten. Dein PHP-Script kannst du ja auch direkt mit PHP ausführen - nicht nur über den Webserver. Sascha
Zm Neuladen des Scriptes folgenden Header im HTML einfügen
1 | <meta http-equiv="refresh" content="1"> |
("1" ist die Anzahl der Sekunden nach der der Browser die Seite automatisch neu lädt). merciless
Hallo zusammen, also Danke für die Anregungen. Sascha W. schrieb: > Also du willst jetzt dein Script per Browser aufrufen und damit die > Endlosschleife starten? Ja, so mache ich es. Funktioniert gut: Set_Time_Limit(0); while (file_exists('run.me')) { //Daten holen // In Datei "aktuelles-Datum.csv" hinzufügen $handle = fopen(date("Y_m_d") . "_data.csv", "a") or die ("File operation unsuccessful"); fwrite($handle, $Aussentemperatur . ";"); fclose($handle); Sleep(60); } Zum Starten im Browser das .PHP script aufrufen. Die Datei "run.me" muss vorhanden sein. Danach kann der Browser geschlossen werden, das Skript läuft auf der NAS weiter. Jede Minute werden Daten der aktuellen Datei hinzugefügt. An jedem Tag wird eine neue .csv Datei erzeugt. Zum Abbrechen des Skripts die Date "run.me" umbenennen. Die CPU Last der NAS Synology geht nicht hoch. Gruß Dirk
hmm, irgendwie bekomme ich bei solchen verrenkungen bauchschmerzen. laut https://www.synology-wiki.de/index.php/Cron unterstützen (zumindest einige der) synology nas cron. und das wäre eine gscheide methode, um die abfrage der daten vom sensor und den eintrag in die db vorzunehmen. ich würde dann eine webseite erstellen, die die daten periodisch per ajax call aus der db abholt und nur den graph aktualisiert. oder mit influx und grafana herumspielen.
Hallo, zum Schluß naocheinam Danke an alle für die Hinweise. CRON und Ajax bin ich nicht fit drin. Mit der jetzigen Lösung kann ich aber gut leben. Als Anlage mal ein Aktueller Chart vom heutigen Tag. Werde jetzt mal in einem Heizungsforum nachfrgen, ob die Schwankungen der Vorlauf-Solltemperatur normal ist. Gruß
Na gugg. Die einfachsten Lösungen sind manchmal gar nicht so schlecht, schaut ja ziemlich konsistent aus.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.