NEWS
Werte aus Smartmeter Adapter in Excel exportieren
-
@pat
Ich bin absolut Linux Laie.
Aber gibt es nicht den 777 Befehl.
Damit müsste doch alle Rechte dann da sein. -
@bahnuhr sagte in Werte aus Smartmeter Adapter in Excel exportieren:
@pat
Ich bin absolut Linux Laie.
Aber gibt es nicht den 777 Befehl.
Damit müsste doch alle Rechte dann da sein.nein!
-
@fastfoot sagte in Werte aus Smartmeter Adapter in Excel exportieren:
nein!
Ich sag es ja.
War ein Versuch. -
@fastfoot said in Werte aus Smartmeter Adapter in Excel exportieren:
@pat dann beantworte die Frage wie der Ordner gemounted wird!
im /etc/fstab dies
//192.168.0.10/Dokumente/IObroker /mnt/NAS cifs uid=1000,gid=1000,rw,user,credentials=/home/pat/.smbzugang,vers=2.0 0 0
eingetragen und im /home/pat/.smbzugang die zugangsdaten
-
@fastfoot
sudo mount -t cifs -o user=xxx,password=xxx,file_mode=0777,dir_mode=0777 //192.168.243.100/1_Sound /mntIch hatte das so realisiert.
Und da ist doch dieses 777 mit drin ?Hatte ich hier aus dem Forum.
-
@bahnuhr
bin auch schon auf die Idee gekommen mit/mnt/NAS$ chmod -v 777 test.xlsx mode of 'test.xlsx' changed from 0755 (rwxr-xr-x) to 0777 (rwxrwxrwx)
er führt es aus aber behält es nicht
-
@pat füge mal noch ,file_mode=0777,dir_mode=0777 ein, rw reicht da nicht
-
Und dann hatte ich noch diesen Text im Web gefunden:
Befehl in konsole:
sudo mount -t cifs -o user=xxx,password=xxx,file_mode=0777,dir_mode=0777 //192.168.243.100/1_Sound /mntDas gemountete Verzeichnis steht bei Verwendung des mount-Befehls nur bis zu einem Neustart des Rechners
zur Verfügung. Damit die Windows-Freigabe automatisch beim Start des Systems eingebunden werden kann,
ist ein Eintrag in der Datei /etc/fstab notwendig. In dieser Datei sind alle Dateisysteme, welche vom
System gemountet werden sollen, eingetragen.WINDOWS-FREIGABE ÜBER "FSTAB" EINHÄNGEN
Bei der Datei fstab (file system table) handelt es sich um eine normale ASCII-Datei. Der Eintrag kann
mit einem entsprechenden Editor vorgenommen werden.nano /etc/fstab
//192.168.243.100/1_Sound /mnt cifs user=xxx,password=xxx,file_mode=0777,dir_mode=0777
Um zu prüfen, ob der Eintrag korrekt ist und das mounten klappt, muss der Rechner nicht neu gestartet
werden. Mit dem Kommando mount und der Option -a werden alle in der fstab eingetragenen Dateisysteme
gemountet. Damit das Ergebnis des Vorgangs auf dem Bildschirm erscheint, kann zusätzlich die Option v
verwendet werden.mount -av
Für das "Aushängen" der Quelle steht der Befehl umount zur Verfügung.
umount /mnt
mfg
Dieter -
@fastfoot said in Werte aus Smartmeter Adapter in Excel exportieren:
@pat füge mal noch ,file_mode=0777,dir_mode=0777 ein, rw reicht da nicht
jap das wars
-
Und warum schreibt du vorne 777 ist es nicht ?
Komisch. -
@bahnuhr sagte in Werte aus Smartmeter Adapter in Excel exportieren:
Und warum schreibt du vorne 777 ist es nicht ?
Komisch.weil mit der 777 Befehl doch sicherlich chmod 777 gemeint war, zumal da noch nicht klar war wie das gemounted wird. file_mode und dir_mode wiederum sind keine Befehle
Du darfst aber jetzt das absolut vor absolut Linux Laie entfernen
-
Mir ist das in der Tat zu kompliziert, da ich zu wenig Kenntnisse habe.
Ich scheitere schon daran, dass ich nicht weiß, wie ich einen lokalen Pfad auf meinem Rechner mounten kann.
Ich gehe jetzt den Weg anders herum und lasse aus Excel heraus den Wert über den Simple API Adapter per getPlainValue abfragen. Funktioniert prima
-
@pat Hallo es ist zwar schon eine Weile her aber trotzden eine Frage zu eurem Thema
Ich habe mit sudo npm -i exceljs installiert
Trotzdem bekomme ich die Fehlermeldung (s.u.)
Was muss ich noch machen damit ich in iobroker javascript excel benutzen kann.Wollte einfach testen: schon bei der script eingabe wird 'exceljs" unterstrichen.
var Excel = require('exceljs'); const wb = new Excel.Workbook(); const ws = wb.addWorksheet('My Sheet'); ws.addRows([ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20]] );
javascript.0 2022-11-17 11:39:15.051 error at require (node:internal/modules/cjs/helpers:103:18) javascript.0 2022-11-17 11:39:15.050 error at Module.require (node:internal/modules/cjs/loader:1057:19) javascript.0 2022-11-17 11:39:15.050 error script.js.common.iobroker1.test.excel1: Error: Cannot find module 'exceljs'
-
Hast du in deiner Javascriptinstanz exceljs eingefügt ??
-
-
Hey ho Zusammen,
ich brauche euche geballte Ladung Wissen. Da ich mich mit diesem Skript echt schwer tue und nicht weiter komme...
ich bin auf diesen Thread gestossen und habe mich daran versucht. Mein BKW läuft nun einwandfrei
und ich würde gerade die Daten des Stromverbrauchs tgl. morgens, sagen wir um 8 Uhr, in eine Excel Tabelle schreiben wollen. Also Stromverbrauch und Stromeinspeisung.Ich nutze den iobroke auf einer synology.
Der Ordner zu den Daten von iobroker liegt im Ordner nas/docker/iobroker/data
Der Ordner in dem die datei liegt, welche geschrieben werden soll liegt im Ordner nas/oeffentlich/finanzen
Wie mounte ich das Verzeichnis bzw. wie muss das Skript dann aussehen?
Das Log sagt aktuell schon:
javascript.0 error at Script.runInContext (node:vm:135:12)
javascript.0 error at script.js.1.stromzaehler_nach_excel:13:3
javascript.0 error at script.js.1.stromzaehler_nach_excel:2:28
javascript.0 error script.js.1.stromzaehler_nach_excel: TypeError: Cannot read properties of undefined (reading 'Workbook')
javascript.0 error at Script.runInContext (node:vm:135:12)
javascript.0 error at script.js.1.stromzaehler_nach_excel:13:3
javascript.0 error at script.js.1.stromzaehler_nach_excel:1:17
javascript.0 error at require (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:516:32)
javascript.0 error at require (node:internal/modules/cjs/helpers:121:18)
javascript.0 error at Module.require (node:internal/modules/cjs/loader:1143:19)
javascript.0 error script.js.1.stromzaehler_nach_excel: Error: Cannot find module 'exceljs'Das Module exceljs steht aber unter der Instanz javascript.0
Mein Skript sieht aktuell wie folgt aus:
const ExcelJS = require('exceljs'); var workbook = new ExcelJS.Workbook(); workbook.xlsx.readFile('/iobroker-data/zaehlerstaende/test.xlsx').then(function() { var worksheet = workbook.getWorksheet('test'); console.log (worksheet.getCell('A1').value); log (worksheet.getCell(1,3).value); worksheet.getCell('A3').value = 'Hallo Welt'; // einer Zelle einen Wert zuweisen workbook.xlsx.writeFile('/iobroker-data/zaehlerstaende/test.xlsx'); // Excel wird neu gespeichert });
Ich würde mich freuen, wenn mir hier jemand bis zum finalen funktionieren des Skriptes helfen könnte.
Wird der Eintrag in der Excel dann jeden Tag überschrieben, oder kann man auch sagen, das immer eine Zelle weiter beschrieben wird? So dass es quasi eine Liste wird?
viele Grüße Huhie
-
@huhie
ich habe mir den thread aus der vergangenheit mal angeschaut.
exceljs ist zwar sehr gut, aber für so einen zweck für leute mit beschränkten js kenntnissen halt schon nicht so einfach.wenn es um einfache fortschreibung geht, würde ich einfach in eine csv datei schreiben
csv ist sehr simple aufgebaut (eine zeile mit den feld titel, danach immer zeilen mit den einzelnen datensätzen, bei der jedes feld mit einem trenner (komme, semicolon, tab, etc getrennt ist).
diese dateien kann excel sehr gut einlesen, man kann sie auch einbinden, so das das excel von diesen dateien immer aktualisiert wird.dann kann man in excel mit den daten machen was man will.
gehen wir davon aus, man hat bereits eine csv datei manuell erstellt, die wie folgt aussieht
datum,wert1,wert2,wert3 01.01.2023,3,2,1 01.02.2023,4,3,2
und da möchte man dann einen datensatz anfügen, dann kann der code ausschnitt so aussehen:
const fs = require('fs'); let filename = "werte.csv"; let fields = [ "01.03.2023", 5, 6, 7 ]; fs.appendFileSync(filename, fields.join(",") + "\n");
wenn du dennoch mit exceljs weiter machen willst, dann sieht deine konfiguration erst einmal richtig aus. schau mal in das generelle iobroker log, ob beim hinzufügen des exceljs moduls etwas schief gegangen ist. du kannst das auch wieder herauslöschen, speichern und wieder hinzufügen und dann speichern
-
Da du mich einfach mal so negativ bewertest:
erwartest du nicht wirklich eine Antwort von mir.
-
@bahnuhr wie kann man sich denn downvoter ansehen?
-
doppelklick auf die Zahl.
Dann siehst du wer up und down gevotet hat.