NEWS
XLSX-Daten als Datenpunkt im ioBroker
-
Hallo zusammen,
ich bin schon länger auf der Suche nach einer Möglichkeit wie ich Daten aus einer XLSX-Datei als Datenpunkt(e) in ioBroker bekomme. Die Datei ist auf einem USB-Stick, der mit meiner Fritzbox verbunden ist, vorhanden.
Ich bin hier im Forum auf das Thema „Werte aus Smartmeter Adapter in Excel exportieren (iobroker.net)“ aufmerksam geworden, weiss auch nicht ob es besser gewesen wäre mich an diesem Thema dranzuhängen, ist ja aber auch schon etwas länger her.
Zu meinem Problem:
Der USB-Stick ist gemountet und die Datei („Test2.xlsx“) aus der ich die Daten „ziehen“ möchte wird auch im Verzeichnis angezeigt:
Ich habe versucht mittels einem Test-Java-Script (aus dem o.g. Beitrag) die XLSX-Datei zu lesen bzw. auch in diese zu schreiben, leider ohne Erfolg, mir wird im Java-Protokoll angezeigt dass die Datei nicht gefunden werden konnte.
Dies ist der Befehl den ich in der FSTAB-Datei zu Mounten des USB-Sticks verwende, mit diesem klappt das Mounten auch (mit vollständiger IP der Fritzbox):
//192.168.xxx.xxx/FRITZ.NAS/Stick_FB/XP/ /home/smarthome/fritzNAS cifs credentials=/home/smarthome/.smbcredentials,vers=3.0,noserverino,uid=1000,gid=1000,x-systemd.automount,x-systemd.requires=network-online.target 0 0
Das Java-Script das ich dazu benutze:
const ExcelJS = require('exceljs'); var workbook = new ExcelJS.Workbook(); workbook.xlsx.readFile('/home/smarthome/fritzNAS/Test2.xlsx').then(function() { var worksheet = workbook.getWorksheet('Tabelle1'); console.log (worksheet.getCell('C5').value); log (worksheet.getCell(13,3).value); worksheet.getCell('A15').value = 'Hallo Welt'; // einer Zelle einen Wert zuweisen workbook.xlsx.writeFile('/home/smarthome/fritzNAS/test.xlsx'); // Excel wird neu gespeichert });
Eigentlich bin ich auch der Typ der versucht Probleme selber zu lösen, aber hier finde ich leider den Fehler nicht.
Ich könnte mir vorstellen dass es irgendwas mit dem Dateipfad zutun haben könnte.
Ich wäre für Lösungsvorschläge sehr dankbar!
P.S.: Bzgl. Java bin ich leider momentan Anfänger.
MfG Maik
-
ist nur ein "Wert" in der Datei, oder mehrere Spalten und Zeilen ?
Und wer schreibt den Wert in diese Datei ?
Kannst du den Wert nicht direkt an den iobroker schicken ? -
eigentlich möchte ich in dieser Datei nur aus ioBroker schreiben, da aber mit Sicherheit das Thema Daten aus einer XLSX-Datei in ioBroker zu importieren auch irgendwann mal kommt, wäre dies auch ein Thema.
Die Zellen, in die ich schreiben möchte, befinden sich in der dritten Spalte und in den Zeilen 5 bis 15, eigentlich möchte ich nur aus ioBroker hier reinschreiben und dann unter dem gleichen Namen wieder speichern. Die Daten werden dann von einer SPS, an die ich anders nicht ran komme (weil diese keine andere Schnittstelle hat --> für ioBroker) verarbeitet. Das ist ein Projekt bei mir im Haus für die Rolladensteuerung, die schon seit vielen Jahren zuverlässig läuft, diese möchte ich jetzt aber ohne eine neue Steuerung zu verbauen etwas smart machen, so dass es auch Möglichkeiten gibt diese z.B. fernzusteuern o.Ä., hier habe ich eigentlich nur noch das Problem wie ich die nötigen Werte über ioBroker in die Datei bekomme und dann gespeichert wird.
MfG Maik
-
ich mache das auch, per Blockly, ich schreibe Datenpunkte in eine Text Datei, die direkt auf dem Mini PC liegt
Ich nutze für mehrere Werte (Datenpunkte) einfach einen Zeilenumbruch.
Ob das lesen am Ende notwendig ist, kein Plan, hab das mal so von irgendwo übernommen.
Läuft, daher lasse ich es soUnterhalb des Bildes ist nur noch ein Debug, den hab ich abgeschnitten.
-
das ist ein guter Ansatz, ist zwar eine Textdatei aber ich denke dass ich die Daten der Textdatei dann in eine andere Mappe, die mit der eigentlichen XLSX-Mappe verknüpft ist, importiere --> anstatt der Verknüpfungen zu den nötigen Zellen würde ich dann dort die Daten aus der Textdatei mittels Makro, das sowieso läuft, importieren.
Habe es gerade mal ausprobiert, auch hier kommt leider im Blockly eine Fehlermeldung:
Ich gehe davon aus dass irgendwas mit dem Pfad oder die dazugehörigen Rechte nicht passt, stehe da aber im Moment auf´n Schlauch.
P.S.: ioBroker läuft bei mir auch auf einem Mini-PC direkt mit dem Betriebssystem Debian12
MfG Maik
-
Kannst du die Datei im Browser aufrufen ?
Also direkt per http://ipdesiobroker/pfad_zur_datei/datei.txt -
@miniturtle75 Wäre es möglich, die Datei als CSV zu exportieren? Die Office Dateiformate sind schon Recht komplex.
Dass es mit dem einfacheren Format geht, wäre wahrscheinlicher....
-
@berndsolar13
mittel Browser komme ich auch nicht an die Datei bzw. mit dem Browser lässt sich diese nicht öffnen.
Ich habe gerade mich nochmal mittels Putty auf den Rechner, auf dem ioBroker läuft, eingeloggt, dort werden mir sämtliche Dateien, die auf´n NAS-Stick sind, angezeigt (im Benutzerbereich "Smarthome" und dann im Ordner "fritzNAS" auch wenn ich mich direkt am Mini-PC mittels grafische Oberfläche einlogge werden mir die Dateien angezeigt:
@MartinP
Wenn es wirklich keinen Weg gibt direkt an die XLSX-Datei zu gelangen (in diese zu schreiben oder aus diese zu lesen) dann wäre CSV natürlich eine Alternative, aber wie ich schon zuvor geschrieben habe ist erstmal das Problem dass ich nicht über den Dateipfad an die Datei komme, ich gehe davon aus dass dies erstmal vorrangig das Problem ist.Kann es sein dass irgendwas im Dateipfad "home/smarthome/fritzNAS/{Dateiname+Dateiendung}" nicht stimmt?
-
die IP vom IObroker PC wäre nur die richtige, wenn du dort auch die Daten speicherst
So wie es aussieht ist doch deine Quelle der Stick oder was auch immer an der Fritzbox.Müsste so ungefähr lauten
http://fritz.box/nas#/files/....
URL findest du auch direkt über das Fritzbox Menü
-
@berndsolar13 sagte in XLSX-Daten als Datenpunkt im ioBroker:
Mittels Adresse "http://192.168.xxx.x/nas#/Stick_FB/XP/Test99.txt", die ich im Browser eingegeben habe, kommt folgendes Fenster:
Anschliessend werde ich zur Anmeldeseite von FritzNas weitergeleitet, hier habe ich mich mal mit dem Benutzer, mit dem ich Zugriff auf den USB-Stick gewähre, angemeldet und ich komme direkt in den Ordner den ich auch unter Debian12 gemountet habe.
Das Gleiche passiert wenn ich in der Browseradresszeile nur den Ordner angebe "http://192.168.168.1/nas#/Stick_FB/XP/", also ohne Angabe der Datei die ich z.B. öffnen möchte.
-
bei mir kommt die selbe Meldung.
Kein Plan eventuell kann man das nicht direkt von der Fritzbox aufrufen
Meine txt Datei liegt im Ordner /var/www/html/
der ist der Ordner vom Apache Webserver.Den kann ich direkt über die IP Adresse 192.168.178.../meine_datei.txt aufrufen.
Vermutlich war oben der Pfad zur Datei falsch, weswegen Blockly das Ziel nicht gefunden hat.Entferne mal das /home/smarthome/
Es müsste direkt mit fritz.nas beginnen.
Eventuell noch mit http davor -
@berndsolar13 ggfs über SMB zugreifen...
-
Eine Fritte hat zwar ein Web-Frontend, ist aber noch lange kein Webserver.
Auf die Dateien des NAS greift man per UNC-Pfad zu.//192.168.178.1/…
-
@berndsolar13
ich habe mir mal ein anderes Verzeichnis angelegt, da die Daten reinkopiert so dass diese direkt auf dem PC vorhanden sind (ohne mount usw.) leider hat sich an dem Problem nichts geändert, angeblich ist die Datei, aus der ich lesen bzw. in die ich schreiben will, nicht vorhanden.Wie schon zuvor geschrieben denke ich dass irgendwas mit dem Pfad nicht passt, ich glaube dass ich da noch eine Nacht drüber schlafen muss, vielleicht kommt dann ja die Erleuchtung oder Jemand hat das Problem erkannt.
-
@miniturtle75
Was ist das für eine SPS, die über das Netzwerk Excel-Dateien öffnen kann, jedoch keine Kommunikation über Netzwerk beherrscht?Wie wäre es, wenn die Datei auf dem eh vorhandenen ioBroker Server liegt?
Fritz!Box als NAS nutze ich nicht mehr, seit ich herausgefunden habe, dass diese mit einem defekten USB-Stick nicht hochfährt. Z.B. nach einem Stromausfall.
Edit:
kann es sein, dass der user ioBroker, unter dem das Skript wohl läuft, keinen Zugriff auf /home/smarthome hat? -
der Ansatz mit dem Blockly, das Du verwendest, hat zu einem funktionsfähigen Ergebnis geführt.
Ich habe jetzt einen Ordner, der direkt auf meinem Mini-PC liegt, als Netzwerklaufwerk freigegeben, so dass ich die txt-Datei von extern bearbeiten und speichern kann.
Ich habe für jeden Wert eine einzelne txt-Datei angelegt so dass meine Excel-Datei, die für die Verarbeitung der Daten verantwortlich ist, die Zeitstempel der jeweiligen txt-Dateien vergleichen kann (vorheriger Zeitstempel zu aktuellen Zeitstempel) und bei unterschiedlichen Zeitstempel, also bei extern aktualisierten Daten, wird der bzw. werden die neuen Daten aus den txt-Dateien importiert.
Besten Dank für Deine Hilfe!
MfG Maik
-
klingt doch gut, Hauptsache es funktioniert
-
@miniturtle75
Das hört sich nach einem berechtigungsprpblem an. Die Datei muss für den Benutzer iobroker lesbar sein.
Prüfen kannst du das am besten in dem du auf der Konsole mit Sudo auf den Benutzer iobroker wechselst und schaust ob die Datei sichtbar ist
Wenn nicht musst du im Mount die Berechtigungen anzupassen
https://wiki.ubuntuusers.de/mount/