NEWS
Test Adapter Energiefluss-erweitert v0.6.2
-
@leonundjulie Zuerst einmal gehört Code imer in die Code Tags - kann ja sonst keiner lesen
Wie wäre denn deine Idee, das umzusetzen?
In deinem return Statement musst du natürlich von val noch den WB Wert abziehen.
-
@hant0r sagte in Test Adapter Energiefluss-erweitert v0.4.x GitHub/Latest:
@skb vielleicht blöd beschrieben.
Bin gerade nicht mehr am PC und es aufzuzeichnen.Aber eben ich ein Rechteck z.b. auf die Höhe 1500 stelle, dann kann ich es anschließend nicht mehr auf etwas anderes stellen.
Sonst muss ich morgen mal versuchen ein GIF aufzunehmen.
Moin, hier ein Video zum "Bug".
Einmal über den Rand hinaus, kann man die Größe nicht mehr verändern:
-
@skb Guten Morgen. Die Subtraktion habe ich mal rasch im Beitrag nachgepflegt - das war einfach und letztlich auch nur ein CopyFehler ... war in meiner Version auch drin.
Jetzt zur Problematik des Formatierens. Ich bin in JAVA absolut nicht zu Hause, lese mir das notwendige bei jeder Herausforderung aus dem Netz an. Ich würde es so machen - gemäß JAVA-Konventionen vermeintlich richtig, aber das akzeptiert der Code-Generator nicht:
const Heizstab=Number(3000*{modbus.0.holdingRegisters.41046_Aout_Output_%})/100; const Wallbox=Number({modbus.0.holdingRegisters.41605_car_charge_1_power}); Haus_Only = val - Heizstab - Wallbox; if Haus_Only>1000{ "unit":"kW"; parseFloat(Haus_Only/1000); toFixed(2) } else { "unit":"W"; Haus_Only.toFixed(0) }; return Haus_Only
Sorry, aber mir erschließt sich noch nicht, nach welcher Definition man hier etwas programmieren kann
-
@leonundjulie Gut, wenn die
value
passend ist, benötigst Du nun denunit
- Bereich.Dieser ist genauso aufgebaut. Heisst, wir befinden uns hier weiterhin in JavaScript und nicht JAVA
Für jedes Property - in dem Falle
value
undunit
müssen diese Berechnungen erfolgen.
Dies ist generell bei Javascript natürlich nicht der Fall - da könnte man problemlos die Syntax nutzen, die du dort anstrebst.Heisst somit, du nutzt die "Basis-Berechnung für beide Fälle. Hintergrund ist, das dies jeweils 2 verschiedene Funktionen sind und die Variablen der anderen Funktion nicht zur Verfügung stehen (Out of Scope).
Basisberechnung:
const percentInWatt=Number(3000*{modbus.0.holdingRegisters.41046*Aout_Output*%})/100; const WB_in_Watt=Number({modbus.0.holdingRegisters.41605_car_charge_1_power}); const verbrauch = val - percentInWatt - WB_in_Watt; return verbrauch>1000 ? (verbrauch/1000).toFixed(2) : vebrauch
Was hier auffällt, ist das modifizierte
return
Statement. Hier wird geprüft, obverbrauch
größer als 1000 ist, wenn ja, gebe(verbrauch/1000).toFixed(2)
zurück. Ansonsten eben nurverbrauch
als Zahl.Ergibt dann:
{ "default": { "value": "val => { const percentInWatt=Number(3000*{modbus.0.holdingRegisters.41046*Aout_Output*%})/100; const WB_in_Watt=Number({modbus.0.holdingRegisters.41605_car_charge_1_power}); const verbrauch = val - percentInWatt - WB_in_Watt; return verbrauch>1000 ? (verbrauch/1000).toFixed(2) : vebrauch }" } }
Berechnung der
unit
:
Gleiche Berechnung wie oben. Allerdings mit einem anderenreturn
Statement.return verbrauch>1000 ? 'kW' : 'W' ;
Insgesamt sieht deine Überschreibung dann wie folgt aus:
{ "default": { "value": "val => { const percentInWatt=Number(3000*{modbus.0.holdingRegisters.41046*Aout_Output*%})/100; const WB_in_Watt=Number({modbus.0.holdingRegisters.41605_car_charge_1_power}); const verbrauch = val - percentInWatt - WB_in_Watt; return verbrauch>1000 ? (verbrauch/1000).toFixed(2) : vebrauch }", "unit": "val => { const percentInWatt=Number(3000*{modbus.0.holdingRegisters.41046*Aout_Output*%})/100; const WB_in_Watt=Number({modbus.0.holdingRegisters.41605_car_charge_1_power}); const verbrauch = val - percentInWatt - WB_in_Watt; return verbrauch>1000 ? 'kW' : 'W' ; }" } }
-
@hant0r Danke für die Klarstellung. Ist in der Mache!
-
@skb Danke für Deine Mühe. Dank Deiner Erklärungen denke ich, dass ich es auch verstanden habe.
Das Ergbenis: es läuft (Dein Update auf 6.2 von heute Morgen ist natürlich schon drin ) nachdem ich zwei Schreibfehler korrigiert hatte.
Die finale Version:
{ "default": { "value": "val => { const percentInWatt=Number(3000*{modbus.0.holdingRegisters.41046_Aout_Output_%})/100; const WB_in_Watt=Number({modbus.0.holdingRegisters.41605_car_charge_1_power}); const verbrauch = val - percentInWatt - WB_in_Watt; return verbrauch>1000 ? (verbrauch/1000).toFixed(2) : verbrauch }", "unit": "val => { const percentInWatt=Number(3000*{modbus.0.holdingRegisters.41046_Aout_Output_%})/100; const WB_in_Watt=Number({modbus.0.holdingRegisters.41605_car_charge_1_power}); const verbrauch = val - percentInWatt - WB_in_Watt; return verbrauch>1000 ? 'kW' : 'W' ; }" } }
Und dann sieht es so aus (habe den Heizstab im Boiler auf 20% = 600 W eingestellt) - zufällig kommen auch ein paar Watt von den PV-Feldern, so dass viel Bewegung auf dem Screen ist :
.Jetzt muss ich alles noch optisch tunen, aber letztendlich sehe ich jetzt 587 W Hausverbrauch. Die Wallbox kann ich in diesem Moment nicht testen weil das eAuto gerade X-MAS Shopping macht
Soweit ist alles top, Danke!
-
Moin moin,
sag mal, lässt es sich irgendwo einstellen, dass die die Verbinder gegenseitig nicht in der Fabgebung beeinflussen?
Habe die Linien mit einer Transparenz von 0,2 eingestellt, aber dadurch das mehre übereinander liegen, summiert sich leider die Tranparenz und ein Teil ist dadurch sichtbarer als gewollt:Frohe Weihnachten euch allen
-
@hant0r Wie soll das bei Transparenz gehen? Ist ja quasi "natürlich", dass sich das addiert,
-
@merlin123 sagte in Test Adapter Energiefluss-erweitert v0.6.2:
@hant0r Wie soll das bei Transparenz gehen? Ist ja quasi "natürlich", dass sich das addiert,
Naja, vielleicht durch eine Einstellung, dass aus Transparenz-Wet 1 + 1 nicht 2 wird sondern es beim maximal Wert der Objekte (in dem Fall 1) bleibt
-
@hant0r du erwartest immer alles! Wie soll hier alles adoptiert werden, was du wünschst?
-
@hant0r Das wäre aber für andere ein völlig unlogisches Verhalten.
-
@skb sagte in Test Adapter Energiefluss-erweitert v0.6.2:
@hant0r du erwartest immer alles! Wie soll hier alles adoptiert werden, was du wünschst?
Ich erwarte doch gar nichts! Ich habe lediglich gefragt, ob es vielleicht eine Einstellung dazu gibt, die ich noch nicht gefunden habe. Dein Adapter ist ja sehr umfangreich.
-
@hant0r ... dennoch hebelt er nicht die Gesetze aus
-
Hallo,
wollte mir den Adapter nun auch mal anschauen, nachdem unser PV-Strom nun endlich fliesst.
Leider komme ich da nicht sehr weit - sobald ich die energiefluss-erweitert-Instanz starte, kommt der web-Adapter nicht mehr hoch.
Der Start des Energiefluss-Adapter scheint problemlos zu laufen:2024-12-29 16:01:06.699 - ESC[32minfoESC[39m: host.smaug instance system.adapter.energiefluss-erweitert.0 in version "0.6.2" started with pid 3768987 2024-12-29 16:01:07.316 - ESC[32minfoESC[39m: host.smaug instance system.adapter.web.0 terminated with code 156 (START_IMMEDIATELY_AFTER_STOP) 2024-12-29 16:01:07.316 - ESC[32minfoESC[39m: host.smaug Restart adapter system.adapter.web.0 because enabled 2024-12-29 16:01:08.719 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) Redis Objects: Use Redis connection: 127.0.0.1:9001 2024-12-29 16:01:09.244 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) Objects client ready ... initialize now 2024-12-29 16:01:09.324 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) Objects create System PubSub Client 2024-12-29 16:01:09.325 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) Objects create User PubSub Client 2024-12-29 16:01:10.341 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) Objects client initialize lua scripts 2024-12-29 16:01:10.376 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) Objects connected to redis: 127.0.0.1:9001 2024-12-29 16:01:10.533 - ESC[32minfoESC[39m: host.smaug instance system.adapter.web.0 in version "6.3.1" started with pid 3769000 2024-12-29 16:01:10.560 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) Redis States: Use Redis connection: 127.0.0.1:9000 2024-12-29 16:01:10.676 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) States create System PubSub Client 2024-12-29 16:01:10.677 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) States create User PubSub Client 2024-12-29 16:01:10.841 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) States connected to redis: 127.0.0.1:9000 2024-12-29 16:01:13.203 - ESC[34mdebugESC[39m: web.0 (3769000) Redis Objects: Use Redis connection: 127.0.0.1:9001 2024-12-29 16:01:13.307 - ESC[34mdebugESC[39m: web.0 (3769000) Objects client ready ... initialize now 2024-12-29 16:01:13.352 - ESC[34mdebugESC[39m: web.0 (3769000) Objects create System PubSub Client 2024-12-29 16:01:13.353 - ESC[34mdebugESC[39m: web.0 (3769000) Objects create User PubSub Client 2024-12-29 16:01:13.564 - ESC[34mdebugESC[39m: web.0 (3769000) Objects client initialize lua scripts 2024-12-29 16:01:13.643 - ESC[34mdebugESC[39m: web.0 (3769000) Objects connected to redis: 127.0.0.1:9001 2024-12-29 16:01:13.663 - ESC[32minfoESC[39m: energiefluss-erweitert.0 (3768987) starting. Version 0.6.2 in /usr/local/iobroker/node_modules/iobroker.energiefluss-erweitert, node: v20.16.0, js-controller: 6.0.11 2024-12-29 16:01:13.796 - ESC[34mdebugESC[39m: web.0 (3769000) Redis States: Use Redis connection: 127.0.0.1:9000 2024-12-29 16:01:13.893 - ESC[32minfoESC[39m: energiefluss-erweitert.0 (3768987) Adapter started. Loading config! 2024-12-29 16:01:13.968 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) {} 2024-12-29 16:01:13.971 - ESC[34mdebugESC[39m: web.0 (3769000) States create System PubSub Client 2024-12-29 16:01:13.969 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) Settings: {} 2024-12-29 16:01:13.969 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) Initial Values: {} 2024-12-29 16:01:13.969 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) Initial Fill - Values: {} 2024-12-29 16:01:13.969 - ESC[34mdebugESC[39m: energiefluss-erweitert.0 (3768987) Sources: {} 2024-12-29 16:01:13.970 - ESC[32minfoESC[39m: energiefluss-erweitert.0 (3768987) Configuration loaded! 2024-12-29 16:01:13.970 - ESC[32minfoESC[39m: energiefluss-erweitert.0 (3768987) Requesting the following states: energiefluss-erweitert.0.configuration 2024-12-29 16:01:13.972 - ESC[34mdebugESC[39m: web.0 (3769000) States create User PubSub Client 2024-12-29 16:01:14.158 - ESC[34mdebugESC[39m: web.0 (3769000) States connected to redis: 127.0.0.1:9000 2024-12-29 16:01:14.325 - ESC[34mdebugESC[39m: web.0 (3769000) Plugin sentry Do not initialize Plugin (enabled=false) 2024-12-29 16:01:14.452 - ESC[34mdebugESC[39m: web.0 (3769000) Plugin sentry destroyed because not initialized correctly 2024-12-29 16:01:16.103 - ESC[32minfoESC[39m: web.0 (3769000) starting. Version 6.3.1 in /usr/local/iobroker/node_modules/iobroker.web, node: v20.16.0, js-controller: 6.0.11 2024-12-29 16:01:16.513 - ESC[34mdebugESC[39m: web.0 (3769000) Activating states & socket info 2024-12-29 16:01:16.521 - ESC[34mdebugESC[39m: web.0 (3769000) Loaded custom certificates: {"key":"...
Der web.0 beendet sich dann aber mit
2024-12-29 16:01:16.522 - ESC[34mdebugESC[39m: web.0 (3769000) Loading all certificate collections... 2024-12-29 16:01:16.526 - ESC[33mwarnESC[39m: web.0 (3769000) Could not find any certificate collections - check ACME installation or consider installing 2024-12-29 16:01:17.162 - ESC[33mwarnESC[39m: host.smaug instance system.adapter.web.0 terminated due to SIGILL
keine Ahnung warum web.0 jetzt plötzlich "certificate collections" laden will - das passiert ohne den Energiefluss-Adapter nicht. Der ACME-Adapter wird auch nicht benutzt, sondern nur statisch konfigurierte Zertifikate im admin-Adapter.
Any clue? -
@jleg Web-Adapter richtig einstellen und dann neu starten. Der EF-Adapter installiert nur ein Plugin und startet diesen dann neu.
-
@skb web-Adapter steht auf "integriert" - oder was genau macht "richtig einstellen" noch aus?
-
@jleg Na, es werden ja bei dir die Zertifikate nicht erkannt oder Ähnliches. Dieses Mal prüfen.
-
@skb wie gesagt - die einzigen benutzten Zertifikate sind zentral in der Admin-Instanz konfiguriert, und im web-Adapter korrekt referenziert. Das funktioniert - seit diversen Jahren, mit diversen Adaptern so wie's soll.
ACME bzw. collections werden nicht benutzt. -
@jleg just for the records - die "certificate collections" haben mit o.g. Problem nichts zu tun. Sondern beim Start des energiefluss-erweitert wird eine Kernel-Exception erzeugt, ausgelöst durch die Dependency "sharp":
io.web.0[276502] trap invalid opcode ip:7f3bd31a4d08 sp:7ffd5f401710 error:0 in libvips-cpp.so.42
Kommentiere ich im energiefluss-Adapter entsprechend
let sharp; try { // sharp = require('sharp'); } catch (e) { console.error(`Cannot load sharp: ${e}`); }
startet das Ganze, inkl. Konfigurationseite. Ich gehe aber mal davon aus, dass "sharp" zu irgendwas gut ist
Scheint ein Problem mit der libvips und älteren AMD-CPUs zu sein. Hatte testweise mal auf sharp-0.33.0 downgegraded - hilft aber auch nicht. Muss ich wohl bis zum nächsten CPU-Upgrade warten... -
@jleg Sharp ist für die Vorschaubilder der Galerie zuständig. Kannst du Sharp manuell mit der Version, die in der io-package.json angegeben ist, installieren?
Normal sollte die Exception ja abgefangen werden.