Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Adapter um Dateien zu lesen

    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

    Adapter um Dateien zu lesen

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

      Hallo,

      ich frage meinen Stromzähler regelmäßig ab. Die Werte werden zur Zeit in einer Datei gespeichert. Gibt es einen Adapter mit dem ich die Datei(n) auslesen und in iobroker nutzen kann?

      Danke für die Hilfe,

      a200.

      1 Reply Last reply Reply Quote 0
      • ruhr70
        ruhr70 last edited by

        @a200:

        ich frage meinen Stromzähler regelmäßig ab. Die Werte werden zur Zeit in einer Datei gespeichert. Gibt es einen Adapter mit dem ich die Datei(n) auslesen und in iobroker nutzen kann? `

        Wo liegt die Datei denn?

        Ich erzeuge z.B. auf anderen Server per Skript und Cron lokale Abfragen, die auf dem externen Server gespeichert werden.

        Das Verzeichnis des externen Server ist dann auf meinem ioBroker Server (Linux) per mount eingebunden.

        Die Datei lasse ich mir per Skript (Javascript-Adapter) mit excec() und "cat…" ausgeben und verarbeite den Inhalt dann im Skript.

        Beispiel:

        ! // ermittelt auf Linuxrechner den Festplattenplatz für ioBroker // mit dem Linux Befehl: du ! var pfad = "Systeminfos.mySQL.HD_mySQL" + "."; var cronStr = "*/30 * * * *"; ! var abfrageMySQL = "cat /mnt/ubuntu1604-mysql-server/opt/status/hd_mysql.txt"; var abfrageMySQLiobroker = "cat /mnt/ubuntu1604-mysql-server/opt/status/hd_mysql_iobroker.txt"; var abfrageMySQbackup = "cat /mnt/ubuntu1604-mysql-server/opt/status/hd_mysql_iobroker_backup.txt"; var abfrageDate = 'cat /mnt/ubuntu1604-mysql-server/opt/status/date.txt'; ! var idHDmySQL = pfad + 'HD_mySQL'; var idHDmySQLbackup = pfad + 'HD_mySQL_Backup_DS'; var idHDmiobroker = pfad + 'HD_mySQL_iobroker'; ! var idAbfrageDatum = pfad+ "letzteAbfrage"; ! createState(idAbfrageDatum, "", { name: 'Datum der Daten vom mySQL Server', desc: 'Datum der Daten vom mySQL Server', type: 'string', unit: '', role: 'value' }); ! createState(idHDmySQL, 0, { name: 'Festplattenplatz mySQL gesamt', desc: 'Festplattenplatz mySQL gesamt', type: 'number', unit: 'MByte', role: 'value' }); ! createState(idHDmySQLbackup, 0, { name: 'Festplattenplatz mySQL Backup auf der Diskstation', desc: 'Festplattenplatz mySQL Backup auf der Diskstation', type: 'number', unit: 'MByte', role: 'value' }); ! createState(idHDmiobroker, 0, { name: 'Festplattenplatz mySQL ioBroker', desc: 'Festplattenplatz mySQL ioBroker', type: 'number', unit: 'MByte', role: 'value' }); ! function abfrageDatum() { exec(abfrageDate, function(err, stdout, stderr) { if (err) { log(err,"warn"); return; } stdout = stdout.split(","); // alle nicht-Ziffern als Trennzeichen für das Array verwenden (im Block) //log(stdout); setState(idAbfrageDatum, stdout[1]+","+stdout[2]+","+stdout[0]); }); } ! // Belegung Festplattenplatz für ioBroker mit "du" auslesen function abfrageHD(abfrage,dp) { exec(abfrage, function(err, stdout, stderr) { if (err) { log(err,"error"); return; } stdout = stdout.replace(/[\D]+/, ""); // alle nicht-Ziffern entfernen setState(dp,parseInt(stdout)); }); } ! function abfragen() { abfrageDatum(); abfrageHD(abfrageMySQL ,idHDmySQL); abfrageHD(abfrageMySQbackup ,idHDmySQLbackup); abfrageHD(abfrageMySQLiobroker ,idHDmiobroker); } ! // regelmässige Wiederholungen // ----------------------------------------------------------------------------- schedule(cronStr, abfragen); ! // main // ----------------------------------------------------------------------------- function main() { abfragen(); } ! // Start Skript: // ----------------------------------------------------------------------------- ! setTimeout(main, 500); !

        Worauf läfut Dein ioBroker und kannst Du das Verzeichnis auf dem die Dateien liegen im ioBroker Rechner einbinden?

        1 Reply Last reply Reply Quote 0
        • a200
          a200 last edited by

          danke. das brauchte ich. iobroker und die daten sind auf dem gleichen raspi. jetzt mach ich mich an die arbeit. danke und bis später.

          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 last edited by

            Ich hatte auch schonmal so eine Idee … Ein Adapter dem man 1-n Files gebe kann die der dann auf "change" monitored wo man Datenpunkte und Werte reinschreiben kann und wenn das File geändert wurde wird es neu eingelesen und alle DPs aktualisiert die drin stehen.

            Das geht auch alles per JS-Adapter und mit https://www.npmjs.com/package/watch-inotify ... von daher war die Prio jetzt für mich nicht sooo hoch 🙂

            Und am Ende war meine Hauptunsicherheit noch ob das überhaupt das ist was sinn macht. NFS Files gehen glaube ich nicht und die Frage ist ob es wirklich so ist das in den meisten Fällen wirklich kontrolle über das Fileformat besteht oder ob es nicht noch generischer sein muss (Regex kram und so)

            1 Reply Last reply Reply Quote 0
            • a200
              a200 last edited by

              @ruhr70:

              Die Datei lasse ich mir per Skript (Javascript-Adapter) mit excec() und "cat…" ausgeben und verarbeite den Inhalt dann im Skript.

              Beispiel:

              ... `
              Geil ruhr70! Genau das habe ich gebraucht. Hab mir alles angepasst und die Werte werden jetzt sauber von ioBroker eingelesen, via MySQL archiviert und visualisiert.

              Vielen Dank!

              1 Reply Last reply Reply Quote 0
              • Bluefox
                Bluefox last edited by

                @apollon77:

                Ich hatte auch schonmal so eine Idee … Ein Adapter dem man 1-n Files gebe kann die der dann auf "change" monitored wo man Datenpunkte und Werte reinschreiben kann und wenn das File geändert wurde wird es neu eingelesen und alle DPs aktualisiert die drin stehen.

                Das geht auch alles per JS-Adapter und mit https://www.npmjs.com/package/watch-inotify ... von daher war die Prio jetzt für mich nicht sooo hoch 🙂

                Und am Ende war meine Hauptunsicherheit noch ob das überhaupt das ist was sinn macht. NFS Files gehen glaube ich nicht und die Frage ist ob es wirklich so ist das in den meisten Fällen wirklich kontrolle über das Fileformat besteht oder ob es nicht noch generischer sein muss (Regex kram und so) `
                So eine Idee habe sogar ich.

                Allerdings sehr universell:

                • Kann nicht nur Dateien, sondern auch http/https get/post handeln

                • AbfrageIntervall einstellbar, oder/und bei Dateien auf -Änderungen

                • Werte mit regex extragieren und noch Datentyp einstellen.

                • http auch in Schreibrichtung unterstützen.

                Eigentlich primitiv, nur Einstellungen müssen bequem sein.

                1 Reply Last reply Reply Quote 0
                • ruhr70
                  ruhr70 last edited by

                  @Bluefox:

                  @apollon77:

                  Ich hatte auch schonmal so eine Idee … Ein Adapter dem man 1-n Files gebe kann die der dann auf "change" monitored wo man Datenpunkte und Werte reinschreiben kann und wenn das File geändert wurde wird es neu eingelesen und alle DPs aktualisiert die drin stehen.

                  Das geht auch alles per JS-Adapter und mit https://www.npmjs.com/package/watch-inotify ... von daher war die Prio jetzt für mich nicht sooo hoch 🙂

                  Und am Ende war meine Hauptunsicherheit noch ob das überhaupt das ist was sinn macht. NFS Files gehen glaube ich nicht und die Frage ist ob es wirklich so ist das in den meisten Fällen wirklich kontrolle über das Fileformat besteht oder ob es nicht noch generischer sein muss (Regex kram und so) `
                  So eine Idee habe sogar ich.

                  Allerdings sehr universell:

                  • Kann nicht nur Dateien, sondern auch http/https get/post handeln

                  • AbfrageIntervall einstellbar, oder/und bei Dateien auf -Änderungen

                  • Werte mit regex extragieren und noch Datentyp einstellen.

                  • http auch in Schreibrichtung unterstützen.

                  Eigentlich primitiv, nur Einstellungen müssen bequem sein. `

                  Sehr sehr cool!

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate
                  FAQ Cloud / IOT
                  HowTo: Node.js-Update
                  HowTo: Backup/Restore
                  Downloads
                  BLOG

                  779
                  Online

                  31.9k
                  Users

                  80.3k
                  Topics

                  1.3m
                  Posts

                  4
                  7
                  3315
                  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