39_gassistant.pm (Google Assistant, Google Home)

Begonnen von dominik, 29 Januar 2019, 21:59:53

Vorheriges Thema - Nächstes Thema

Ralli

Zitat von: vbs am 21 Juni 2026, 15:24:58Ich hab:
01_FHEMWEB.pm                30805 2026-02-01 20:14:34Z rudolfkoenig

Danke. Damit besteht schon einmal kein Zusammenhang.
Gruß,
Ralli

Proxmox 9 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte OpenCCU (3.89.11.20260919) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.62), FBDECT, Siri und Alexa

rudolfkoenig

ZitatEinzige Hoffnung: Vielleicht wurden da irgendwelche Limits überschritten, weil das ein kostenloser Account ist [...]
Der Account ist nicht kostenlos, Dominik hat ihn vor vielen Jahren an den Verein uebergeben, wir zahlen je nach Nutzung unterschiedlich ca 20 EUR in Monat.
Fun-Fact: den vergleichbaren Amazon Account zahlt der Verein auch, hier sind die Kosten deutlich unter ein Euro im Monat.


Ralli

Zitat von: Ralli am 21 Juni 2026, 14:28:48Es kann aber eben kein Refreshtoken mehr abgeholt werden.

Nach weiteren erfolglosen Versuchen in den letzten Tagen heute dann erfolgreicher Login und Connect. Einzige Änderung meinerseits ein soeben durchgeführtes Update von Nodejs von v24.17.0 auf v24.18.0 .
Gruß,
Ralli

Proxmox 9 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte OpenCCU (3.89.11.20260919) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.62), FBDECT, Siri und Alexa

vbs

Zitat von: Ralli am 25 Juni 2026, 17:02:53Nach weiteren erfolglosen Versuchen in den letzten Tagen heute dann erfolgreicher Login und Connect. Einzige Änderung meinerseits ein soeben durchgeführtes Update von Nodejs von v24.17.0 auf v24.18.0 .
:o
Zitatroot@fhem:~# node -v
v20.19.2

OliverHH

#3049
gassistant "connecting..." wegen jsonlist2 / UTF-8 Content-Length

Hallo zusammen,

mein gassistant-fhem 4.1.3 blieb dauerhaft bei

gassistant-fhem-connection connecting...

Im Log stand gleichzeitig:

[FHEM] Connection: OK
Invalid response from FHEM: SyntaxError ...
SYNC skipped, no device mappings

Die Ursache war bei mir nicht gassistant oder Node.js, sondern ein fehlerhaft übertragenes JSON von FHEMWEB:

jsonlist2 room=GoogleAssistant

Bei einem reproduzierbaren Gerät ergab die Prüfung direkt in FHEM:

{ use Encode qw(encode_utf8);; my $x=CommandJsonList2(undef,"HWR.Waschmaschine");; "Zeichen=".length($x)." UTF8-Bytes=".length(encode_utf8($x)) }

Ergebnis:

Zeichen=7411 UTF8-Bytes=7415

FHEMWEB lieferte jedoch:

Content-Length: 7412
7412 Bytes empfangen

Das JSON wurde dadurch abgeschnitten.

Meine Version:

# $Id: 01_FHEMWEB.pm 31693 2026-09-28 14:37:41Z rudolfkoenig $

Workaround

Vorher Backup erstellen:

cp -a /opt/fhem/FHEM/01_FHEMWEB.pm \
      /opt/fhem/FHEM/01_FHEMWEB.pm.before-utf8-fix

In FW_finishRead() steht bei mir im Original ungefähr:

$FW_encodedByPlugin = undef;

my $length = length($FW_RET);

Diesen Bereich habe ich ersetzt durch:

my $length;
if(!$compressed &&
   !$FW_encodedByPlugin &&
   ($unicodeEncoding ||
    utf8::is_utf8($FW_RET))) {
  my $encoded = Encode::encode($hash->{encoding}, $FW_RET);
  $length = length($encoded);
} else {
  $length = length($FW_RET);
}

$FW_encodedByPlugin = undef;

Damit wird nur die UTF-8-Byte-Länge für Content-Length ermittelt. $FW_RET selbst wird nicht verändert.

Das ist wichtig: Mein erster Versuch mit

$FW_RET = Encode::encode(...)

führte zwar zu vollständigem JSON, aber zu doppelt kodierten Umlauten wie:

ü -> ü
ä -> ä

Mit der oben gezeigten korrigierten Variante habe ich dagegen vollständiges, gültiges JSON und die Umlaute bleiben korrekt.

Danach funktioniert bei mir auch

jsonlist2 room=GoogleAssistant

wieder und gassistant verbindet sich normal.

Wichtig:
Das ist ein lokal getesteter Workaround und kein offizieller FHEM-Fix. Die Zeilennummern können bei anderen FHEMWEB-Versionen abweichen.

KI-Hinweis:
Bei Analyse und Fehlersuche hatte ich Unterstützung durch Microsoft Copilot. Die Messungen und den Workaround habe ich auf meinen eigenen FHEM-Systemen getestet.

Vielleicht hilft es jemandem mit demselben Fehlerbild.
HMLAN, Raspberry Pi 2 mit HM-MOD-UART, Charly CCU3 mit Raspberrymatic, Tradfri Gateway, Google Assistant, HomeConnect