NEWS
E3DC Hauskraftwerk steuern
-
@arnod said in E3DC Hauskraftwerk steuern:
Hat hier noch jemand das Problem ??
Also bei mir im Log kann ich zu den oben genannten Problemen keine Einträge finden.
Seit dem letzten Update läuft alles bestens. -
@arnod Also, ich hatte Node.js wie du, inzwischen upgedatet. Node.js: v12.22.7, NPM version: 6.14.15. Das ändert erstmal nichts. Mein Javascript ist aber ein ganzes Stück veraltet, da ich nicht auf Admin 5 upgraden wollte (ist daran gekoppelt). Du hast wahrscheinlich Admin 5 und deswegen neueres Javascript? Ist Admin 5 inzwischen einigermaßen verwendbar?
Am Skript habe ich nichts geändert, komplett ab "ENDE USER ANPASSUNGEN" kopiert.
Die ebenso vorgeschlagene Änderung habe ich so richtig umgesetzt? Scheint auch nicht zu funktionieren...
Scheint mir wohl nichts anderes übrig bleiben als in den sauren Apfel zu beißen und auf das meiner Meinung nach unübersichtliche Admin 5 zu wechseln...
Edit: Konfigdatei löschen/umbenennen und neu aus Programm schreiben lassen provoziert denselben Fehler bzw. die Warnung wie beim Start.
-
@stevie77 sagte in E3DC Hauskraftwerk steuern:
Admin 5 zu wechseln
Der ist gekommen um zu bleiben. Da wirst du dich früher oder später eh mit auseinandersetzen müssen.
-
@thomas-braun Gut formuliert. Bin gerade am Updaten...hoffentlich läuft's danach dann...
-
@arnod Tja, leider nicht. Jetzt ist alles aktualisiert, was nur irgendwie zu aktualisieren ist, trotzdem weiterhin...
23:59:52.422 warn javascript.0 (3319) script.js.Strom.E3DCControl: -==== Fehler beim Schreiben der e3dc.config.txt Error = TypeError: Cannot read property 'writeFile' of undefined ====- 23:59:52.423 warn javascript.0 (3319) script.js.Strom.E3DCControl: -==== Parameter Fehler beim einlesen der Parameter Error = TypeError: Cannot read property 'readFile' of undefined ====-
Werde am Wochenende hoffentlich dazu kommen deine vorgeschlagenen Code-Änderungen nochmals mit dem neusten Stand zu testen.
-
Ich verstehe zwar nicht warum es bei dir nicht funktioniert, aber zur Not kann man das natürlich auch ohne FS Promises programmieren.
-
@stevie77 sagte in E3DC Hauskraftwerk steuern:
nzwischen upgedatet. Node.js: v12.22.7, NPM version: 6.14.15.
trotzdem weiterhin...Node sauber installiert :
which nodejs && nodejs -v && which node && node -v && which npm && npm -v && apt policy nodejs
-
@glasfaser Vermutlich? Ich gehe zumindest davon aus...
root@iobroker:/opt/iobroker# which nodejs && nodejs -v && which node && node -v && which npm && npm -v && apt policy nodejs /usr/bin/nodejs v12.22.7 /usr/bin/node v12.22.7 /usr/bin/npm 6.14.15 nodejs: Installed: 12.22.7-deb-1nodesource1 Candidate: 12.22.7-deb-1nodesource1 Version table: *** 12.22.7-deb-1nodesource1 100 100 /var/lib/dpkg/status
-
@stevie77
Jein. Es fehlt das nodesource-Repository.
Und als root meldet man sich nicht an. -
@thomas-braun Kann ich erstmal (meines eher bescheidenen Linux-Wissens nach) nicht beeinflussen. Ich verbinde mich als normaler Benutzer per docker exec -it iobroker bash in den ioBroker-Container und lande da eben als root.
nodesource-Repository: Bisher hatte das dann aber noch nie irgendeines der vielen installieren Adapter und Skripte beeinflusst. Mehr Infos? -
@stevie77 sagte in E3DC Hauskraftwerk steuern:
lande da eben als root.
User anlegen, sudo-Rechte vergeben, als User agieren.
Installation gerade biegen:
iobroker stop iobroker fix iobroker start
nodeJS von nodesource richtig anlegen: siehe meine Signatur.
-
@thomas-braun Hmmm, da bin ich jetzt etwas ängstlich. Ich habe den Container so übernommen und bisher nie Probleme gehabt. Wenn ich da jetzt anfange Dinge umzustellen, wer weiß, ob ich dann kompatibel bleibe zu weiteren Updates des Docker-Containers. Vielleicht sollte ich mal ein Update auf die 5er-version von https://hub.docker.com/r/buanet/iobroker/ machen, das kann sein.
Solange nicht 100% sicher ist, dass das die Ursache für das Problem mit promise ist, würde ich da ungerne Hand anlegen.Nach einem Node.js-Update mache ich immer folgendes:
Den ioBroker-Installationsfixer aufrufen, da die Installation von Node.js einige Einstellungen am System verändert haben kann (Sicherheitseinstellungen):curl -sL https://iobroker.net/fix.sh | bash -
-
@stevie77
Aus meiner Sicht gehst du da mit einem 'Linux'/Debian falsch um. -
@thomas-braun Da kannst du ja durchaus Recht haben, andererseits wurde das buanet-ioBroker-Image mehr als 10 Millionen mal heruntergeladen und erfreut sich ziemlicher Beliebtheit. Der wird dann vermutlich auch ne gewisse Ahnung haben. Ich kann es nicht beurteilen...
Aber hat jetzt vermutlich auch nichts mit dem Problem zu tun?! -
Ich setze das nicht ein, aber da wurde soweit ich weiß auch ein Standarduser eingerichtet. Zumindest in den letzten Versionen des Containers. Wenn das ganze nicht auf einer Synology laufen sollte jedenfalls.
-
@thomas-braun Kann natürlich sein, dass das eine der Verbesserungen ist beim Sprung von Version 4.x auf 5.x - wie gesagt, wenn ich mal Zeit haben sollte, müsste ich den Sprung auch mal machen. Aber ist jetzt wohl eher offtopic.
-
@arnod sagte in E3DC Hauskraftwerk steuern:
Versuch mal folgende Änderung.
in der Zeile 213 diese beiden Konstanten definieren:
const { readFile } = require('fs').promises
const { writeFile } = require('fs').promises
und die Zeile
const fs = require('fs').promises;
löschen.Die Zeile 880 in
await writeFile(sPfadE3DC , string)
ändern und die Zeile 896 in
let data = await readFile(sPfadE3DC, { encoding: 'utf8' })
ändern.Wenn es bei dir auch funktioniert, würde ich das in meinem Script so übernehmen.
Das resultiert dann darin:
-
@arnod sagte in E3DC Hauskraftwerk steuern:
@stevie77
Wenn alles nicht funktioniert bleibt nur require('fs').promises gegen require('fs'); zu tauschen oder einfach const fsw verwenden. Dann kann aber await nicht verwendet werden und muss in Zeile 880 gelöscht werden.
Die Zeile 880 sieht dann so aus:
fsw.writeFile(sPfadE3DC , string)
Das gleiche in Zeile 896:
let data = fsw.readFile(sPfadE3DC, 'utf8')Das resultiert dann (falls ich es richtig gemacht habe) in:
Zeile 281 ist hier dann eh überflüssig, da später nur fsw verwendet wird?! Aber schadet ja auch nicht im Test...
-
Ich kenne das ganze hier nicht ,
aber ich sehe das in deinem Script der read bei dir falsch ist :let data = await readFile(sPfadE3DC, 'utf8')
so sollte es sein :
let data = await fs.readFile(sPfadE3DC, 'utf8')
Auf Github:
// Einlesen der Werte e3dc.config.txt async function e3dcConfigRead() { let StateParameter = ['Einspeiselimit','UntererLadekorridor','ObererLadekorridor', 'MinimumLadeleistung','MaximumLadeleistung','Wrleistung','Ladeschwelle','Ladeende', 'Ladeende2','Winterminimum','Sommermaximum','Sommerladeende','Speichergroesse','Unload', 'HTmin','HTsockel','HTon','HToff','HTsat','HTsun','Debug','Wallbox','WBmode','WBminLade','Peakshave'] try{ let data = await fs.readFile(sPfadE3DC, 'utf8')
Hast du eine falsche Version !?
Schau mal auf GitHub , dort habe ich das Script mit deinen Screenshot verglichen !
-
@glasfaser sagte in E3DC Hauskraftwerk steuern:
let data = await readFile(sPfadE3DC, 'utf8')
Ich versuche ja gerade diese Varianten von Arno umzusetzen, die abweichend vom Original bei Github sind...