UTF-8 Fehler seit IP-Symcon 6.3

@richimaint Danke für die Infos! Wir haben die betroffenen Stellen gefunden und setzen uns daran.

1 „Gefällt mir“

Fix ist jetzt im Beta Kanal verfügbar. Ich freue mich auf euer Feedback.

paresy

@Dr.Niels @paresy
Fehlermeldung ist bei mir leider immer noch vorhanden. Nach dem entfernen des Scripts (Siehe PM) funktioniert alles)

Gruß Thomas

Magst du schauen, ob du wirklich die Version von heute installiert hast? Ich habe hier auch ein passendes, defektes Skript am Laufen und kann es nicht mehr nachstellen.

Bei dir kommt es noch im Util Control? (Beim Öffnen des betroffenen Skriptes gibt es die Fehlermeldung noch - ggf. wollen wir dort den Dialog verbessern, sodass wir das Korrigieren vorschlagen)

paresy

Also Version 3b80b713700b-#350 von heute.
Keine Fehlermeldung beim Öffnen des Skripts.
Fehlermeldung im Util Control sobald das Skript im Verzeichnis existiert.
Auch Bearbeiten und Speichern des Skripts beseitigt das Probleme nicht.

Gruß Thomas

Magst du mir noch mal kurz das Skript per PM zusenden? Alternativ hole ich es mir Morgen von Niels, damit ich es ggf. direkt damit nachstellen kann. Bin gespannt, wo ich noch etwas übersehen habe.

paresy

Ich hab eben die letze Version eingespielt. Der UTF-8 Fehler bei meinem MQTT Device kommt nach wie vor. Mit 6.2 hat es einwandfrei funktioniert. Ich hätte das gerne wieder so.


Hier das Debug vom MQTT Server und Socket
mqtt_socket_daten.txt (13,8 KB)
mqtt_server_daten.txt (25,3 KB)

MQTT Configurator

Was kommen denn für Daten auf diesem Topic? Laut MQTT müssen Daten UTF-8 kodiert sein und dein Endgerät hält sich nicht daran, sondern sendet irgendwelche Binärdaten. Wie wertest du diese Daten aus? Was ist das für ein Gerät?

paresy

Mit der Revision 07e763adc3e27a ist bei mir der Fehler im Util Control behoben

Gruß Thomas

//Rohdaten aufbereiten
$rohdaten = GetValue ($rohdaten_ID);
$rohdaten_aufbereitet = bin2hex ( $rohdaten );
 
$redox =  (hexdec (substr ($rohdaten_aufbereitet, 24,2)) *256 + hexdec (substr ($rohdaten_aufbereitet, 26,2)) ) - 2000;
$ph    =  (hexdec (substr ($rohdaten_aufbereitet, 20,2)) *256 + hexdec (substr ($rohdaten_aufbereitet, 22,2)) ) / 100;

Damit hole ich aus der erstellten Variable die Werte

Ist ein Wassermessgerät mit WLAN Anschluss, PH-803W.
Wie gesagt, mit der Version 6.2 hat das einwandfrei funktioniert.
Wie es scheint, is soeben noch eine Version online gegangen. Ich hab die vom 20.11. installiert. Die neue von heute habe ich noch nicht gesehen.
Aktuell läuft
IP-Symcon 6.3, Windows (amd64), 20.11.2022, 3b80b713700b

Auch mit der heute online gegangenen Version funktioniert es nicht.

Hab mich noch mal schlau gemacht. Bei MQTT muss fast alles UTF-8 Konform sein - außer dem Payload. Der darf egal was an Bytes enthalten. Es wird zum nächsten Update bei MQTT ein Update geben mit einem „Binary“ Type, der die Daten dann HEX Kodiert in der String Variable ablegt. Du kannst dir dann das bin2hex sparen und IP-Symcon ist auch glücklich, dass die binären Daten sauber behandelt werden.

paresy

Perfekt. Vielen Dank. Ich werde berichten. Wir haben ja noch Winter und der Pool ist nicht aktiv. Somit kein wirkliches Problem. :wink:

Hallo in die Runde,

bei mir verstecken sich auch einige Skripte die den genannten UTF-8-Fehler bringen. Laufen tun sie alle nur im Editor zeigen sie den Fehler.

Util Control startet und zeigt keine Auffälligkeiten.

Jage ich das Skript durch Notepad++ und konvertiere es nach UTF-8 lädt es anschließend im internen Editor einwandfrei.

Das nur als Feedback zur Version IP-Symcon 6.3, Ubuntu (Docker) (amd64), 29.11.2022, 07e763adc3e2, ich kann damit leben.

Gruß
Werner

leider ist der Mistfehler bei mir immer noch nicht weg…


Ich habe die aktuelle V6.3 Rev. 02625c0a25d0
@paresy Wenn du mehr Infos brauchst, sag Bescheid.
Grüße
Jürgen

Zu schnell editiert. Siehe unten.

paresy

jepp

symcon/beta,now 6.3-225 arm64

Welches Modul ist das von dem die Daten kommen? Also zu wem gehören die Instanzen?

paresy

Shelly und MQTT. Und ganz skuril: Selbst eine inaktive MQTT-Instanz schmeißt den Fehler.

Korrektur: Die Instanz ist aktiv, aber der MQTT-Client der die Daten bereitstellt ist inaktiv/abgeschaltet.

Das Problem wird vermutlich eher beim Kodieren passieren. Ich dachte nur, dass ich in der Beta alle MQTT Probleme zu diesem Fehler gelöst hatte :-/ Kannst du mir irgendwie aus dem ServerSocket einen Payload zusenden, mit dem ich den Fehler nachstellen kann?

paresy

Habe gerade versucht mit grep die Daten aus dem logfile zu zaubern. Da bekomme ich allerdings den Fehler

grep: (Standardeingabe): Übereinstimmungen in Binärdatei

Wenn ich dann versuche, das logfile mit einem Editor zu öffnen, bekomme ich nur die Aussage,

fehlerhaft codierte Zeichen

Danach stürzt der Editor ab…
Ich kann Dir das Logfile aber gerne zur Verfügung stellen, hat aber 290MB.