NEWS
E3DC Hauskraftwerk steuern
- 
					
					
					
					
 @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... 
- 
					
					
					
					
 liegt es eventuell an dem const fs = require('fs'). promises;hier war so ein ähliches Problem : https://forum.iobroker.net/topic/42638/überführung-funktionierendes-node-js-script/ 
- 
					
					
					
					
 @arnod sagte in E3DC Hauskraftwerk steuern: 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')Jetzt habe ich eine Variante gefunden, die durchläuft: //*************************************************************************************************** //************************************ Deklaration Variablen **************************************** //*************************************************************************************************** const fsw = require('fs');// String in Datei e3dc.config.txt schreiben try{ fsw.writeFileSync(sPfadE3DC, string) console.log('-==== E3DC Config Datei gespeichert! ====-');try{ let data = fsw.readFileSync(sPfadE3DC, 'utf8') data = data.replace(/\n/g, " ");Das hatte ich jetzt eher zufällig bei der Funktion writelog() abgeguckt, dort wird auch die synchronisierte Variante aufgerufen: fsw.writeFileSync(sLogPath, string ); 
 Laufe ich damit in irgendwelche Probleme? Werde gleich mal testen, ob auch die richtigen Werte geschrieben und gelesen werden...
- 
					
					
					
					
 @stevie77 sagte in E3DC Hauskraftwerk steuern: Laufe ich damit in irgendwelche Probleme? Werde gleich mal testen, ob auch die richtigen Werte geschrieben und gelesen werden... Werte schreiben und lesen klappt so. Yippiehh, endlich läuft das wieder.  Bei zukünftigen Updates muss ich dann halt diese drei Code-Stellen immer mergen, aber das geht ja... Bei zukünftigen Updates muss ich dann halt diese drei Code-Stellen immer mergen, aber das geht ja...
- 
					
					
					
					
 Mich würde nur interessieren, warum es bei dir nicht funktioniert. 
 Was mir noch eingefallen ist, hast du nach dem Update von Node.js einmal den Befehl "npm rebuild" ausgeführt?Probleme wirst du ohne fs promises nicht haben. 
- 
					
					
					
					
 @glasfaser 
 Wenn es nicht bei allen anderen funktionieren würde, hätte ich das auch vermutet.
 Es funktioniert bei mir einwandfrei, kann es aber natürlich auch ohne Promises programmieren.
 Werde mir das ganze für die nächste Version mal ansehen, da gibt es ja verschiedene Möglichkeiten dasselbe Ergebnis zu erreichen. fs promises war halt nur die einfachste. 
- 
					
					
					
					
 @arnod sagte in E3DC Hauskraftwerk steuern: npm rebuild Habe ich jetzt mal ausgeführt (hat einiges kompiliert), den originalen Skriptstand eingeführt: Hilft leider nichts. 
- 
					
					
					
					
 Hallo zusammen, 
 eventuell hat jemand Interesse daran.RSCPGui bietet die Möglichkeit die Daten per MQTT per Gui und per Console zu liefern 
 Mit der nachstehenden Möglichkeit werden die Daten per MQTT per Service vom E3DC an den MQTT Adapter von iobroker geliefert.
 Letztendlich ähnlich zu dem Autostart von dem Prog von Eba@smartboart hatte (sehr) viel weiter oben schon erklärt wie der Autostart mit Screen von der Gui Version möglich ist 
 Hier die Consolen VarianteRSCPGui von hier laden github 
 Wichtig ist das Ihr den Branch testin3 verwendet. Der Master Branch scheint einen Bug zu haben.Entpacken und auf /home/pi ablegen 
 Ich nutze hierfür Filezilla -kann aber natürlich auch mit der git clone - make Variante erfolgenper Console in das erstellte RSCPGui Verzeichnis navigieren und die requirements installieren cd RSCPGui pip3 install -r requirements.txtDanach die rscpe3dc.conf.ini anpassen . Was so aussehen könnte [Login] username = email@gmail.com password = @245245245234524352345234524352345 address = 192.xxx.xxx.xxx rscppassword = @KJHSKFBÖKJBEF seriennummer = S10-123456789 websocketaddr = wss://s10.e3dc.com/ws connectiontype = direkt autoupdate = 30 [Export] csv = False csvfile = json = False jsonfile = mqtt = True mqttbroker = 192.xxx.xxx.xxx mqttport = 1883 mqttqos = 0 mqttretain = False mqttsub = False mqttusername = mqttpassword = @ mqttzertifikat = mqttinsecure = False influx = False influxhost = localhost influxport = 8086 influxdatenbank = influxtimeout = 1 influxname = rscpgui http = False httpurl = https://pv.pincrushers.de/rscpgui intervall = 30 paths = E3DC/INFO_DATA/INFO_SERIAL_NUMBER pathnames = E3DC/INFO_DATA/INFO_SERIAL_NUMBER|E3DC/INFO_DATA/INFO_SERIAL_NUMBERNatürlich könnte ihr auch die Ini von der Exe verwenden. Dann ist es aber wichtig das die Segmente nach [Export] gelöscht werden. Somit wäre das Programm bereits manuell per console startbar. python3 main.py -c -e -v INFOUm das Prog automatisch im Hintergrund laufen zu lassen müsst ihr noch folgendes einstellen 
 Config Datei für systemd erstellensudo nano /lib/systemd/system/myscript.serviceNachstehenden Text eingeben [Unit] Description=My Script Service After=multi-user.target [Service] Type=idle ExecStart=/usr/bin/python3 /home/pi/RSCP/main.py -c -e WorkingDirectory=/home/pi/RSCP User=pi [Install] WantedBy=multi-user.targetBerechtigung setzen sudo chmod 644 /lib/systemd/system/myscript.servicesystemd aktualisieren sudo systemctl daemon-reload sudo systemctl enable myscript.serviceNeustarten sudo rebootErgebnis sollte dann, wenn alle Adapter gestartet sind, so aussehen  
- 
					
					
					
					
 Anstelle des services ist es einfacher es analog zu dem Aufruf von Eba zu machen Console öffnen 
 In das RSCP Verzeichnis navigieren und eine RSCP.sh erstellenpi@raspberrypi:~ $ cd RSCP pi@raspberrypi:~/RSCP $ sudo nano RSCP.shAufruf eingeben #!/bin/bash cd /home/pi/RSCP echo "RSCP wird gestartet" while true; do python3 main.py -c -e -v INFO sleep 30 doneAusführbar machen chmod +x RSCP.shAutostarteintrag sudo nano /etc/rc.localText ergänzen su pi -c "screen -dmS E3DC /home/pi/E3DC-Control/E3DC.sh" & su pi /home/pi/RSCP/RSCP.sh &Neustart und freuen 
- 
					
					
					
					
 @tbsjah 
 Super Anleitung, Danke.
 Wenn das auch mit einer iobroker Installation auf der Synology im Docker Container funktioniert, wäre das super Werde das am Wochenende mal testen. 
 Hatte es bereits einmal versucht, jedoch ohne Erfolg.
- 
					
					
					
					
 Kleine Aktualisierung 
 Aufruf per rc.local oder service war recht instabil über längere Laufzeit.crontab hat sich für mich als am stabilsten erwiesen. die RSCP.sh sieht dadurch etwas anders aus #!/bin/bash cd /home/pi/RSCP/ echo "RSCP wird gestartet" #while true; #do python3 /home/pi/RSCP/main.py -c -e & sleep 15 PID=$! kill $PID exit 0Einrichten cron sudo crontab -eAufruf RSCP.sh jede Minute */1 * * * * cd /home/pi/RSCP/ && /home/pi/RSCP/RSCP.sh &
- 
					
					
					
					
 @tbsjah Welcher Mehrwert ergibt sich denn daraus wenn man RSCPGui nutzt? 
- 
					
					
					
					
 @arnod Hallo! Wenn du das auf der Synology hinbekommst wäre ich dir sehr dankbar für eine DAU-sichere Doku. Ich hab mir schon den Wolf probiert. Console brachte nur errors und GUI nur ein DisplayX Problem. 
 Die RSCP Daten in iobroker zu bekommen auf der gleichen Syno wäre absolut Spitze!
- 
					
					
					
					
 @matis 
 hört sich ja nicht gut an 
 Hoffe das ich es dann hinbekomme 
- 
					
					
					
					
 @tbsjah 
 Was hast du eigentlich in der mqtt Instanz eingestellt?
 Kannst du da zwei Bilder von den Einstellungen hier einstellen.
- 
					
					
					
					
 @chrischros Wesentlich mehr Informationen. 
 Zum Beispiel den Solar Wert oder die Informationen zu den Batterien
 
		
	 
		
	