NEWS
Werte aus .txt Datei auslesen Attribut speichern [gelöst]
-
@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

@chronos81 Ah hab's mit etwas Hilfe herausgefunden. Zur Info für andere. Häng ich's mit an. Hier läufts nun erst mal "Quick 'n' dirty" aber es läuft. Das mit dem Request verschiebe ich noch etwas. :-)
var dp_liter = "0_userdata.0.Heizung.dp_liter";
var dp_fullwert = "0_userdata.0.Heizung.dp_fullwert";
var filename = "/home/pi/Documents/Heizoelstand.log"
var options= {nLines: 2}Tail = require('tail').Tail;
tail = new Tail (filename, options);
tail.on("line", function(data) {
console.log(data);
let a = data.split(" ");
setState(dp_liter,a[3]);
setState(dp_fullwert,a[4]);
}); -
@chronos81 Ah hab's mit etwas Hilfe herausgefunden. Zur Info für andere. Häng ich's mit an. Hier läufts nun erst mal "Quick 'n' dirty" aber es läuft. Das mit dem Request verschiebe ich noch etwas. :-)
var dp_liter = "0_userdata.0.Heizung.dp_liter";
var dp_fullwert = "0_userdata.0.Heizung.dp_fullwert";
var filename = "/home/pi/Documents/Heizoelstand.log"
var options= {nLines: 2}Tail = require('tail').Tail;
tail = new Tail (filename, options);
tail.on("line", function(data) {
console.log(data);
let a = data.split(" ");
setState(dp_liter,a[3]);
setState(dp_fullwert,a[4]);
});@chronos81
Sehr gut
Besser wäre es allerdings das Problem im Python Skript zu beheben -
@chronos81
Sehr gut
Besser wäre es allerdings das Problem im Python Skript zu beheben@oliverioLeider musste ich das System aus unterschiedlichen Gründen neu aufsetzen. Ich habe jedoch ein Backup meines IOBROKERS gemacht und dieses bereits eingespielt. Leider bekomme ich nun beim ausführen des Skriptes einen Berechtigungsfehler. Die Linuxberechtigungen habe ich jedoch komplett (für den Test) geöffnet. Also jeder darf auf dem Ordner rekursiv alles. Dennoch kommt der angegebene Permissionfehler. Hast du eine Idee an was das liegen kann?

-
@oliverioLeider musste ich das System aus unterschiedlichen Gründen neu aufsetzen. Ich habe jedoch ein Backup meines IOBROKERS gemacht und dieses bereits eingespielt. Leider bekomme ich nun beim ausführen des Skriptes einen Berechtigungsfehler. Die Linuxberechtigungen habe ich jedoch komplett (für den Test) geöffnet. Also jeder darf auf dem Ordner rekursiv alles. Dennoch kommt der angegebene Permissionfehler. Hast du eine Idee an was das liegen kann?

@chronos81
irgendwas ist auf jeden Fall mit den Berechtigungen.
Du kannst mal folgendes probieren:- geh auf die Kommandozeile des Rechners oder Containers wo iobroker läuft
- dann gib den folgenden Befehl ein. Damit meldest du dich als Nutzer iobroker an. Als passwort musst du das Passwort deines aktuellen users eingeben
sudo -u iobroker bash- Danach versuchst du mit dem Programm nano die text-Datei zu öffnen, eine Änderung vorzunehmen und wieder zu speichern
- Wenn es dann wieder die Fehlermeldung gibt, dann hast du die Rechte nicht korrekt vergeben
- um das feststellen zu können kannst du den folgenden Befehl eingeben
ls -l <pfad zu deiner datei> -
@chronos81
irgendwas ist auf jeden Fall mit den Berechtigungen.
Du kannst mal folgendes probieren:- geh auf die Kommandozeile des Rechners oder Containers wo iobroker läuft
- dann gib den folgenden Befehl ein. Damit meldest du dich als Nutzer iobroker an. Als passwort musst du das Passwort deines aktuellen users eingeben
sudo -u iobroker bash- Danach versuchst du mit dem Programm nano die text-Datei zu öffnen, eine Änderung vorzunehmen und wieder zu speichern
- Wenn es dann wieder die Fehlermeldung gibt, dann hast du die Rechte nicht korrekt vergeben
- um das feststellen zu können kannst du den folgenden Befehl eingeben
ls -l <pfad zu deiner datei>@oliverio Ich habe deinen Lösungsansatz ausprobiert. Folgendes ist festzustellen:
- Ich kann mich mit dem User iobroker anmelden (mit sudo -u iobroker bash) Allerdings muss ich hier noch kein Passwort vergeben.
- Wenn ich dann das Dokument öffnen möchte wird von mir das iobroker Passwort verlangt.
- Danach kann ich das Dokument öffnen und auch abspeichern.
Führe ich den Befehl ls- l <pfad zur datei> aus folgt Zugriff auf blablabla nicht möglich Keine Berechtigung.
Wo muss ich die Berechtigung korrekt einstellen?
-
@oliverio Ich habe deinen Lösungsansatz ausprobiert. Folgendes ist festzustellen:
- Ich kann mich mit dem User iobroker anmelden (mit sudo -u iobroker bash) Allerdings muss ich hier noch kein Passwort vergeben.
- Wenn ich dann das Dokument öffnen möchte wird von mir das iobroker Passwort verlangt.
- Danach kann ich das Dokument öffnen und auch abspeichern.
Führe ich den Befehl ls- l <pfad zur datei> aus folgt Zugriff auf blablabla nicht möglich Keine Berechtigung.
Wo muss ich die Berechtigung korrekt einstellen?
@chronos81 sagte in Werte aus .txt Datei auslesen und als Attribut speichern:
Führe ich den Befehl ls- l <pfad zur datei> aus folgt Zugriff auf blablabla nicht möglich Keine Berechtigung
les nochmal genau was ich geschrieben habe.
Im Zweifel den Befehl mit sudo davor ausführen -
@oliverio Ich habe deinen Lösungsansatz ausprobiert. Folgendes ist festzustellen:
- Ich kann mich mit dem User iobroker anmelden (mit sudo -u iobroker bash) Allerdings muss ich hier noch kein Passwort vergeben.
- Wenn ich dann das Dokument öffnen möchte wird von mir das iobroker Passwort verlangt.
- Danach kann ich das Dokument öffnen und auch abspeichern.
Führe ich den Befehl ls- l <pfad zur datei> aus folgt Zugriff auf blablabla nicht möglich Keine Berechtigung.
Wo muss ich die Berechtigung korrekt einstellen?
@chronos81 sagte in Werte aus .txt Datei auslesen und als Attribut speichern:
Ich kann mich mit dem User iobroker anmelden (mit sudo -u iobroker bash) Allerdings muss ich hier noch kein Passwort vergeben
du musst kein passwort vergeben, sondern du musst das passwort des aktuellen users eingeben oder bist du mit root unterwegs?
-
@chronos81 sagte in Werte aus .txt Datei auslesen und als Attribut speichern:
Führe ich den Befehl ls- l <pfad zur datei> aus folgt Zugriff auf blablabla nicht möglich Keine Berechtigung
les nochmal genau was ich geschrieben habe.
Im Zweifel den Befehl mit sudo davor ausführen -
Dateirechte sehen eigentlich gut aus.
Allerdings liegt die Datei im home verzeichnis des nutzers pi.
Besser wäre es, die Datei in das home Verzeichnisses des Nutzers iobroker zu verlagern.Ich vermute, das es auch noch an den Zugriffsrechten des Verzeichnisses
(oh mann ein Screenshot, da kann man nix rauskopieren und muss alles eintippen)
/home/pi/Documents/
liegt. -
Dateirechte sehen eigentlich gut aus.
Allerdings liegt die Datei im home verzeichnis des nutzers pi.
Besser wäre es, die Datei in das home Verzeichnisses des Nutzers iobroker zu verlagern.Ich vermute, das es auch noch an den Zugriffsrechten des Verzeichnisses
(oh mann ein Screenshot, da kann man nix rauskopieren und muss alles eintippen)
/home/pi/Documents/
liegt. -
@chronos81 wie @paul53 schreibt: Bau in dein Python-Skript einen Aufruf ein, siehe https://github.com/ioBroker/ioBroker.simple-api (Den Adapter musst du Installieren)
Dann könntest du z.B. per
http://ipaddress:8087/set/javascript.0.test?value=1den Wert des Datenpunktes
javascript.0.testauf 1 setzen (der vorher schon existieren muss).
Wie macht man einenrequestin Python? Die Anleitung sieht z.B. ganz verständlich aus: https://lerneprogrammieren.de/python-http-requests-tutorial/
