NEWS
Wetterstationsdaten per csv in IOB einpflegen (importieren)
-
Moin, Moin
Ich mache schon seit Jahren erst mit Fhem dann mit IOB (Win) und jetzt mit IOB Raspi rum.
Ich habe es in den ganzen Jahren nicht geschafft meine Wetterdaten einzupflegen. Auch bei IOB gibt es mehr Suchtreffer bei CSV Export als bei Import.
Ich kann nicht Programmieren da fehlt mir ein Gen zu.;-)) Proggies verbiegen geht manchmal.;-)
Diese Wettersoftware wird nicht mehr weiterentwickelt aber am Leben gehalten. (WSWIN)
Also ist die einzige möglichkeit Werte mit einer CSV auszugeben.
Inhalt der CSV:Datum,Zeit,TT Wohnz.,TT Keller,TT Schlaf,TT Winterg.,TT Büro,TT Aussen,Temp. Wind,Windchill X,Diff Temp.,RF innen,RF Keller,RF Schlaf,RF Winterg.,RF Büro,RF Aussen,Feuchte 15,Luftdruck,Regen,Wind,Richtung,Sonnenschein,Taupunkt,Windchill,Windböen ,,°C,°C,°C,°C,°C,°C,°C,°C,°C,%,%,%,%,%,%,%,hPa,l/m²,kts,°,min,°C,°C,kts 28.01.2023,19:50,22.6,17.7,17.8,8.5,20.7,3.0,2.0,0.0,0.0,50,41,53,56,43,92,0,1035.3,0.000,0.0,180,0,1.8,0.0,0.0
Nun habe ich durch Suchen ein Script gefunden:
const fs = require("fs"); const {parse} = require("csv-parse"); const results = []; fs.createReadStream("/home/ralf/1.csv").pipe(parse({ comment: '#', columns: true, })).on('data', (data) => { results.push(data) }).on('end', () => { console.log(results); })
was mir die Daten einliest.
19:48:56.434 info javascript.0 (20382) script.js.Tests.test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 19:48:56.449 info javascript.0 (20382) script.js.Tests.test: [{'Datum':'','Zeit':'','TT Wohnz.':'�C','TT Keller':'�C','TT Schlaf':'�C','TT Winterg.':'�C','TT B�ro':'�C','TT Aussen':'�C','Temp. Wind':'�C','Windchill X':'�C','Diff Temp.':'�C','RF innen':'%','RF Keller':'%','RF Schlaf':'%','RF Winterg.':'%','RF B�ro':'%','RF Aussen':'%','Feuchte 15':'%','Luftdruck':'hPa','Regen':'l/m�','Wind':'kts','Richtung':'�','Sonnenschein':'min','Taupunkt':'�C','Windchill':'�C','Windb�en':'kts'},{'Datum':'28.01.2023','Zeit':'19:50','TT Wohnz.':'22.6','TT Keller':'17.7','TT Schlaf':'17.8','TT Winterg.':'8.5','TT B�ro':'20.7','TT Aussen':'3.0','Temp. Wind':'2.0','Windchill X':'0.0','Diff Temp.':'0.0','RF innen':'50','RF Keller':'41','RF Schlaf':'53','RF Winterg.':'56','RF B�ro':'43','RF Aussen':'92','Feuchte 15':'0','Luftdruck':'1035.3','Regen':'0.000','Wind':'0.0','Richtung':'180','Sonnenschein':'0','Taupunkt':'1.8','Windchill':'0.0','Windb�en':'0.0'}]
Jetzt mein Problem wie bekomme ich die Daten z.b. in Objekte: 0_userdata.0.Wetter .... eingefügt.
Mein grosses Problem ist wenn irgendwo ein Wert ist, ihn in IOB einzubauen, damit man Ihn weiterverarbeiten kann. Für alles was ein Adapter hat ist es meist kein Problem, aber eine Hilfe für einen Wert denn man irgendwo generiert hat bekommt man über Google nicht. Einen einfachen weg nur. Meist liesst man etwas versteht aber nur Bahnhof, weil sich dort Wissende unterhalten.
Ich habe einen Threat gefunden, wo aber nur die hälfte gepostet wurde:
csv-auslesenMal gucken was kommt.
Danke fürs lesen.;)
Tschö
-
@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
Ich kann nicht Programmieren da fehlt mir ein Gen zu.;-))
Warum dann hier unter Javascript?
es gibt doch auch andere, grafische Logikmaschinen.
Und als Geophysiker sollte es beindir doch nicht am logischen, strukturierten Denken hapern.@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
Meist liesst man etwas versteht aber nur Bahnhof, weil sich dort Wissende unterhalten.
Hier wird man dich schon an die Hand nehmen!
@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
Jetzt mein Problem wie bekomme ich die Daten z.b. in Objekte: 0_userdata.0.Wetter .... eingefügt.
das dürfte das geringste Problem sein.
Die Antwort scheint ein Array mit einem JSON zu sein.
Damit sollte es zerlegbar sein.
Allerdings sind die Sonderzeichen falsch konvertiert
und Einheiten und die dazugehörigen Werte sind in 2 verschiedenen JSONs -
@homoran said in Wetterstationsdaten per csv in IOB einpflegen (importieren):
@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
Ich kann nicht Programmieren da fehlt mir ein Gen zu.;-))
Warum dann hier unter Javascript?
Weil ich beim Suchmaschinen horror als einziges csv-parse gefunden habe und etliche Infos das es unter Blockly nicht geht. Auch NodeRed würde gehen.
es gibt doch auch andere, grafische Logikmaschinen.
Und als Geophysiker sollte es beindir doch nicht am logischen, strukturierten Denken hapern.Mit dem Alter lässt es nach.:((
@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
Meist liesst man etwas versteht aber nur Bahnhof, weil sich dort Wissende unterhalten.
Hier wird man dich schon an die Hand nehmen!
Hört sich gut an!
@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
Jetzt mein Problem wie bekomme ich die Daten z.b. in Objekte: 0_userdata.0.Wetter .... eingefügt.
das dürfte das geringste Problem sein.
Da sind wir wieder bei den wissenden.;-))
Die Antwort scheint ein Array mit einem JSON zu sein.
Sieht ja schon spannend aus.
Damit sollte es zerlegbar sein.
Allerdings sind die Sonderzeichen falsch konvertiertIst mir schon aufgefallen. Im MidnightCommander sind sie I.O. also verbastellt IOB da was.
Das kann man in den Objekten ja zurechtrücken.und Einheiten und die dazugehörigen Werte sind in 2 verschiedenen JSONs
Ägypten
(JSON (JavaScript Object Notation))Tschö, Ralf
-
@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
Tschö
is nit wohr!
sach ens!
Was willst du mit den Daten machen, wenn du sie in Datenpunkte gepackt hast?
Wie bekommst du diese Daten importiert?
sofort online oder manuell im Nachgang?mit einfachsten Mitteln kann man nämlich nicht den Werten vergangene Timestamps zuordnen.
@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
Da sind wir wieder bei den wissenden.;-))
nöö, nicht wirklich.
Erst das zerlegen, dann (in Blockly den Block) aktualisiere Datenpunktxy mit extrahiertem Wert.
@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
das es unter Blockly nicht geht.
Sollte mit so was wie Attribut TT Schlaf von Objekt IMPORT gehn
@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
Mit dem Alter lässt es nach.:((
nicht wirklich!
-
Was willst du mit den Daten machen, wenn du sie in Datenpunkte gepackt hast?
Die Wetterstation erstellt alle 5 min eine neue csv, die liegt auf einem gemountetem Path. Von dort will ich sie alle 5 min in Iobroker einlesen (cron) ,in die Datenbank packen Influxdb und mariadb (laufen beide auf der synology) und Grafiken erstellen (echarts). Grafana kenn ich nix von.;-)
Das Dashboard mit aktuellen Daten befüllen.mit einfachsten Mitteln kann man nämlich nicht den Werten vergangene Timestamps zuordnen.
In der csv ist ja ein Zeitwert.
@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
Da sind wir wieder bei den wissenden.;-))
nöö, nicht wirklich.
Erst das zerlegen, dann (in Blockly den Block) aktualisiere Datenpunktxy mit extrahiertem Wert.
@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
das es unter Blockly nicht geht.
Sollte mit so was wie Attribut TT Schlaf von Objekt IMPORT gehn
sagt mir nix.;(
nicht wirklich!
bin jetzt schon 63.;-)Tschö, Ralf
-
@geophysiker Mit NodeRed hast Du eine CSV Node, die Dir ein Objekt macht und mit meinem Flow kannst Du dann Datenpunkte schreiben.
So ich habe mal Deine Daten unter Windows genutzt:
Du siehst gibt ein Objekt - dass man dann easy mit meinem Flow in Datenpunkte schreiben kann.
Leider sind in der CSV diese Punkte als Abkürzungen drin und die darf es in Datenpfaden nicht geben. Ich habe den Subflow aber nun dahingehend bearbeitet, dass unzulässige Punkte in Objekteigenschaften (rot markiert) gegen Unterstriche ersetzt werden.
Die CSV Datei wird momentan aus CSV in das Homeverzeichnis des iobrokers gelesen, ansonsten musst halt schauen, dass die Berechtigungen stimmen.
Ggf. musst Du auch noch das Zeilentrennzeichen ändern. Da ich das mit Deiner CSV Datei erst unter Windows getestet habe, um zu sehen, ob das funktioniert - da die 1. Zeile mit den Units ignoriert werden muss.
Das musst ggf. dann halt hier umstellen:
-
@mickym said in Wetterstationsdaten per csv in IOB einpflegen (importieren):
Mal ein bischen Zeit gefunden.
@geophysiker Mit NodeRed hast Du eine CSV Node, die Dir ein Objekt macht und mit meinem Flow kannst Du dann Datenpunkte schreiben.
So ich habe mal Deine Daten unter Windows genutzt:
Habe die Abkürzungspunkte entfernt.
Für die ü`s werde ich wohl ue nehmen.
Die CSV Datei wird momentan aus CSV in das Homeverzeichnis des iobrokers gelesen, ansonsten musst halt schauen, dass die Berechtigungen stimmen.
Danke das Du Dich meiner angenommen hast.:)
Ich bin mir nicht sicher, aber so werden die Daten ja nur in 1 Objekt geschrieben.
So kann man sie ja nicht weiterverarbeiten.
Wenn ich eine Temperaturkurve für TT Wohnzimmer erstellen will habe ich ja kein Objekt zur Auswahl.Ich dachte mir das ich ObjektName: TT Wohnzimmer und als Wert: 22.6 °C haben möchte. Das also für alle Werte.
So nützt es mir nichts.Tschö, Ralf
-
@geophysiker Doch es wird ja so geschreiben
Wenn Du meinen Subflow nimmst bekommst Du genau diese Datenpunkte:
Du hast meinen Flow anscheinend gar nicht probiert. Der Flow erzeugt Dir genau diese Datenpunkte/Objekte mit diesen Werten:
Mein Subflow nimmt das Objekt auseinander und schreibt jedes einzelne Objekt getrennt. Die Debug-Node hängt ja vor dem Subflow. Ausserdem hatte ich den Subflow inzwischen angepasst, damit die Punkte in den Objekten durch Unterstriche ersetzt werden. Na ja schade, dass man sich die Mühe macht.
-
@geophysiker sagte in Wetterstationsdaten per csv in IOB einpflegen (importieren):
sagt mir nix.;(
das ist der Blockly Befehl für das Extrahieten eines Wertes und Schreiben in einen Datenpunkt.
-
@mickym said in Wetterstationsdaten per csv in IOB einpflegen (importieren):
@geophysiker Doch es wird ja so geschreiben
Wenn Du meinen Subflow nimmst bekommst Du genau diese Datenpunkte:
Hatte erst eine anderen Komment hier geschrieben und wieder gelöscht.
Der Fehler lag bei mir, ich hatte in Deinem anderen Post noch mal gelesen und den Punkt
"Erstellung von Fremdobjekten zulassen" entdeckt.Ich danke Dir das Du Dir die Mühe gemacht hast!!!
Glücklich
Ralf