Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Werte aus .txt Datei auslesen Attribut speichern [gelöst]

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Werte aus .txt Datei auslesen Attribut speichern [gelöst]

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @Chronos81 last edited by

      @chronos81 sagte: Python Skript

      Schreibe per http-request über die Simple-API direkt in einen ioBroker-Datenpunkt.

      1 Reply Last reply Reply Quote 1
      • OliverIO
        OliverIO @Chronos81 last edited by OliverIO

        @chronos81

        1. in den einstellungen des javascript adapters das folgende modul eintragen
          tail
        2. folgendes skript im javascript-adapter anlegen und die geünschten/geforderten Werte am Anfang, inklusive den korrekten Pfad zur Datei eintragen.
        var dp_liter = "javascript.0.liter";
        var dp_füllwert = "javascript.0.füllwert";
        var filename = "Zisternenstand.log"
        
        Tail = require('tail').Tail;
        tail = new Tail(filename );
        tail.on("line", function(data) {
          console.log(data);
          let a = data.split(" ");
          setState(dp_liter,a[3]);
          setState(dp_füllwert,a[4]);
        });
        

        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.
        Ich habe es jetzt nicht ausprobiert, aber ich denke, jede geschrieben Zeile sollte mit einem "neue Zeile"-Zeichen abgechlossen sein.

        C 1 Reply Last reply Reply Quote 1
        • BananaJoe
          BananaJoe Most Active @Chronos81 last edited by

          @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=1
          

          den Wert des Datenpunktes javascript.0.test auf 1 setzen (der vorher schon existieren muss).
          Wie macht man einen request in Python? Die Anleitung sieht z.B. ganz verständlich aus: https://lerneprogrammieren.de/python-http-requests-tutorial/

          paul53 C 2 Replies Last reply Reply Quote 1
          • paul53
            paul53 @BananaJoe last edited by

            @bananajoe sagte: Den Adapter musst du Installieren

            Oder die im Web-Adapter (Port 8082) eingebaute Simple-API verwenden.

            1 Reply Last reply Reply Quote 1
            • mickym
              mickym Most Active last edited by

              Oder Node-Red nutzen. 😉

              BananaJoe 1 Reply Last reply Reply Quote 0
              • BananaJoe
                BananaJoe Most Active @mickym last edited by

                @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>

                1 Reply Last reply Reply Quote 0
                • C
                  Chronos81 last edited by

                  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.

                  1 Reply Last reply Reply Quote 0
                  • C
                    Chronos81 @OliverIO last edited by Chronos81

                    @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?

                    2022-09-15 18_38_32-Einstellungen.png 2022-09-15 18_42_23-Window.png

                    OliverIO 1 Reply Last reply Reply Quote 0
                    • OliverIO
                      OliverIO @Chronos81 last edited by

                      @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>
                      
                      C 1 Reply Last reply Reply Quote 0
                      • C
                        Chronos81 @OliverIO last edited by

                        @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.
                        2022-09-15 21_41_08-Window.png
                        2022-09-15 21_44_16-Window.png

                        OliverIO 1 Reply Last reply Reply Quote 0
                        • OliverIO
                          OliverIO @Chronos81 last edited by

                          @chronos81
                          ah ja, hätte ich erwähnen sollen.
                          die musst du selber anlegen.
                          der befehl schreibt nur in bereits existierende Datenpunkte

                          C Homoran 2 Replies Last reply Reply Quote 0
                          • C
                            Chronos81 @OliverIO last edited by

                            @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 😞2022-09-15 22_35_33-objects - pibuero.png 2022-09-15 22_34_29-objects - pibuero.png

                            OliverIO paul53 2 Replies Last reply Reply Quote 0
                            • OliverIO
                              OliverIO @Chronos81 last edited by

                              @chronos81
                              eigentlich nicht
                              probier mal aus
                              wir werden sehen ob das skript meckert

                              1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @Chronos81 last edited by

                                @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";
                                
                                1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @OliverIO last edited by

                                  @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

                                  OliverIO 1 Reply Last reply Reply Quote 0
                                  • OliverIO
                                    OliverIO @Homoran last edited by OliverIO

                                    @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.

                                    1 Reply Last reply Reply Quote 0
                                    • C
                                      Chronos81 last edited by

                                      @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.

                                      OliverIO 1 Reply Last reply Reply Quote 0
                                      • OliverIO
                                        OliverIO @Chronos81 last edited by OliverIO

                                        @chronos81

                                        den verbose modus im skript aktivieren.
                                        bei diesem käfersymbol oben rechts

                                        und auch einmal den debug modus aktivieren
                                        in beiden fällen die ausgabe im skript log bitte hier posten

                                        C 1 Reply Last reply Reply Quote 0
                                        • C
                                          Chronos81 @OliverIO last edited by Chronos81

                                          @oliverio Hier sind die Ergebnisse:

                                          Zuerst Verbose aktiv
                                          Dann debug aktiv

                                          Beides mal das gleiche Ergebnis.
                                          2022-09-16 18_53_41-Window.png

                                          Ich vermute trotz aktiviertem Modul dass tail nicht bekannt ist...
                                          2022-09-16 19_49_31-Window.png

                                          2022-09-16 19_12_25-Window.png

                                          OliverIO 1 Reply Last reply Reply Quote 0
                                          • OliverIO
                                            OliverIO @Chronos81 last edited by OliverIO

                                            @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 sind

                                            var dp_füllwert -> var dp_fullwert
                                            und
                                            setState(dp_füllwert,a[4]); -> setState(dp_fullwert,a[4]);

                                            C 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            401
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            39
                                            1921
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo