NEWS
Werte aus .txt Datei auslesen Attribut speichern [gelöst]
-
@mickym sagte in Werte aus .txt Datei auslesen und als Attribut speichern:
Oder Node-Red nutzen.
<ironie> Immer diese militante Minderheit der Node-Red Benutzer<ironie off>
-
Hallo zusammen, ich bin überwältigt von den vielen Antworten und Hilfestellungen. Ich werde mich heute Abend mal dran setzen und mir die verschiedenen Möglichkeiten anschauen. Danke auch, dass teilweise Folgefragen schon beantwortet wurden (z.B. wie macht man einen request usw...)
Ich versuche mich da nun etwas "reinzufuchsen" und melde mich ggf. bei weiteren Fragen oder sonst wenn es geklappt hat. -
@oliverio said in Werte aus .txt Datei auslesen und als Attribut speichern:
Hallo oliverio,
ich habe das soweit probiert allerdings scheint der Pfad noch nicht zu passen bei mir. Die Berechtigungen sind erteilt und die Datei liegt auf dem gleichen Gerät auf dem auch der iobroker läuft. Habe ich den Pfad richtig deklariert? -
@chronos81
sieht eigentlich gut aus, aber die Datei scheint dort nicht zu liegen bzw. scheint die Berechtigung nicht zu passen.
Mit welchen Benutzer wird die Datei geschrieben?ls -l <setze hier den kompletten pfad ein>
-
@OliverIO Sorry ich habe mich geirrt da ich zwei Raspis habe habe ich die IP's vertauscht. Der IObroker läuft auf einem anderen Device. Ich habe nun zum Testen erst mal nachgebaut wie es sich verhält wenn ich die Datei nun auf dem richtigen Gerät liegen habe. Das Skript läuft nun auch. Allerdings finde ich keine neuen Objekte die ich nun erwartet hätte im Objektbaum.
-
@chronos81
ah ja, hätte ich erwähnen sollen.
die musst du selber anlegen.
der befehl schreibt nur in bereits existierende Datenpunkte -
@oliverio Hi danke,
also ich habe nun zwei Datenpunkte im Ordner 0_userdata --> 0 angelegt. Ich habe sie zunächst vom Datentyp String angelegt. muss ich diese im Skript nun noch richtig ansprechen damit die Daten hier erscheinen?
Sorry für die Anfängerfragen -
@chronos81
eigentlich nicht
probier mal aus
wir werden sehen ob das skript meckert -
@chronos81 sagte: zwei Datenpunkte im Ordner 0_userdata --> 0 angelegt.
Die IDs sind im Skript anzupassen:
var dp_liter = "0_userdata.0.dp_liter"; var dp_füllwert = "0_userdata.0.dp_füllwert";
-
@oliverio sagte in Werte aus .txt Datei auslesen und als Attribut speichern:
ah ja, hätte ich erwähnen sollen.
die musst du selber anlegen.Aber @BananaJoe hat es
@bananajoe sagte in Werte aus .txt Datei auslesen und als Attribut speichern:
der vorher schon existieren muss
-
@homoran
ja, aber im Rahmen eines anderen Lösungswegs.
Ich kann verstehen, wenn Anfänger, die von iobroker, von javascript, von Programmierung generell keinerlei Ahnung haben, das die da den Wald vor lauter Bäumen nicht sehen
und meist auch den einzelnen Zusammenhang nicht verstehen.
Wenn ich (du ja bei javascript auch nicht wobei das verstehst auch du) bei einem skript drauf
schau, dann weiß ich meist relativ schnell um was es da geht.
Non programmierer sehen nur Zeichen, die für sie aneinander gereiht keinen Sinn machen.Wenn ich dran denk, das ich die ersten Zeilen javascript mit einem netscape navigator 4 ausprobiert habe. Aber damals war das so grottig langsam und die async-logik hab ich damals auch noch nicht so richtig verstanden.
-
@oliverio
Hallo ich habe nun die Datenpunkte im Skript angepasst wie von @paul53 netterweise beschrieben. Ebenfalls habe ich mehrfach die Schreibweise und den Datenpfad geprüft. Leider kommt jedoch nichts bei den Werten an.
Es wird auch kein Fehler angezeigt. Hast du noch ne Idee was ich prüfen könnte?Dankeschön.
-
den verbose modus im skript aktivieren.
bei diesem käfersymbol oben rechtsund auch einmal den debug modus aktivieren
in beiden fällen die ausgabe im skript log bitte hier posten -
@oliverio Hier sind die Ergebnisse:
Zuerst Verbose aktiv
Dann debug aktivBeides mal das gleiche Ergebnis.
Ich vermute trotz aktiviertem Modul dass tail nicht bekannt ist...
-
@chronos81
habe es gerade ausprobiert. bei mir funktioniert es.
die meldung die du da hast ist normal, da die tail bibliothek keine passenden
typescript definitionsdateien hat und das der editor anmeckert.wie hast du es den ausprobiert?
du startest das skript
und wartest dann bis ein wert in diese Datei geschrieben wurde?
Siehe meine Erklärung weiter oben.@oliverio sagte in Werte aus .txt Datei auslesen und als Attribut speichern:
Solange das Skript läuft schaut es auf die Datei und immer wenn ein neuer 'Wert geschrieben wird, werden die Werte in einen Datenpunkt geschrieben.
Nur durch starten passiert erst mal gar nix
um eins noch auszuschließen,
benennen bitt den folgenden variablennamen um, da wahrscheinlich umlaute nicht optimal sindvar dp_füllwert -> var dp_fullwert
und
setState(dp_füllwert,a[4]); -> setState(dp_fullwert,a[4]); -
@oliverio hey sorry erst jetzt zum Antworten gekommen. Ich danke dir erst mal für deine "geduldige" Hilfe
Ich hätte genauer lesen sollen. Dann kann mein Test nur falsch sein, wenn ich das mit einer statischen LogDatei teste. ich lese mich mal noch ein wie ich mein Python Skript jetzt noch dazu bringe in den angegebenen Ordner zu schreiben per Cronjob, da diese auf einer anderen Source im Original liegt. Oder wie ich den IOBroker dazu bringen kann aus einer Datei zu lesen welche auf einer anderen Source (IP-Adresse und Pfad im gleichen Netzwerk) liegt.
Wenn ich das herausgefunden habe melde ich mich wieder.
-
@chronos81
evtl wäre da der weg der oben schon mal vorgeschlagen worden ist besser
https://forum.iobroker.net/topic/57991/werte-aus-txt-datei-auslesen-und-als-attribut-speichern/4?_=1663602365200hier ein beispiel wie du relativ einfach so einen request absetzen kannst.
im iobroker musst du nur noch die simpleapi installierenhttps://stackoverflow.com/questions/645312/what-is-the-quickest-way-to-http-get-in-python
wahrscheinlich liegt es an den berechtigungen, da dein skriptprozess als benutzer in der gruppe iobroker laufen oder root (nicht ratsam) sein muss, damit er in das verzeichnis vom iobroker schreiben darf.
da wäre die request methode einfacher -
@oliverio Hi also das Skript an sich läuft und gibt mir auch Werte zurück. Sobald ich irgendwo die Zeit gefunden habe werde ich dies zunächst fertig machen. Ich habe noch einmal genau den gleichen Aufbau mit einer Heizölmessung und werde hier dann die andere Methode ausprobieren. Das was mir dann am Besten taugt werde ich dann vermutlich aufs andere übertragen. ( Wenn ich beides zum Laufen bringe )
Rückmeldung kommt!
-
@oliverio Ich bin leider noch nicht zur Request Methode gekommen. Im moment funktioniert es "fast".
Leider haut meine LogDatei immer automatisch eine neue leere "Letzte Zeile" bei jeder Aktualisierung hinzu.Was bedeutet, das Skript funktioniert wenn ich händisch die letzte leere Zeile lösche aber das eben immer manuell. Gibt es eine Möglichkeit mit dem von dir oben beschriebenen Skript die Werte aus der "zweitletzten" Zeile zu lesen?
VG Chronos81
-
@chronos81 said in Werte aus .txt Datei auslesen und als Attribut speichern:
@oliverio Ich bin leider noch nicht zur Request Methode gekommen. Im moment funktioniert es "fast".
Leider haut meine LogDatei immer automatisch eine neue leere "Letzte Zeile" bei jeder Aktualisierung hinzu.Was bedeutet, das Skript funktioniert wenn ich händisch die letzte leere Zeile lösche aber das eben immer manuell. Gibt es eine Möglichkeit mit dem von dir oben beschriebenen Skript die Werte aus der "zweitletzten" Zeile zu lesen?
VG Chronos81