RamDisk lesen und schreiben: Nightly 1.9.250

Fragen zur Nutzung, Features, usw..
cjungde
Beiträge: 115
Registriert: Mo Jan 27, 2020 9:48 pm

RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von cjungde »

Hallo zusammen,

ich pflege mein eigenes kleines Speicher / EVU und PV Modul über eine nicht offiziell unterstützte Batterie ( Grund und Lösung siehe viewtopic.php?t=1082)

Im Modul schreibe ich eigene Ramdisk files, die ich dann mit den HTTP Modulen auslese.
Interessanterweise funktioniert das mit der aktuellen Nightly (1.9.250 (2022-01-12 15:01:08 +0100 [af01572c] )) nur teilweise.

z.B. nutze ich das HTTP EVU Modul.
Dort habe ich für die "Vollständige URL für die Ampere Phase 1" den Wert "http://127.0.0.1/openWB/ramdisk/bezuga1_senec" eingetragen.
Laut meinem Log und per SSH auf der OpenWB steht dort ein Wert drin "/var/www/html/openWB/ramdisk/bezuga1_senec 1.77"
In der Ramdisk /var/www/html/openWB/ramdisk/bezuga1 kommt aber nichts an. Dort steht "0".

Irritierenderweise habe ich das Problem nicht bei allen Werten im EVU HTTP Modul.
Hat jemand einen Tip für mich, was ich falsch mache ?

Es gelten die üblichen Disclaimer:
- früher hats funktioniert :-)
- ich hab nichts gemacht :-)

Danke für Eure Hilfe
Christoph
Heckert 9,9 kWp PV
Fronius Symo 10.0-3-M WR
SENEC Speicher 5 kWh
openWB series2 standard+
Auto: Zoe R110
Restliche Hausautomation: FHEM
LenaK
Beiträge: 975
Registriert: Fr Jan 22, 2021 6:40 am

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von LenaK »

Hinweistext im Http-Modul: "Gültige Werte vollständige URL. Die abgerufene Url muss eine reine Zahl zurückgeben. Enthält der Rückgabewert etwas anderes als "-" (für Einspeisung) oder "0-9" wird der Wert auf null gesetzt. Der Wert muss in Watt sein."
Sind die anderen Werte vielleicht ganzzahlig?
cjungde
Beiträge: 115
Registriert: Mo Jan 27, 2020 9:48 pm

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von cjungde »

Hallo LenaK,

OK, da hat sich inzwischen einiges geändert und ich habe nicht aufgepasst. Danke Dir !
Als ich das Modul zusammengesammelt hatte, ging das noch.

Ich formatiere meine Werte jetzt auf ganze Zahlen. Aber in den offiziellen Ramfiles kommt nichts an ?
Ich kann das Fehlermuster nicht wirklich interpretieren. in der gleichen Modulkonfiguration funktionieren Werte und andere funktionieren nicht.

Diese schreibe ich direkt:
/var/www/html/openWB/ramdisk/evuhz 50 >> funtioniert
/var/www/html/openWB/ramdisk/evuv1 227 >> funtioniert nicht
/var/www/html/openWB/ramdisk/evuv2 227 >> funtioniert nicht
/var/www/html/openWB/ramdisk/evuv3 225 >> funtioniert nicht
/var/www/html/openWB/ramdisk/bezugw1 -2 >> funtioniert nicht
/var/www/html/openWB/ramdisk/bezugw2 164 >> funtioniert nicht
/var/www/html/openWB/ramdisk/bezugw3 141 >> funtioniert nicht

Diese über das EVU HTTP Modul
/var/www/html/openWB/ramdisk/bezuga1_senec 1 >> funtioniert nicht
/var/www/html/openWB/ramdisk/bezuga2_senec 0 >> funtioniert nicht
/var/www/html/openWB/ramdisk/bezuga3_senec 1 >> funtioniert nicht
/var/www/html/openWB/ramdisk/wattbezug_senec 303 >> funtioniert
/var/www/html/openWB/ramdisk/bezugkwh_senec 4340814 >> funtioniert
/var/www/html/openWB/ramdisk/einspeisungkwh_senec 17857250 >> funtioniert



Das HTTP PV Modul liest meine Werte, aber pvwatt_senec wird negativ angezeigt. (grüne Fläche nach unten)
/var/www/html/openWB/ramdisk/pvwatt_senec 0
/var/www/html/openWB/ramdisk/pvewh_senec 27533054

Das HTTP Batteriespeicher funktioniert:
/var/www/html/openWB/ramdisk/speicherleistung_senec -143
/var/www/html/openWB/ramdisk/speichersoc_senec 5
/var/www/html/openWB/ramdisk/speicherikwh_senec 4018643
/var/www/html/openWB/ramdisk/speicherekwh_senec 3791204
Heckert 9,9 kWp PV
Fronius Symo 10.0-3-M WR
SENEC Speicher 5 kWh
openWB series2 standard+
Auto: Zoe R110
Restliche Hausautomation: FHEM
LenaK
Beiträge: 975
Registriert: Fr Jan 22, 2021 6:40 am

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von LenaK »

Kommt eine Fehlermeldung im Log?
Bitte das Debuglevel auf 2 stellen und einen Auszug aus dem Debuglog posten, wenn der Fehler auftritt.

Die NIghtly ist akutell? Da gab's zwischendurch auch noch einen Fix für das Http-Modul.
yankee
Beiträge: 481
Registriert: Sa Mai 16, 2020 11:34 am

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von yankee »

Ich emphele dir die Dateien nicht mehr selbst direkt zu schreiben. Es gibt mittlerweile eine API. So geht es:

Code: Alles auswählen

from modules.common.component_state import BatState, CounterState, InverterState
from modules.common.store import get_bat_value_store, get_counter_value_store,get_inverter_value_store

get_bat_value_store(1).set(BatState(
    imported=123.45,
    exported=123.45,
    power=123.45,
    soc=12.34
))

get_counter_value_store(1).set(CounterState(
    imported=123.45,
    exported=123.45,
    power=123.45,
    voltages=[229, 230, 231],
    currents=[123.45, 123.45, 123.45],
    powers=[123.45, 123.45, 123.45],
    power_factors=[0.9, 0.95, 1.0],
    frequency=50.001
))

get_inverter_value_store(1).set(InverterState(
    counter=123.45,
    power=-123.45,
    currents=[123.45, 123.45, 123.45]
))
Die "1" in `get_XXXX_value_store` ist die Komponentennummer (im Zweifelsfall ist das immer 1, aber kann auch höher sein, wenn es mehrere Module gibt). Die Parameter zu den `XXXState` objekten sind fast alle Optional, du brauchst nur die zu übergeben, die du auch hast. Die API übernimmt dann automatisch das Runden auf ganze Zahlen (wo es nötig ist) für dich, du läufst nicht in die Gefahr die zu vertippen ohne es zu bemerken (ein Tippfehler hier wäre sofort ein Laufzeitfehler und nicht ein erfolgreiches Schreiben in eine falsche Datei).

Es gibt auch keine Notwendigkeit das HTTP-Modul zu verwenden. Wenn du ohnehin direkt in die Ramdisk schreibst, dann muss ja nicht noch ein weiteres Modul dazwischen funken.

Du könntest auch einen PR stellen, damit dein Modul in den offiziellen openWB-Code rein kommt.
derNeueDet
Beiträge: 4197
Registriert: Mi Nov 11, 2020 7:16 pm

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von derNeueDet »

Ich glaube das ist der Grund weshalb es kein entsprechendes Modul gibt.

viewtopic.php?p=9282#p9282
10kWp PV mit SMA Tripower 10000TL-10 (PE11 mit SDM72V2); 2,4kWp mit Solis 2.5 G6 (EE11 mit SDM120). OpenWB Standard+. EVU EM540 an einem Raspi mit Venus OS. BEV Mercedes EQA 250 (07/2023)
cjungde
Beiträge: 115
Registriert: Mo Jan 27, 2020 9:48 pm

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von cjungde »

Hallo zusammen,

Danke für Eure Tips!

@yankee: Super Tip ! Seit welcher Version gibt es die API ? Ich biete den Code hier auch für Interessierte zum Nachbau an, daher muss ich die Mindest OpenWB Version mit erwähnen. Ich werde es mir nach meinem Urlaub anschauen.
Hat es dann heute überhaupt noch einen Effekt, wenn ich direkt etwas in die Ramdisk schreibe?
Diese Werte hier werde ich aktuell dann nicht über die RamDisk in die OpenWB bringen, richtig ?

Code: Alles auswählen

/var/www/html/openWB/ramdisk/evuhz 50 >> funtioniert
/var/www/html/openWB/ramdisk/evuv1 227 >> funtioniert nicht
/var/www/html/openWB/ramdisk/evuv2 227 >> funtioniert nicht
/var/www/html/openWB/ramdisk/evuv3 225 >> funtioniert nicht
/var/www/html/openWB/ramdisk/bezugw1 -2 >> funtioniert nicht
/var/www/html/openWB/ramdisk/bezugw2 164 >> funtioniert nicht
/var/www/html/openWB/ramdisk/bezugw3 141 >> funtioniert nicht

Wie derNeueDet schreibt, ist mir der Weg über einen PR wegen dem Batteriehersteller leider verwehrt. Bei einem Neukauf der Batterie wäre das für mich ein Thema, aber mit dem eigenen Modul konnte ich mir (und ein paar Wenigen anderen) ganz gut helfen.

@LenaK:
Ich habe gerade die folgende Version aktiv: 1.9.250 (2022-01-12 15:01:08 +0100 [af01572c] )

Ich habe dass LogLvl auf 2 gesetzt und bekomme folgende Meldungen für das EVU und Speicher HTTP modul:
Für mich scheint das Problem ein falsche Character zu sein.

"UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 56: ordinal not in range(128)"

Code: Alles auswählen

2022-01-15 08:13:35: RET: 0 (LV2) at 21 main modules/bezug_http/main.sh
2022-01-15 08:13:35: PID: 27394: legacy run server: Completed running command in 0.16s: ["modules.http.device","counter","http://127.0.0.1/openWB/ramdisk/wattbezug_senec","http://127.0.0.1
2022-01-15 08:13:35: PID: 27394: root: EVU Einspeisung: 17858943.0
2022-01-15 08:13:35: PID: 27394: root: EVU Bezug: 4346490.0
2022-01-15 08:13:35: PID: 27394: root: EVU Watt: 388.0
2022-01-15 08:13:35: PID: 27394: root: Antwort auf http://127.0.0.1/openWB/ramdisk/wattbezug_senec 388
2022-01-15 08:13:35: PID: 27394: root: Get-Response: 388
2022-01-15 08:13:35: PID: 27394: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/wattbezug_senec HTTP/1.1" 200 3
2022-01-15 08:13:35: PID: 27394: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:13:34: PID: 27394: root: Antwort auf http://127.0.0.1/openWB/ramdisk/einspeisungkwh_senec 17858943
2022-01-15 08:13:34: PID: 27394: root: Get-Response: 17858943
2022-01-15 08:13:34: PID: 27394: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/einspeisungkwh_senec HTTP/1.1" 200 8
2022-01-15 08:13:34: PID: 27394: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:13:34: PID: 27394: root: Antwort auf http://127.0.0.1/openWB/ramdisk/bezugkwh_senec 4346490
2022-01-15 08:13:34: PID: 27394: root: Get-Response: 4346490
2022-01-15 08:13:34: PID: 27394: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/bezugkwh_senec HTTP/1.1" 200 7
2022-01-15 08:13:34: PID: 27394: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:13:34: PID: 27394: root: Antwort auf http://127.0.0.1/openWB/ramdisk/bezuga3_senec 1
2022-01-15 08:13:34: PID: 27394: root: Get-Response: 1
2022-01-15 08:13:34: PID: 27394: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/bezuga3_senec HTTP/1.1" 200 1
2022-01-15 08:13:34: PID: 27394: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:13:34: PID: 27394: root: Antwort auf http://127.0.0.1/openWB/ramdisk/bezuga2_senec 1
2022-01-15 08:13:34: PID: 27394: root: Get-Response: 1
2022-01-15 08:13:34: PID: 27394: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/bezuga2_senec HTTP/1.1" 200 1
2022-01-15 08:13:34: PID: 27394: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:13:34: PID: 27394: root: Antwort auf http://127.0.0.1/openWB/ramdisk/bezuga1_senec 1
2022-01-15 08:13:34: PID: 27394: root: Get-Response: 1
2022-01-15 08:13:34: PID: 27394: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/bezuga1_senec HTTP/1.1" 200 1
2022-01-15 08:13:34: PID: 27394: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3.5/threading.py", line 862, in run
self.run()
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self._bootstrap_inner()
File "/usr/lib/python3.5/threading.py", line 882, in _bootstrap
Call stack:
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 56: ordinal not in range(128)
stream.write(msg)
File "/usr/lib/python3.5/logging/__init__.py", line 983, in emit
Traceback (most recent call last):
--- Logging error ---
Arguments: ()
Message: 'Komponente HTTP Z\xe4hler auslesen.'
self.logger.debug(message, exc_info=exception)
File "/var/www/html/openWB/packages/helpermodules/log.py", line 40, in debug
log.MainLogger().debug("Komponente "+self.component_config["name"]+" auslesen.")
File "/var/www/html/openWB/packages/modules/http/counter.py", line 42, in update
self._components[component].update()
File "/var/www/html/openWB/packages/modules/http/device.py", line 65, in update
device.update()
File "/var/www/html/openWB/packages/modules/http/device.py", line 98, in run_device_legacy
run_device_legacy(create_legacy_device_config(power_path), component_config)
File "/var/www/html/openWB/packages/modules/http/device.py", line 132, in read_legacy_counter
parser.set_defaults(RUN=lambda args: function(*[getattr(args, argument_name) for argument_name in arg_spec.args]))
File "/var/www/html/openWB/packages/helpermodules/cli/_run_using_positional_cli_args.py", line 19, in <lambda>
args.RUN(args)
File "/var/www/html/openWB/packages/helpermodules/cli/_run_using_positional_cli_args.py", line 34, in run_using_positional_cli_args
{"bat": read_legacy_bat, "counter": read_legacy_counter, "inverter": read_legacy_inverter}, argv
File "/var/www/html/openWB/packages/modules/http/device.py", line 147, in main
importlib.import_module(parsed[0]).main(parsed[1:])
File "/var/www/html/openWB/packages/legacy_run_server.py", line 77, in handle_message
self.__callback(read_all_bytes(connection))
File "/var/www/html/openWB/packages/legacy_run_server.py", line 56, in handle_connection
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3.5/threading.py", line 862, in run
self.run()
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self._bootstrap_inner()
File "/usr/lib/python3.5/threading.py", line 882, in _bootstrap
Call stack:
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 56: ordinal not in range(128)
stream.write(msg)
File "/usr/lib/python3.5/logging/__init__.py", line 983, in emit
Traceback (most recent call last):
--- Logging error ---
Arguments: ()
Message: 'Komponente HTTP Z\xe4hler auslesen.'
self.logger.debug(message, exc_info=exception)
File "/var/www/html/openWB/packages/helpermodules/log.py", line 40, in debug
log.MainLogger().debug("Komponente "+self.component_config["name"]+" auslesen.")
File "/var/www/html/openWB/packages/modules/http/counter.py", line 42, in update
self._components[component].update()
File "/var/www/html/openWB/packages/modules/http/device.py", line 65, in update
device.update()
File "/var/www/html/openWB/packages/modules/http/device.py", line 98, in run_device_legacy
run_device_legacy(create_legacy_device_config(power_path), component_config)
File "/var/www/html/openWB/packages/modules/http/device.py", line 132, in read_legacy_counter
parser.set_defaults(RUN=lambda args: function(*[getattr(args, argument_name) for argument_name in arg_spec.args]))
File "/var/www/html/openWB/packages/helpermodules/cli/_run_using_positional_cli_args.py", line 19, in <lambda>
args.RUN(args)
File "/var/www/html/openWB/packages/helpermodules/cli/_run_using_positional_cli_args.py", line 34, in run_using_positional_cli_args
{"bat": read_legacy_bat, "counter": read_legacy_counter, "inverter": read_legacy_inverter}, argv
File "/var/www/html/openWB/packages/modules/http/device.py", line 147, in main
importlib.import_module(parsed[0]).main(parsed[1:])
File "/var/www/html/openWB/packages/legacy_run_server.py", line 77, in handle_message
self.__callback(read_all_bytes(connection))
File "/var/www/html/openWB/packages/legacy_run_server.py", line 56, in handle_connection
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3.5/threading.py", line 862, in run
self.run()
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self._bootstrap_inner()
File "/usr/lib/python3.5/threading.py", line 882, in _bootstrap
Call stack:
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 56: ordinal not in range(128)
stream.write(msg)
File "/usr/lib/python3.5/logging/__init__.py", line 983, in emit
Traceback (most recent call last):
--- Logging error ---
Arguments: ()
Message: 'Komponente HTTP Z\xe4hler auslesen.'
self.logger.debug(message, exc_info=exception)
File "/var/www/html/openWB/packages/helpermodules/log.py", line 40, in debug
log.MainLogger().debug("Komponente "+self.component_config["name"]+" auslesen.")
File "/var/www/html/openWB/packages/modules/http/counter.py", line 42, in update
self._components[component].update()
File "/var/www/html/openWB/packages/modules/http/device.py", line 65, in update
device.update()
File "/var/www/html/openWB/packages/modules/http/device.py", line 98, in run_device_legacy
run_device_legacy(create_legacy_device_config(power_path), component_config)
File "/var/www/html/openWB/packages/modules/http/device.py", line 132, in read_legacy_counter
parser.set_defaults(RUN=lambda args: function(*[getattr(args, argument_name) for argument_name in arg_spec.args]))
File "/var/www/html/openWB/packages/helpermodules/cli/_run_using_positional_cli_args.py", line 19, in <lambda>
args.RUN(args)
File "/var/www/html/openWB/packages/helpermodules/cli/_run_using_positional_cli_args.py", line 34, in run_using_positional_cli_args
{"bat": read_legacy_bat, "counter": read_legacy_counter, "inverter": read_legacy_inverter}, argv
File "/var/www/html/openWB/packages/modules/http/device.py", line 147, in main
importlib.import_module(parsed[0]).main(parsed[1:])
File "/var/www/html/openWB/packages/legacy_run_server.py", line 77, in handle_message
self.__callback(read_all_bytes(connection))
File "/var/www/html/openWB/packages/legacy_run_server.py", line 56, in handle_connection
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3.5/threading.py", line 862, in run
self.run()
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self._bootstrap_inner()
File "/usr/lib/python3.5/threading.py", line 882, in _bootstrap
Call stack:
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 56: ordinal not in range(128)
stream.write(msg)
File "/usr/lib/python3.5/logging/__init__.py", line 983, in emit
Traceback (most recent call last):
--- Logging error ---
Arguments: ()
Message: 'Komponente HTTP Z\xe4hler auslesen.'
self.logger.debug(message, exc_info=exception)
File "/var/www/html/openWB/packages/helpermodules/log.py", line 40, in debug
log.MainLogger().debug("Komponente "+self.component_config["name"]+" auslesen.")
File "/var/www/html/openWB/packages/modules/http/counter.py", line 42, in update
self._components[component].update()
File "/var/www/html/openWB/packages/modules/http/device.py", line 65, in update
device.update()
File "/var/www/html/openWB/packages/modules/http/device.py", line 98, in run_device_legacy
run_device_legacy(create_legacy_device_config(power_path), component_config)
File "/var/www/html/openWB/packages/modules/http/device.py", line 132, in read_legacy_counter
parser.set_defaults(RUN=lambda args: function(*[getattr(args, argument_name) for argument_name in arg_spec.args]))
File "/var/www/html/openWB/packages/helpermodules/cli/_run_using_positional_cli_args.py", line 19, in <lambda>
args.RUN(args)
File "/var/www/html/openWB/packages/helpermodules/cli/_run_using_positional_cli_args.py", line 34, in run_using_positional_cli_args
2022-01-15 08:13:34: PID: 27394: root: Start device reading {'component0': <modules.http.counter.HttpCounter object at 0x71a87d50>}
2022-01-15 08:13:34: PID: 27394: root: Http Konfiguration: {'domain': '127.0.0.1', 'protocol': 'http'}{'imported_path': '/openWB/ramdisk/bezugkwh_senec', 'power_path': '/openWB/ramdisk/wattbezug_senec', 'power_l3_path': '/openWB/ramdisk/bezuga3_senec', 'exported_path': '/openWB/ramdisk/einspeisungkwh_senec', 'power_l1_path': '/openWB/ramdisk/bezuga1_senec', 'power_l2_path': '/openWB/ramdisk/bezuga2_senec'}
2022-01-15 08:13:34: PID: 27394: legacy run server: Received command ["modules.http.device","counter","http://127.0.0.1/openWB/ramdisk/wattbezug_senec","http://127.0.0.1
2022-01-15 08:13:33: BattLeistung: -3 (LV1) at 31 main modules/speicher_http/main.sh
2022-01-15 08:13:33: RET: 0 (LV2) at 27 main modules/speicher_http/main.sh
2022-01-15 08:13:33: PID: 27394: legacy run server: Completed running command in 0.09s: ["modules.http.device","bat","http://127.0.0.1/openWB/ramdisk/speicherleistung_senec","http://127.0.
2022-01-15 08:13:33: PID: 27394: root: BAT Bezug: 4023218.0
2022-01-15 08:13:33: PID: 27394: root: BAT Einspeisung: 3795598.0
2022-01-15 08:13:33: PID: 27394: root: BAT Watt: -3.0
2022-01-15 08:13:33: PID: 27394: root: Antwort auf http://127.0.0.1/openWB/ramdisk/speicherekwh_senec 3795598
2022-01-15 08:13:33: PID: 27394: root: Get-Response: 3795598
2022-01-15 08:13:33: PID: 27394: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/speicherekwh_senec HTTP/1.1" 200 7
2022-01-15 08:13:33: PID: 27394: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:13:33: PID: 27394: root: Antwort auf http://127.0.0.1/openWB/ramdisk/speicherikwh_senec 4023218
2022-01-15 08:13:33: PID: 27394: root: Get-Response: 4023218
2022-01-15 08:13:33: PID: 27394: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/speicherikwh_senec HTTP/1.1" 200 7
2022-01-15 08:13:33: PID: 27394: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:13:33: PID: 27394: root: Antwort auf http://127.0.0.1/openWB/ramdisk/speichersoc_senec 0
2022-01-15 08:13:33: PID: 27394: root: Get-Response: 0
2022-01-15 08:13:33: PID: 27394: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/speichersoc_senec HTTP/1.1" 200 1
2022-01-15 08:13:33: PID: 27394: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:13:33: PID: 27394: root: Antwort auf http://127.0.0.1/openWB/ramdisk/speicherleistung_senec -3
2022-01-15 08:13:33: PID: 27394: root: Get-Response: -3
2022-01-15 08:13:33: PID: 27394: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/speicherleistung_senec HTTP/1.1" 200 2
2022-01-15 08:13:33: PID: 27394: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:13:33: PID: 27394: root: Komponente HTTP Speicher auslesen.
2022-01-15 08:13:33: PID: 27394: root: Start device reading {'component0': <modules.http.bat.HttpBat object at 0x72bc62f0>}
2022-01-15 08:13:33: PID: 27394: root: Http Konfiguration: {'domain': '127.0.0.1', 'protocol': 'http'}{'imported_path': '/openWB/ramdisk/speicherikwh_senec', 'power_path': '/openWB/ramdisk/speicherleistung_senec', 'exported_path': '/openWB/ramdisk/speicherekwh_senec', 'soc_path': '/openWB/ramdisk/speichersoc_senec'}
2022-01-15 08:13:33: PID: 27394: legacy run server: Received command ["modules.http.device","bat","http://127.0.0.1/openWB/ramdisk/speicherleistung_senec","http://127.0.
2022-01-15 08:13:33: Speicher SoC: http://127.0.0.1/openWB/ramdisk/speichersoc_senec (LV2) at 22 main modules/speicher_http/main.sh
2022-01-15 08:13:33: Speicher Watt: http://127.0.0.1/openWB/ramdisk/speicherleistung_senec (LV2) at 21 main modules/speicher_http/main.sh
2022-01-15 08:13:33: Speicher Import: http://127.0.0.1/openWB/ramdisk/speicherikwh_senec (LV2) at 20 main modules/speicher_http/main.sh
2022-01-15 08:13:33: Speicher Export: http://127.0.0.1/openWB/ramdisk/speicherekwh_senec (LV2) at 19 main modules/speicher_http/main.sh
nach dem Update auf 1.9.250 (2022-01-14 16:31:53 +0100 [b8e58965] ) ist der ASCII Fehler weg

Code: Alles auswählen

2022-01-15 08:27:34: RET: 0 (LV2) at 21 main modules/bezug_http/main.sh
2022-01-15 08:27:34: PID: 5038: legacy run server: Completed running command in 0.13s: ["modules.http.device","counter","http://127.0.0.1/openWB/ramdisk/wattbezug_senec","http://127.0.0.1
2022-01-15 08:27:34: PID: 5038: root: EVU Einspeisung: 17858943.0
2022-01-15 08:27:34: PID: 5038: root: EVU Bezug: 4346576.0
2022-01-15 08:27:34: PID: 5038: root: EVU Watt: 350.0
2022-01-15 08:27:34: PID: 5038: root: Antwort auf http://127.0.0.1/openWB/ramdisk/wattbezug_senec 350
2022-01-15 08:27:34: PID: 5038: root: Get-Response: 350
2022-01-15 08:27:34: PID: 5038: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/wattbezug_senec HTTP/1.1" 200 3
2022-01-15 08:27:34: PID: 5038: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:27:34: PID: 5038: root: Antwort auf http://127.0.0.1/openWB/ramdisk/einspeisungkwh_senec 17858943
2022-01-15 08:27:34: PID: 5038: root: Get-Response: 17858943
2022-01-15 08:27:34: PID: 5038: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/einspeisungkwh_senec HTTP/1.1" 200 8
2022-01-15 08:27:34: PID: 5038: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:27:34: PID: 5038: root: Antwort auf http://127.0.0.1/openWB/ramdisk/bezugkwh_senec 4346576
2022-01-15 08:27:34: PID: 5038: root: Get-Response: 4346576
2022-01-15 08:27:34: PID: 5038: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/bezugkwh_senec HTTP/1.1" 200 7
2022-01-15 08:27:34: PID: 5038: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:27:34: PID: 5038: root: Antwort auf http://127.0.0.1/openWB/ramdisk/bezuga3_senec 0
2022-01-15 08:27:34: PID: 5038: root: Get-Response: 0
2022-01-15 08:27:34: PID: 5038: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/bezuga3_senec HTTP/1.1" 200 1
2022-01-15 08:27:34: PID: 5038: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:27:34: PID: 5038: root: Antwort auf http://127.0.0.1/openWB/ramdisk/bezuga2_senec 1
2022-01-15 08:27:34: PID: 5038: root: Get-Response: 1
2022-01-15 08:27:34: PID: 5038: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/bezuga2_senec HTTP/1.1" 200 1
2022-01-15 08:27:34: PID: 5038: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:27:34: PID: 5038: root: Antwort auf http://127.0.0.1/openWB/ramdisk/bezuga1_senec 1
2022-01-15 08:27:34: PID: 5038: root: Get-Response: 1
2022-01-15 08:27:34: PID: 5038: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/bezuga1_senec HTTP/1.1" 200 1
2022-01-15 08:27:34: PID: 5038: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:27:34: PID: 5038: root: Start device reading {'component0': <modules.http.counter.HttpCounter object at 0x73e326d0>}
2022-01-15 08:27:34: PID: 5038: root: Http Konfiguration: {'protocol': 'http', 'domain': '127.0.0.1'}{'power_l2_path': '/openWB/ramdisk/bezuga2_senec', 'power_l1_path': '/openWB/ramdisk/bezuga1_senec', 'imported_path': '/openWB/ramdisk/bezugkwh_senec', 'power_path': '/openWB/ramdisk/wattbezug_senec', 'power_l3_path': '/openWB/ramdisk/bezuga3_senec', 'exported_path': '/openWB/ramdisk/einspeisungkwh_senec'}
2022-01-15 08:27:34: PID: 5038: legacy run server: Received command ["modules.http.device","counter","http://127.0.0.1/openWB/ramdisk/wattbezug_senec","http://127.0.0.1
2022-01-15 08:27:33: BattLeistung: -3 (LV1) at 31 main modules/speicher_http/main.sh
2022-01-15 08:27:33: RET: 0 (LV2) at 27 main modules/speicher_http/main.sh
2022-01-15 08:27:33: PID: 5038: legacy run server: Completed running command in 0.08s: ["modules.http.device","bat","http://127.0.0.1/openWB/ramdisk/speicherleistung_senec","http://127.0.
2022-01-15 08:27:33: PID: 5038: root: BAT Bezug: 4023218.0
2022-01-15 08:27:33: PID: 5038: root: BAT Einspeisung: 3795599.0
2022-01-15 08:27:33: PID: 5038: root: BAT Watt: -3.0
2022-01-15 08:27:33: PID: 5038: root: Antwort auf http://127.0.0.1/openWB/ramdisk/speicherekwh_senec 3795599
2022-01-15 08:27:33: PID: 5038: root: Get-Response: 3795599
2022-01-15 08:27:33: PID: 5038: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/speicherekwh_senec HTTP/1.1" 200 7
2022-01-15 08:27:33: PID: 5038: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:27:33: PID: 5038: root: Antwort auf http://127.0.0.1/openWB/ramdisk/speicherikwh_senec 4023218
2022-01-15 08:27:33: PID: 5038: root: Get-Response: 4023218
2022-01-15 08:27:33: PID: 5038: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/speicherikwh_senec HTTP/1.1" 200 7
2022-01-15 08:27:33: PID: 5038: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:27:33: PID: 5038: root: Antwort auf http://127.0.0.1/openWB/ramdisk/speichersoc_senec 0
2022-01-15 08:27:33: PID: 5038: root: Get-Response: 0
2022-01-15 08:27:33: PID: 5038: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/speichersoc_senec HTTP/1.1" 200 1
2022-01-15 08:27:33: PID: 5038: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:27:33: PID: 5038: root: Antwort auf http://127.0.0.1/openWB/ramdisk/speicherleistung_senec -3
2022-01-15 08:27:33: PID: 5038: root: Get-Response: -3
2022-01-15 08:27:33: PID: 5038: requests.packages.urllib3.connectionpool: http://127.0.0.1:80 "GET /openWB/ramdisk/speicherleistung_senec HTTP/1.1" 200 2
2022-01-15 08:27:33: PID: 5038: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
2022-01-15 08:27:33: PID: 5038: root: Komponente HTTP Speicher auslesen.
2022-01-15 08:27:33: PID: 5038: root: Start device reading {'component0': <modules.http.bat.HttpBat object at 0x73e30d10>}
2022-01-15 08:27:33: PID: 5038: root: Http Konfiguration: {'protocol': 'http', 'domain': '127.0.0.1'}{'soc_path': '/openWB/ramdisk/speichersoc_senec', 'imported_path': '/openWB/ramdisk/speicherikwh_senec', 'exported_path': '/openWB/ramdisk/speicherekwh_senec', 'power_path': '/openWB/ramdisk/speicherleistung_senec'}
2022-01-15 08:27:33: PID: 5038: legacy run server: Received command ["modules.http.device","bat","http://127.0.0.1/openWB/ramdisk/speicherleistung_senec","http://127.0.
2022-01-15 08:27:33: Speicher SoC: http://127.0.0.1/openWB/ramdisk/speichersoc_senec (LV2) at 22 main modules/speicher_http/main.sh
2022-01-15 08:27:33: Speicher Watt: http://127.0.0.1/openWB/ramdisk/speicherleistung_senec (LV2) at 21 main modules/speicher_http/main.sh
2022-01-15 08:27:33: Speicher Import: http://127.0.0.1/openWB/ramdisk/speicherikwh_senec (LV2) at 20 main modules/speicher_http/main.sh
2022-01-15 08:27:33: Speicher Export: http://127.0.0.1/openWB/ramdisk/speicherekwh_senec (LV2) at 19 main modules/speicher_http/main.sh
Kann es sein, dass die Stromstärke im EVU Status berechnet wird und ich sie deshalb nicht sehe, weil ich die Spannung nicht laden kann ?
Wenn ja, dann muss mein nächster Schritt sein, auf die API zu wechseln.
EVU.jpg
Heckert 9,9 kWp PV
Fronius Symo 10.0-3-M WR
SENEC Speicher 5 kWh
openWB series2 standard+
Auto: Zoe R110
Restliche Hausautomation: FHEM
yankee
Beiträge: 481
Registriert: Sa Mai 16, 2020 11:34 am

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von yankee »

cjungde hat geschrieben: Sa Jan 15, 2022 7:39 am @yankee: Super Tip ! Seit welcher Version gibt es die API ?
Müsste meine ich ab 6b3f41cb6dc76d86cd6e321cff97665222c46f41 26.11.21 at 09:14 funktionieren.
cjungde hat geschrieben: Sa Jan 15, 2022 7:39 amHat es dann heute überhaupt noch einen Effekt, wenn ich direkt etwas in die Ramdisk schreibe?
Ja, hat es. Aktuell macht auf oWB1 die API nichts anderes als die Werte in die Ramdisk zu schreiben. Es ist nur übersichtlicher und weniger fehleranfällig. In oWB2 schreibt exakt die selbe API nicht mehr in die Ramdisk sondern an den Broker. Damit bist du vorwärtskompatibel.
cjungde hat geschrieben: Sa Jan 15, 2022 7:39 amDiese Werte hier werde ich aktuell dann nicht über die RamDisk in die OpenWB bringen, richtig ?
Ja doch, das müsste schon auch noch funktionieren. Ich bräuchte mehr Kontext um zu sagen warum das bei dir nicht geht. Um nicht zu sagen den Code. Am praktischsten wäre, wenn du den Code auf einem Fork in Github hättest, das würde es anderen Leuten auch einfacher machen deinen Code direkt in die oWB reinzuladen, wenn du deine Änderungen als Fork dort maintainst.
cjungde hat geschrieben: Sa Jan 15, 2022 7:39 am

Code: Alles auswählen

2022-01-15 08:13:34: PID: 27394: requests.packages.urllib3.connectionpool: Starting new HTTP connection (1): 127.0.0.1:80
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3.5/threading.py", line 862, in run
self.run()
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self._bootstrap_inner()
File "/usr/lib/python3.5/threading.py", line 882, in _bootstrap
Call stack:
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 56: ordinal not in range(128)
stream.write(msg)
File "/usr/lib/python3.5/logging/__init__.py", line 983, in emit
Der Fehler ist mysteriös. Hier wird einfach nur versucht die Nachricht "Komponente HTTP Zähler auslesen." zu loggen. Das geht schief. Der Logger stolpert darüber, dass das "ä" kein gültiges ASCII-Zeichen ist. Es ist unicode-codiert und tatsächlich kein gültiges ASCII-Zeichen. Es hat auch nie irgendwer etwas anderes behauptet. Die Lognachricht wird bei ALLEN Leuten rausgeschrieben, die das HTTP-Modul verwenden und das Loglevel auf 2 stehen haben. Dennoch habe ich diese Meldung noch nirgends hier im Forum wahrgenommen, was ein Hinweis sein könnte, dass das ganze an irgendetwas liegt, was du auf deinem System geändert hast (wenn das ein anderer Nutzer vom HTTP-Modul mitliest gerne bestätigen ob die Ausgabe der genannten Nachricht erfolgreich kommt).
cjungde hat geschrieben: Sa Jan 15, 2022 7:39 amnach dem Update auf 1.9.250 (2022-01-14 16:31:53 +0100 [b8e58965] ) ist der ASCII Fehler weg
Die Ausgabe "Komponente HTTP Zähler auslesen." ist aber auch nicht enthalten. Wurde also nur die Ausgabe vom Fehler den Fehler auszugeben nicht mehr ausgegeben?

Führe doch mal bitte folgendes simples Python-Programm bei dir auf dem Raspi aus und teile uns mit, ob es funktioniert (du solltest 2x"ä" sehen):

Code: Alles auswählen

import sys

sys.stdout.write("ä")
sys.stdout.write("\xe4")
cjungde hat geschrieben: Sa Jan 15, 2022 7:39 amKann es sein, dass die Stromstärke im EVU Status berechnet wird und ich sie deshalb nicht sehe, weil ich die Spannung nicht laden kann ?
Nein.
cjungde
Beiträge: 115
Registriert: Mo Jan 27, 2020 9:48 pm

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von cjungde »

Hallo yankee,

Das mit dem ä kam nicht aus meinem Code und ist seit der letzten nightly auch weg. Ich verwende die originalen HTTP EVU, PV und Speicher Module.
Mein Code ist komplett in diesem Post: viewtopic.php?t=1082

Den Umbau werde ich auf jeden Fall machen, aber ich kann erst nach dem 24.01. damit anfangen.

Zum Test:
Meine Python Erfahrung ist nicht sooo umfangreich, daher hier mein Weg:
Ich habe eine Test.py mit Deinen Zeilen erstellt, sie ausführbar gemacht und ausgeführt:

Code: Alles auswählen

pi@openWB:/var/www/html/openWB $ chmod +x ./modules/_senec/Test.py 
pi@openWB:/var/www/html/openWB $ ./modules/_senec/Test.py 
./modules/_senec/Test.py: Zeile 1: import: Kommando nicht gefunden.
./modules/_senec/Test.py: Zeile 3: Syntaxfehler beim unerwarteten Wort `"ä"'
./modules/_senec/Test.py: Zeile 3: `sys.stdout.write("ä")'
Das Grundsystem ist übrigens eine originale OpenWB Series2. Die SDKarte ist Original, ich habe den SSH Zugang, damit ich meine Senec zum Laufen bekomme. Ich habe keine Änderungen ausser den im anderen Post beschriebenen gemacht ( Vor allem keine Code Pages geändert)
Heckert 9,9 kWp PV
Fronius Symo 10.0-3-M WR
SENEC Speicher 5 kWh
openWB series2 standard+
Auto: Zoe R110
Restliche Hausautomation: FHEM
yankee
Beiträge: 481
Registriert: Sa Mai 16, 2020 11:34 am

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von yankee »

cjungde hat geschrieben: Sa Jan 15, 2022 10:07 pm Das mit dem ä kam nicht aus meinem Code
Es muss auch nicht aus deinem Code sein. ggf. irgendwo Systemkonfiguration oder sowas. Ich tappe auch ziemlich im dunkeln.
cjungde hat geschrieben: Sa Jan 15, 2022 10:07 pm und ist seit der letzten nightly auch weg
Wie schon gesagt: Ich finde in deiner Logausgabe das "Komponente HTTP Zähler auslesen". Das macht mich stutzig.
cjungde hat geschrieben: Sa Jan 15, 2022 10:07 pmMeine Python Erfahrung ist nicht sooo umfangreich, daher hier mein Weg: [..]
Fast richtig. Ausführen mittels:

Code: Alles auswählen

python3 Test.py
cjungde hat geschrieben: Sa Jan 15, 2022 10:07 pmIch habe keine Änderungen ausser den im anderen Post beschriebenen gemacht ( Vor allem keine Code Pages geändert)
Mhh... Ob das dann doch etwas ist, was alle Leute betrifft die das HTTP-Modul verwenden? Zumindest habe ich gerade mal in einem anderen Modul welches ich verwende eine ähnliche Logausgabe eingefügt und dort funktioniert es ganz normal wie erwartet.
Antworten