6.3 Beta - Serial Port + Status Ansicht

Hi,
ich hatte gerade meine 6.2 Installation auf die 6.3 Beta umgestellt.

Leider gab es masive Probleme mit der Kommunikation zu meiner Vaillant Heizung.
Dort schicke ich via Serial Port Daten hin. So wie es aussieht werden die aber nicht mehr „verstanden“.
Zurück auf die 6.2 geht wieder alles.
Kann das sein das es mit dem neuen UTF-8 Handling zu tun hat?

Ich konnte auch nicht mehr den Status via Pro Konsole überprüfen.

error_message_Status

Im Log direkt konnte ich nichts besonderes bei Serial Port finden.
Allerdings mache ich ein
$ping = shell_exec(„ping $id_adr -n 2“);
Das hat im Log seltsam ausgesehen (Umlaute)…Stört das die Ansicht?

Viele Grüße
Erik

Ich vermute eher, dass du irgendwo in der Ausgabe oder beim Senden in deinen Skripten nicht korrektes UTF-8 benutzt. Kannst da sein? Ist das ein Skript aus dem Forum, welches ich mir angucken könnte?

paresy

Ich habe mal weiter geforscht und das Problem liegt wohl bei der Übergabe zu einem zweiten Skript.

Skript 1:

   IPS_LogMessage ("Log_1_1", strlen($my_cmd));
   IPS_LogMessage ("Log_1_2", bin2hex($my_cmd));
   
   IPS_RunScriptEx (42138, Array("sendData" => $my_cmd));

Skript 2:

    IPS_LogMessage ("Log_2_1", strlen($_IPS['sendData']));
    IPS_LogMessage ("Log_2_2", bin2hex($_IPS['sendData']));

Ergebnis:
log

Ah, stimmt. Die Daten werden seit der 6.3 mit utf8_encode konform gemacht, sofern Sie es nicht waren. Du müsstest auf der Gegenseite diese mit utf8_decode wieder „zurück“ konvertieren. Optimalerweise würde ich die Daten aber Hex oder Base64 kodiert übergeben, damit du gar nicht in diesen Problemfall kommst.

paresy

Ehrlich gesagt finde ich es nich sonderlich toll wenn Symcon plötzlich „ungefragt“ und undokumentiert Daten konvertiert/ändert…

Fall noch jemand über das Problem fällt…
utf8_decode ist auch keine gute Lösung da ja es ja sein könnte das 2 Bytes als UTF-8 kodiertes Zeichen erkannt werden und dann auch wieder Müll raus kommt.
D.h. am besten Hex kodiert übergeben damit das utf8_encode was Symcon intern macht nicht stört.

Wir finden es auch nicht toll - irgendwann mussten wir uns jedoch an den Schritt herantrauen, dass Daten konsistent kodiert werden. Und dies ist jetzt überall sauber UTF-8. Sofern du in den Spezialschaltern CompatibilitySloppyUTF8 deaktivierst, bekommst du auch passende Fehler statt der transparenten Umkodierung.

paresy