[Docker / Container] echodevice

Begonnen von Sidey, 12 April 2026, 16:56:20

Vorheriges Thema - Nächstes Thema

FlatTV

Zitat von: tatu123 am 17 Juni 2026, 19:55:16Am längsten hab ich gebraucht zu erkennen das EchodeviceImport.pm aus dem git zu nehmen da die Funktion
"export_name_for_device" im fhem fehlt.

@Sidey
Hast du das mitbekommen?
Da gibt es unterschiedliche Inhalte.
Raspi4 - Docker mit deconz, openccu, fhem, alexa-fhem, alexa-cookie-service, nginx und AfterTouch. Fhem noch mit CUL, BOSE-ST und Alexa (Connector)

Sidey

#46

Zitat von: FlatTV am 19 Juni 2026, 18:10:28
Zitat von: tatu123 am 17 Juni 2026, 19:55:16Am längsten hab ich gebraucht zu erkennen das EchodeviceImport.pm aus dem git zu nehmen da die Funktion
"export_name_for_device" im fhem fehlt.

@Sidey
Hast du das mitbekommen?
Da gibt es unterschiedliche Inhalte.

Jetzt habe ich es verstanden, danke für den Hinweis.  8)
Bin mir aber nicht im klaren wieso es den Unterschied gibt.

Grüße Sidey
Nutze: SIGNALDuino, Homematic, Raspberry Pi, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt, tasmota

Maintainer von: SIGNALduino, SD_WS*, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp, midea-mqtt, whatsmeow-mqtt, alexa-cookie-service
https://github.com/sidey79?tab=repositories

Sidey

Zitat von: JWRu am 18 Juni 2026, 10:16:59Mal eine generelle Frage, da ich mit Docker nicht so bewandert bin:
Funktioniert das auch, wenn der Docker-Container auf einer anderen Maschine läuft?
Mein FHEM läuft nativ unter Debian Trixie auf einer ZBox und ich würde den Container eher auf meinem Synology NAS installieren.

Ich habe die Integration angepasst. Es funktioniert jetzt auch auf unterschiedlichen Hosts und ohne Dateifreigabe.
Dafür braucht es FHEM ab rev. 31377 (ab 22.06.2026) im Update und das im git repo hinterlegte HTTPMod.

Aktuell findet die Übertragung noch unverschlüsselt statt, das werde ich die nächsten Tage noch erweitern, so dass eine TLS Verschlüsselung möglich ist.

Grüße Sidey

Nutze: SIGNALDuino, Homematic, Raspberry Pi, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt, tasmota

Maintainer von: SIGNALduino, SD_WS*, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp, midea-mqtt, whatsmeow-mqtt, alexa-cookie-service
https://github.com/sidey79?tab=repositories

JWRu

Vielen Dank für die Anpassung!
Ich komme hoffentlich im Laufe der nächsten Woche mal dazu, den Container zu installieren.
Dazu habe ich noch die folgende Frage:
Woher weiß echodevice, dass der Cookie vom Container bezogen werden soll und nicht von dem lokal laufenden NPM-Service, der ja Probleme bereitet und die Systemlast nach oben treibt?
Die aktuelle Version von 37_echodevice.pm ist vom 14.11.2025 - da gab's ja deine Lösung noch gar nicht.
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon- und Bresser-Sensoren; Steuerung Viessmann-Heizung; ESP32 und ESP8266 über MQTT; Arduino

Sidey

Zitat von: JWRu am 25 Juni 2026, 08:23:46Die aktuelle Version von 37_echodevice.pm ist vom 14.11.2025 - da gab's ja deine Lösung noch gar nicht.

Die Grundidee ist, früher per ACS zu aktualisieren, als im echodevice angegeben.

Zum anderen, wenn Du in der FHEM Umgebung kein node hast, dann kann da nichts aufgerufen werden. Maximal kann eine Fehlermeldung erzeugt werden.

Grüße Sidey
Nutze: SIGNALDuino, Homematic, Raspberry Pi, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt, tasmota

Maintainer von: SIGNALduino, SD_WS*, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp, midea-mqtt, whatsmeow-mqtt, alexa-cookie-service
https://github.com/sidey79?tab=repositories

JWRu

ZitatZum anderen, wenn Du in der FHEM Umgebung kein node hast, dann kann da nichts aufgerufen werden. Maximal kann eine Fehlermeldung erzeugt werden.
Habe ich aber. Ich habe das nach dieser Vorschrift installiert: https://www.mwinklerblog.de/modul-echodevice-npm/ und auch bis zum Auftreten der Probleme genutzt.
(Zur Zeit ist mein Account-Device disabled).
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon- und Bresser-Sensoren; Steuerung Viessmann-Heizung; ESP32 und ESP8266 über MQTT; Arduino

Sidey

Zitat von: JWRu am 25 Juni 2026, 23:02:06Habe ich aber. Ich habe das nach dieser Vorschrift installiert: https://www.mwinklerblog.de/modul-echodevice-npm/ und auch bis zum Auftreten der Probleme genutzt.
(Zur Zeit ist mein Account-Device disabled).

Möchtest Du ACS nutzen oder geht damit etwas nicht und daher ist aktuell dein Stand deaktiviert?


Ich habe die Doku von ACS aktualisiert.

Solange der Wert von echodevice_NPMWaitForCookie größer ist, als der refresh von ACS wird das echodevice keine Aktualisierung versuchen.

Grüße Sidey

Nutze: SIGNALDuino, Homematic, Raspberry Pi, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt, tasmota

Maintainer von: SIGNALduino, SD_WS*, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp, midea-mqtt, whatsmeow-mqtt, alexa-cookie-service
https://github.com/sidey79?tab=repositories

JWRu

ZitatMöchtest Du ACS nutzen oder geht damit etwas nicht und daher ist aktuell dein Stand deaktiviert?
Mein echodevice Account-Device ist zur Zeit deswegen deaktiviert: https://forum.fhem.de/index.php?topic=144852.0
Ich habe den von Michael Winkler beschriebenen Patch in alexa.cookie.js https://forum.fhem.de/index.php?topic=144852.msg1364944 bisher nicht gemacht und auf einen endgültigen Fix gewartet.
Da es diesen noch nicht gibt, hatte ich überlegt auf ACS umzusteigen.
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon- und Bresser-Sensoren; Steuerung Viessmann-Heizung; ESP32 und ESP8266 über MQTT; Arduino

FlatTV

Ich habe noch eine alte Version am Start und bin nicht mehr so im Thema.
Wenn ich das aktuelle docker Image lade, brauche ich dann noch das Reading ,,export_name"?

Der Teil ,,attr AlexaCookieService get03URL %%ACS_BASEURL%%/api/cookie?save=%%ACS_EXPORT_NAME%%" scheint ja weggefallen zu sein.

Beste Grüße
Jörg
Raspi4 - Docker mit deconz, openccu, fhem, alexa-fhem, alexa-cookie-service, nginx und AfterTouch. Fhem noch mit CUL, BOSE-ST und Alexa (Connector)

Sidey

Zitat von: FlatTV am 19 Oktober 2026, 20:08:59Ich habe noch eine alte Version am Start und bin nicht mehr so im Thema.
Wenn ich das aktuelle docker Image lade, brauche ich dann noch das Reading ,,export_name"?


Nein den export_name benötigt man nicht mehr, weil die Datei nicht mehr durch den acs container geschrieben wird.
Ebenso braucht der acs container kein gemeinsames Volume mit FHEM.

Damit das klappt muss aber auch das httpmod aktualisiert werden.

Grüße Sidey
Nutze: SIGNALDuino, Homematic, Raspberry Pi, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt, tasmota

Maintainer von: SIGNALduino, SD_WS*, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp, midea-mqtt, whatsmeow-mqtt, alexa-cookie-service
https://github.com/sidey79?tab=repositories

FlatTV

Guten morgen,
ich habe den Container auf die aktuelle Version gebracht und httpmod aktualisiert.
Aktuell läuft alles, allerdings mache ich mir etwas Sorgen.
Laut log wurde bisher kein neues Cookie geschrieben.
Wenn ich das manuell auslöse, gibt der Cookie-Service das aus:

[2026-10-25T06:44:25,573 Europe/Berlin] [INFO] 127.0.0.1 - - [25/Oct/2026:05:44:25 +0000] "GET /healthz HTTP/1.1" 200 4465 "-" "-"
[2026-10-25T06:44:45,870 Europe/Berlin] [INFO] 172.27.0.5 - - [25/Oct/2026:05:44:45 +0000] "GET /api/cookie HTTP/1.0" 200 12322 "-" "fhem"
[2026-10-25T06:44:55,658 Europe/Berlin] [INFO] 127.0.0.1 - - [25/Oct/2026:05:44:55 +0000] "GET /healthz HTTP/1.1" 200 4465 "-" "-"
Im fhem Cache find ich aber kein Cookie mehr, ist das richtig?

Der Refresh sieht so aus:
[2026-10-25T06:56:14,822 Europe/Berlin] [INFO] Refresh finished (api) in 1690 ms
[2026-10-25T06:56:14,823 Europe/Berlin] [INFO] Refresh request handled in 1691 ms
[2026-10-25T06:56:14,823 Europe/Berlin] [INFO] 172.27.0.5 - - [25/Oct/2026:05:56:14 +0000] "POST /api/cookie/refresh HTTP/1.0" 200 4351 "-" "fhem"
[2026-10-25T06:56:29,238 Europe/Berlin] [INFO] 127.0.0.1 - - [25/Oct/2026:05:56:29 +0000] "GET /healthz HTTP/1.1" 200 4462 "-" "-"

Liebe Grüße
Jörg
Raspi4 - Docker mit deconz, openccu, fhem, alexa-fhem, alexa-cookie-service, nginx und AfterTouch. Fhem noch mit CUL, BOSE-ST und Alexa (Connector)

FlatTV

Wenn ich mich nicht irre, wird der Import jetzt direkt ausgeführt und das Cookie gelöscht.
Darum ist in fhem/cache/alexa-cookie nichts mehr zu sehen.

Der Aufruf in AlexaCookieService
[2026-10-25T08:36:08,492 Europe/Berlin] [INFO] 172.27.0.5 - - [25/Oct/2026:07:36:08 +0000] "POST /api/cookie/refresh HTTP/1.0" 200 4351 "-" "fhem"
[2026-10-25T08:36:12,390 Europe/Berlin] [INFO] 172.27.0.5 - - [25/Oct/2026:07:36:12 +0000] "GET /api/cookie HTTP/1.0" 200 12326 "-" "fhem"

führt zu folgenden Änderungen im Device ,,AlexaAccount"
COOKIE_TYPE         NPM_Login 2026-10-25 08:36:12
amazon_refreshtoken vorhanden 2026-10-25 08:36:12

Im Log ist das auch sauber
2026.10.25 08:36:12.400 3: [AlexaAccount] [echodevice_NPMWaitForCookie] [unbekannt] write new refreshtoken
Ich war da wohl etwas zu nervös
Raspi4 - Docker mit deconz, openccu, fhem, alexa-fhem, alexa-cookie-service, nginx und AfterTouch. Fhem noch mit CUL, BOSE-ST und Alexa (Connector)

Sidey

Hallo FlatTv,

dass im FHEM-Cache kein Cookie liegt, ist korrekt. Dein Log zeigt, dass der Ablauf funktioniert.

Was passiert
  • GET /api/cookie von fhem mit Status 200 und 12322 Bytes ist der komplette Export mit Cookie, CSRF und Refresh-Token.
  • Aus diesem Export schreibt das Perl-Package lokal die Datei /opt/fhem/cache/alexa-cookie/<NR>result.json. Danach startet es den Import in echodevice (echodevice_NPMWaitForCookie).
  • echodevice_NPMWaitForCookie liest die Datei, übernimmt den Cookie und löscht sie danach per unlink. Die Datei liegt deshalb nur für Millisekunden im Cache. Nur wenn der Import hängt, bleibt sie liegen und wird vom Timer erneut geprüft.
  • Der Cookie-Service Container schreibt in diesem Modus selbst keine Datei. "Cookie export written to ..." erscheint nur beim Legacy-Parameter save=<dateiname>.
  • Beim POST /api/cookie/refresh wird der Zustand in /data/alexa-registration.json aktualisiert. Die Antwort enthält keine Cookie-Werte (redacted), deshalb nur 4351 Bytes.

So prüfst du, ob alles ankommt (Device-Name AlexaCookieService wie im Beispiel, sonst anpassen)

1. Status abfragen:
get AlexaCookieService statusDanach müssen die Readings service_updated_at und service_age_hours aktuell sein. cookie_available und refresh_available müssen 1 sein. Ab REFRESH_MIN_AGE_HOURS (Standard 6 Stunden) löst der Status-Abruf automatisch einen Refresh aus. Im Service-Log steht dann "Status request triggered automatic refresh".

2. Refresh manuell auslösen:
set AlexaCookieService refreshDas Reading refresh_message und der Status des Devices zeigen das Ergebnis. Bei einem Fehler stehen last_error und refresh_code im Device.

3. Export holen und importieren:
get AlexaCookieService exportCookieDas Reading export_updated_at zeigt den Zeitstempel des Exports. Der Abruf löst auch den Import in echodevice aus.

4. Optional mehr Log:
attr AlexaCookieService verbose 4Das Package loggt über den Namen des HTTPMOD-Devices. Bei Erfolg steht dann "AlexaCookieService: cookie export written and imported" im Log, bei einem Fehler (Level 3) "cookie export/import failed: <Grund>". Ohne verbose 4 siehst du nur Fehler.

5. Prüfe, ob echodevice normal arbeitet, zum Beispiel ob die Geräte Daten liefern und Sprachausgaben funktionieren.

Wenn service_updated_at aktuell ist und echodevice läuft, ist alles in Ordnung.

Grüße
Sidey
Nutze: SIGNALDuino, Homematic, Raspberry Pi, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt, tasmota

Maintainer von: SIGNALduino, SD_WS*, fhem-docker, alexa-fhem-docker, fhempy-docker, WebAuth, fhem-mcp, midea-mqtt, whatsmeow-mqtt, alexa-cookie-service
https://github.com/sidey79?tab=repositories

FlatTV

Herzlichen Dank @sidey

Und Grüße von der sonnigen Küste
Jörg
Raspi4 - Docker mit deconz, openccu, fhem, alexa-fhem, alexa-cookie-service, nginx und AfterTouch. Fhem noch mit CUL, BOSE-ST und Alexa (Connector)