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

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von cjungde »

Hallo yankee,

Danke für die Hilfe mit Python.
Jetzt kommt alles richtig. Beide 'ä' werden angezeigt.

Code: Alles auswählen

pi@openWB:/var/www/html/openWB $ python3 ./modules/_senec/Test.py 
ääpi@openWB:/var/www/html/openWB $ 
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
LutzB
Beiträge: 3479
Registriert: Di Feb 25, 2020 9:23 am

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von LutzB »

Dürfte ein allgemeines Problem in Python < 3.7 sein. Wurde mit PR #1932 in der Nightly behoben.
derNeueDet
Beiträge: 4197
Registriert: Mi Nov 11, 2020 7:16 pm

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von derNeueDet »

Das /xe4 Problem habe ich seit heute auch auf meiner Standard+ nachdem ich auf .251 gewechselt habe.

Bei mir ist es das Wort Json Zähler, das das ganze auslöst.

Auf der original openWB unter Stretch:

Code: Alles auswählen

pi@openWB:~ $ python -V
Python 2.7.13
pi@openWB:~ $ python
Python 2.7.13 (default, Sep 26 2018, 18:42:22)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import sys
>>>
>>> sys.stdout.write("ä")
ä>>> sys.stdout.write("\xe4")
▒>>>
pi@openWB:~ $ python3 -V
Python 3.5.3
pi@openWB:~ $ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>>
>>> sys.stdout.write("ä")
ä1
>>> sys.stdout.write("\xe4")
ä1
>>>
auf einem Raspi unter Buster:

Code: Alles auswählen

pi@raspi4:~ $ python -V
Python 2.7.16
pi@raspi4:~ $ python
Python 2.7.16 (default, Oct 10 2019, 22:02:15)
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>>
>>> sys.stdout.write("ä")
ä>>> sys.stdout.write("\xe4")
▒>>>
pi@raspi4:~ $ python3 -V
Python 3.7.3
pi@raspi4:~ $ python3
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>>
>>> sys.stdout.write("ä")
ä1
>>> sys.stdout.write("\xe4")
ä1
>>>
Sieht so aus, als ob beim Aufruf des Loggings Python 2 gezogen wird.

Edit: Nee, kann es nicht sein. Auf dem Raspi4 mit Buster kommt im openWB.log kein Fehler. OpenWB Versionen auf beiden Systemen ist identisch.

Meiner Meinung nach muss es mit dem legacy_run_server unde der Python Version unter Stretch zusammen hängen. Auf meiner openWB Standard+ war davor eine ältere .250 Version. Bereits mit den neuen JSON Modulen, aber noch ohne legacy_run_server installiert.

VG
Det
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)
derNeueDet
Beiträge: 4197
Registriert: Mi Nov 11, 2020 7:16 pm

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von derNeueDet »

Code: Alles auswählen

--- Logging error ---
Traceback (most recent call last):
File "/usr/lib/python3.5/logging/__init__.py", line 983, in emit
stream.write(msg)
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 55: ordinal not in range(128)
Call stack:
File "/usr/lib/python3.5/threading.py", line 882, in _bootstrap
self._bootstrap_inner()
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/usr/lib/python3.5/threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "/var/www/html/openWB/packages/legacy_run_server.py", line 56, in handle_connection
self.__callback(read_all_bytes(connection))
File "/var/www/html/openWB/packages/legacy_run_server.py", line 77, in handle_message
importlib.import_module(parsed[0]).main(parsed[1:])
File "/var/www/html/openWB/packages/modules/json/device.py", line 100, in main
{"bat": read_legacy_bat, "counter": read_legacy_counter, "inverter": read_legacy_inverter}, argv
File "/var/www/html/openWB/packages/helpermodules/cli/_run_using_positional_cli_args.py", line 34, in run_using_positional_cli_args
args.RUN(args)
File "/var/www/html/openWB/packages/helpermodules/cli/_run_using_positional_cli_args.py", line 19, in <lambda>
parser.set_defaults(RUN=lambda args: function(*[getattr(args, argument_name) for argument_name in arg_spec.args]))
File "/var/www/html/openWB/packages/modules/json/device.py", line 90, in read_legacy_counter
jq_exported=jq_exported
File "/var/www/html/openWB/packages/modules/json/device.py", line 77, in read_legacy
dev.update()
File "/var/www/html/openWB/packages/modules/json/device.py", line 60, in update
self._components[component].update(response.json())
File "/var/www/html/openWB/packages/modules/json/counter.py", line 35, in update
log.MainLogger().debug("Komponente "+self.component_config["name"]+" auslesen.")
File "/var/www/html/openWB/packages/helpermodules/log.py", line 40, in debug
self.logger.debug(message, exc_info=exception)
Message: 'Komponente Json Z\xe4hler auslesen.'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
File "/usr/lib/python3.5/logging/__init__.py", line 983, in emit
stream.write(msg)
UnicodeEncodeError: 'ascii' codec can't encode character '\xe4' in position 55: ordinal not in range(128)
Call stack:
File "/usr/lib/python3.5/threading.py", line 882, in _bootstrap
self._bootstrap_inner()
File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
self.run()
File "/usr/lib/python3.5/threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "/var/www/html/openWB/packages/legacy_run_server.py", line 56, in handle_connection
self.__callback(read_all_bytes(connection))
File "/var/www/html/openWB/packages/legacy_run_server.py", line 77, in handle_message
importlib.import_module(parsed[0]).main(parsed[1:])
File "/var/www/html/openWB/packages/modules/json/device.py", line 100, in main
{"bat": read_legacy_bat, "counter": read_legacy_counter, "inverter": read_legacy_inverter}, argv
File "/var/www/html/openWB/packages/helpermodules/cli/_run_using_positional_cli_args.py", line 34, in run_using_positional_cli_args
args.RUN(args)
File "/var/www/html/openWB/packages/helpermodules/cli/_run_using_positional_cli_args.py", line 19, in <lambda>
parser.set_defaults(RUN=lambda args: function(*[getattr(args, argument_name) for argument_name in arg_spec.args]))
File "/var/www/html/openWB/packages/modules/json/device.py", line 90, in read_legacy_counter
jq_exported=jq_exported
File "/var/www/html/openWB/packages/modules/json/device.py", line 77, in read_legacy
dev.update()
File "/var/www/html/openWB/packages/modules/json/device.py", line 60, in update
self._components[component].update(response.json())
File "/var/www/html/openWB/packages/modules/json/counter.py", line 35, in update
log.MainLogger().debug("Komponente "+self.component_config["name"]+" auslesen.")
File "/var/www/html/openWB/packages/helpermodules/log.py", line 40, in debug
self.logger.debug(message, exc_info=exception)
Message: 'Komponente Json Z\xe4hler auslesen.'
Arguments: ()
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)
derNeueDet
Beiträge: 4197
Registriert: Mi Nov 11, 2020 7:16 pm

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von derNeueDet »

Seltsam, jetzt war ich weg und komme wieder und die Fehler aus dem Logging sind weg.
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)
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: So Jan 16, 2022 9:45 amJetzt kommt alles richtig. Beide 'ä' werden angezeigt.
Also du meinst bei meinem Programm kommt alles richtig, ja? Nicht im openWB-Log, oder? Oder hast du jetzt magischerweise im openWB.log "Komponente HTTP Zähler auslesen." drin stehen?

Bitte führe einmal mit ssh auf deinem Pi den Befehl "locale" aus und poste das Ergebnis.

EDIT: Und ob der folgende Befehl erfolgreich und ein "ä" ausgibt würde mich auch interessieren:

Code: Alles auswählen

python3 -c 'print("ä")' 2>&1 | while read -r line; do echo $line; done
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,

Ich meinte dein Test Programm.
Der Fehler erscheint mir jetzt behoben. Wie LutzB geschrieben hat, kommt der Fehler im Log nicht mehr.

Die Rückmeldung von locale kann ich erst nächste Woche ermitteln.
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: Mo Jan 17, 2022 8:34 pm Der Fehler erscheint mir jetzt behoben. Wie LutzB geschrieben hat, kommt der Fehler im Log nicht mehr.
Ich habe die Vermutung, dass es ein Fehler ist, dass der Fehler im Log nicht kommt. So ironisch das auch ist. Das versuche ich in #1935 zu beheben. Wenn der gemergt ist kommt der Fehler vermutlich wieder.

Der Gegenbeweis wäre, wenn die Meldung "Komponente HTTP Zähler auslesen." im Log auftauchen würde. Dann wäre wirklich alles in Ordnung. Deswegen nochmal:

Kommt der Text "Komponente HTTP Zähler auslesen." in deinem Log vor?
LutzB
Beiträge: 3479
Registriert: Di Feb 25, 2020 9:23 am

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von LutzB »

Bei mir seit der Änderung schon. War mir bei der Umstellung des SonnenBatterie Moduls aufgefallen.
cjungde
Beiträge: 115
Registriert: Mo Jan 27, 2020 9:48 pm

Re: RamDisk lesen und schreiben: Nightly 1.9.250

Beitrag von cjungde »

@yankee:

Der Vollständigkeit halber:
Hier der Test, den Du noch von mir wolltest:

Code: Alles auswählen

pi@openWB:/var/www/html/openWB $ python3 -c 'print("ä")' 2>&1 | while read -r line; do echo $line; done
ä
pi@openWB:/var/www/html/openWB $ 
und hier noch die Ausgabe von locale

Code: Alles auswählen

pi@openWB:/var/www/html/openWB $ locale
LANG=de_DE.UTF-8
LANGUAGE=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=de_DE.UTF-8
Das initiale Problem diese Threads scheint inzwischen auch gelöst zu sein. Ich bekomme meine Werte jetzt mit den HTTP Modulen in die OpenWb eingelesen.

Im "Rückmeldungen Nightly 1.9.251" Thread schreibst Du, dass die PV Leistung immer negativ ankommen muss, ausser sie kommt per MQTT. Bedeutet das, das ich ein Vorzeichen einbauen muss ?
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
Antworten