NEWS
[gelöst] Regenmenge täglich speichern
-
Hallo,
wie kann ich die Regenmenge täglich speichern? am liebsten hätte ich eine Tabelle mit dem Tag und der Regenmenge. Ich kann die Menge bei weatherunderground auslesen. Aber wie kann ich sie Tageweise abspeichern?
-
@mcbirne geht zum Beispiel mit dem History Adapter
-
@wendy2702
OK, ich habe den mal installiert. Aber da wird scheinbar jeder Wert einzeln gespeichert. Ich hätte gerne eine Tabelle mit verschiedenen Spalten. Geht das auch? -
@mcbirne Verstehe aktuell nicht welche Tabelle du wo meinst.
Die Anzahl der Werte die gespeichert werden sollen kannst du ja ein wenig konfigurieren.
Sonst vielleicht mal mit Influx beschäftigen oder einmal am Tag zu einer festen zeit den Wert in einen neuen DP kopieren und diesen dann in History loggen.
-
@wendy2702 Das mit der DB versuche ich gerade. Ich habe ein Synology NAS, auf dem habe ich Mariadb 10 installiert. Allerdings bekomme ich von iobroker keinen Zugriff darauf. Liegt das daran, dass der iobroker im Docker auf dem Synology NAS installiert ist?
-
@mcbirne sagte in Regenmenge täglich speichern:
Liegt das daran, dass der iobroker im Docker auf dem Synology NAS installiert ist?
Die Wahrscheinlichleit liegt bei 95%.
Im Docker müssen dann die Ports freigeschaltet werden die zum verbinden mit der MariaDB benötigt werden.
-
OK, weiß jemand, wie man das macht?
@wendy2702 said in Regenmenge täglich speichern:
@mcbirne sagte in Regenmenge täglich speichern:
Liegt das daran, dass der iobroker im Docker auf dem Synology NAS installiert ist?
Die Wahrscheinlichleit liegt bei 95%.
Im Docker müssen dann die Ports freigeschaltet werden die zum verbinden mit der MariaDB benötigt werden.
OK, weiß jemand, wie man das macht?
-
@mcbirne Wie hast du denn die Ports für Admin und VIS freigegeben?
-
@wendy2702 gar nicht, das hat mit der IP der Synology und dem Port von ioBroker funktioniert
-
Es funktioniert mit dem Mariadb 5. Komisch, aber wenigstens läuft es jetzt.
-
Wie kann ich nun die Daten zu einem festen Zeitpunkt in eine Spalte einer Tabelle schreiben?
-
@mcbirne Welchen Adapter nutzt du denn jetzt zum loggen?
-
@wendy2702 Ich habe jetzt den SQL Adapter mit einer Mysql Datenbank eingerichtet. Ich würde die Werte gerne in eine definierte Tabelle eintragen. Also mit Spalten (Zeit / Regenmenge pro Tag / min Temp / max Temp) So, dass ich Später eine Zeile für jeden Tag habe.
-
@mcbirne Gibt hier verschiedene Tabellen vorlagen im Forum, für Regenmenge habe ich auf Anhieb nichts im Gedächtnis aber man kann die ein oder andere ja an seine Bedürfnisse anpassen oder du schaust die Grafana mal an ob das eventuell deine Anforderungen erfüllt.
-
@wendy2702 Aktuell schreibe die Werte mit _ getrennt in eine Variable. So habe ich sie alle in der DB. Dann kann ich sie später in Excel auseinandernehmen. Das ist zwar nicht schön, aber funktioniert erstmal. Grafana schaue ich mir mal an. Aber das ist ja eher zur grafischen Darstellung.
Am liebsten würde ich per Blockly Werte in die DB in eine bestimmte Tabelle schreiben. Aber das geht scheinbar nicht -
@mcbirne Es wäre schon ausreichend, wenn die Werte in der DB gespeichert werden und die ID ein Wort ist. Leider sind das nur Zahlen. So hat man in der Tabelle eine Zahl (ist das der Zeitstempel?) die ID (wieder eine Zahl) und dann den Wert.
-
wenn du die werte z.b. jede 30 minuten in eine liste(array) schreibst und dieses array in einen dp speicherst. kannst du um 0:00 das array auswerten(höchste und niedrigste temp). diese auswertung schreibst du dann einmal als json - format in einen dp. es gibt sog. json widgets, die dir dann eine tabelle anzeigen können
am monatsende kannst du dann das tägl. json auswerten, alles löschen und wieder von vorne anfangen - so hast du dann eine monat. auswertung welche du wieder in einen dp als json schreibst.
du brachst dazu kein history. deine daten liegen einfach in dp. das reicht für eine tabelle. history brauchst du für grafik-anzeige (man könnte aber auch eine tabelle aus der history erzeugen - das geht aber nur mit javascript )
du kannst das "fast" alles mit blockly machen - das erzeugen des jsons-formats benötigt eine klitzekleines javascript modul - das ist schnell erstellt
trigger alle z.b 30 min.
- dp mit letztem array auslesen
- blockly, welches die werte ausliest
- das nächste ist dann, dass wieder-speichern in das array(liste)
- dann array in dp schreiben
trigger2 um 23:59
- auswertung des array - eine schleife über das array und die temps ausfiltern
- datum auslesen
- regenmenge auslesen
- das ganze in ein json schreiben und dieses in dp
habe mal von mir etwas verändert - du musst einen dp als type feld (myarr) einrichten und einen vom typ text(myjson). diese dann im script angleichen. auch die datenpunkte für die temp musst du im script angleichen (mit deiner quelle)
zum test habe ich alle 20 sekunden die messung notiert und alle 3 minuten wird der "tag" beendet - die regenmenge habe ich nicht integriert, müßte noch rein (ich weiß nicht, ob es täglich einen wert gibt, oder ob er hochgezählt und immer wieder upgedatet wird, ...)
sieht dann so aus:
das script:
das widget ist das json widget vom inventwo adapter (muss installiert sein)
-
super, das werde ich mal testen. Vielen Dank!
-
habe noch ein paar dinge im script geändert
- du kannst definieren, wieviele werte(tage) die tabelle anzeigen soll
- der aktuelle tageswert wird jetzt auch angezeigt
- die neusten werte stehen oben in der tabelle
- damit man das ganze auf längere zeit beobachten kann, habe ich eine sql tabelle eingerichtet - das script schreibt die täglichen werte um mitternacht in die sql datenbank (evtl sollte man da noch andere felder einfügen, damit man besser/leichter auswerten kann)
-
@liv-in-sky
Danke für das Skript.
Aber so ganz klappt es noch nicht. Ich habe die MinTemp und die MaxTemp und die Regenmenge. Diese muss ich nun "nur" noch in die DB schreiben. An der Stelle komme ich leider mit dem Skript nicht weiter. Ich muss:- Alle Werte in ein Array schreiben?
- Die Werte in ein json schrieben?
- Die Werte in die DB schreiben?
Kann ich die Werte nicht direkt in die DB schreiben? Ich habe mir die einzelnen Werte in Datenpunkten gemerkt. Diese werden automatisch aktualisiert. Eigentlich muss ich sie nur in die DB schreiben. also sowas wie:
sqltext=INSERT INTO wetter_aufzeichnung.wetter(DATUM,TempHigh,TempLow,Regenmenge) VALUES
+
("${formatDate(getDateObject((new Date().getTime())), "TT.MM.JJJJ")}","${date1}",${temphigh},"${date2}",${templow} )
Aber wo gebe ich da die Datenpunkte an?Sorry für die für dich simplen Fragen, aber ich steige da noch nicht durch.