Apollon77 / ioBroker.alexa2

ioBroker Adapter to control Amazon Alexa/Echo devices
MIT License
160 stars 46 forks source link

Keine Auto-Updates von Todo/Timer/Wcker/Routinen-Erkennung/"alexa2.0.History.summary" #1045

Closed uwe72 closed 1 year ago

uwe72 commented 1 year ago

Habe leider das Problem, dass im "alexa2.0.History.summary" Datenpunkt kein Wert ankommt. War die letzten Tage immer mal wieder so. War nun 4 Tage unterwegs, heute Abend/gerade funktioniert es konstant gar nicht.

Gibts hier einen Workarround/Erklärung?

Danke Euch und VG Uwe

stefan230561 commented 1 year ago

Ich habe das auch gerade festgestellt, das keine Werte mehr in dem summary Datenpunkt geschrieben werden.

Habe mich zuerst gewundert, das meine Befehle nicht mehr funktionieren bis ich dann auf die Idee gekommen bin mir die Werte des Datenpunktes anzusehen. Da kommt nichts an. Habe Alexa Adapter neu gestartet, ioBroker neu gestartet aber leider ohne Erfolg.

Gruß Stefan

ali86x commented 1 year ago

Guten Morgen. Ich hänge mich Mal hier Ran. Habe seit gestern Abend das selbe Problem. Keine Fehlermeldungen etc. Alles.nei gestartet, aber der Summary-DP bleibt leer.

IchBinSmart commented 1 year ago

Ja, scheint ein generelles Problem zu sein. Ist bei mir auch so.

AdamK-DE commented 1 year ago

auch .History. wird nicht mehr geupdated. Keine Chance zu erkennen zu welchem Dot zuletzt gesprochen wurde.

BigHobbit1988 commented 1 year ago

Ich weiß nicht ob das damit zusammen hängt aber die Routinen von den Alexa Geräten werden seit gestern Abend auch nicht mehr geupdatet.

rettroo commented 1 year ago

same here

LosFoppos commented 1 year ago

Wie bereits auf Facebook diskutiert, sollte nicht auf die Routinen, sondern auf "Fake Geräte" getriggert werden. Habe es gerade ausprobiert und es funktioniert.

Ähnlich wie hier, allerdings nicht mehr ganz aktuell das Video: https://www.youtube.com/watch?v=f90-O3_azWg

rettroo commented 1 year ago

@LosFoppos hast du da einen Link von der Facebook-Diskussion? Ich habe bei mir kein "Fake Gerät"

LosFoppos commented 1 year ago

Die Geräte legts du selber im iot Adapter an (wie im Video beschrieben). Der Weg benötigt allerdings eine Lizenz. Habe die vorher nicht benötigt, aber 2€ im Monat sind da definitiv fein für mich.

Hier der Link.

https://www.facebook.com/groups/440499112958264/posts/2077594732582019/?comment_id=2077831109225048&notif_id=1690870687655000&notif_t=feedback_reaction_generic&ref=notif

ali86x commented 1 year ago

@LosFoppos Es geht hier primär auch nicht um das triggern auf Routinen. Sondern hauptsächlich um den History-Summary-DP. Hängt zwar wahrscheinlich alles zusammen, aber der funktioniert halt auch nicht.

LosFoppos commented 1 year ago

Jein, das hier wurde eröffnet, nachdem die Diskussion auf Facebook gestartet ist - hängt quasi zusammen, deshalb hier auch die Infos zu den Routinen.

History lässt sich manuell über "alexa2.X.History.#trigger" aktualiseiren

realwax commented 1 year ago

@Apollon77 Ingo kannst du was dazu sagen? Muss ab jetzt die history ab jetzt manuell getriggert werden, oder etwas angepasst, dass sie wieder ohne trigger funkt., oder ist das ein hick up von amazon? Danke

Ein work around aktuell wäre, wenn ihr den Adapter auf Debug setzt, dann das trigger wort sagen, seht ihr welche Objekte aktualisiert werden. Darauf könnte man "on change/update" hören per script und den trigger selbst auslösen....

uwe72 commented 1 year ago

@Apollon77 Ingo kannst du was dazu sagen? Muss ab jetzt die history ab jetzt manuell getriggert werden, oder etwas angepasst, dass sie wieder ohne trigger funkt., oder ist das ein hick up von amazon? Danke

Ein work around aktuell wäre, wenn ihr den Adapter auf Debug setzt, dann das trigger wort sagen, seht ihr welche Objekte aktualisiert werden. Darauf könnte man "on change/update" hören per script und den trigger selbst auslösen....

Ich verstehe nicht was ich mit Debug-Mode meint? Loglevel?

realwax commented 1 year ago

@Apollon77 Ingo kannst du was dazu sagen? Muss ab jetzt die history ab jetzt manuell getriggert werden, oder etwas angepasst, dass sie wieder ohne trigger funkt., oder ist das ein hick up von amazon? Danke Ein work around aktuell wäre, wenn ihr den Adapter auf Debug setzt, dann das trigger wort sagen, seht ihr welche Objekte aktualisiert werden. Darauf könnte man "on change/update" hören per script und den trigger selbst auslösen....

Ich verstehe nicht was ich mit Debug-Mode meint? Loglevel?

Ja, den Adapter unter Instanzen auf debug mode setzen. Dann im Log mitsehen, was alles aktualisiert wird, wenn du das trigger wort sagst und einfach eines der Objekte die im Log angezeigt werden "on change" in ein script packen und den #trigger in folge auf true setzen/auslösen. (debug mode wieder deaktivieren)

Apollon77 commented 1 year ago

Hallo alle zusammen, habe es gerade gesehen kann es aber selbst im Moment nicht testen, daher ja ein Debug Log wäre sehr hilfreich.

Wenn Hiostory aktualisierung noch manuell über #trigger geht klingt dies mal wieder nach weiteren Beschränkungen was die Push Messages angeht. Es gab die letzten tage Berichte das Wecker, Timer und Todos nicht mehr per Push informiert werden ... jetzt auch hostory?

So oder so um es zu sehen brauche ich ein Debug log vom Adapterstart und dann bitte einmal eine Sprachaktion ausführen ... Das log dann in gänze per E-Mail an iobroker@fischer-ka.de mit Referenz auf dieses GitHub issue hier.

Danke

realwax commented 1 year ago

@Apollon77 Gesendet...

realwax commented 1 year ago

Inzwischen ist das ein Hotfix: (beim trigger wort wird bei mir der EQ und muted, wie volume aktualisiert)

on({ id: [].concat(['alexa2.0.Echo-Devices.[EURE-DEVICEID].Player.muted']), change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; getState('alexa2.0.History.#trigger', (err, state) => { setStateDelayed('alexa2.0.History.#trigger' / Trigger/Rescan /, state ? !state.val : true, 3000, true); }); });

Apollon77 commented 1 year ago

Jo, also Activity push infos sind weg ... Ja jetzt kann man als Work around einbauen das - wie du sagst - bei activities auch kurz nacheinander volume UND equilizer gepusht werden ... Die Frage ist nur wie lange das noch gehen wird :-(

realwax commented 1 year ago

Danke fürs rasche Analysieren Ingo! Im Laufe der Jahre ist bei Amazon auch immer wieder mal verändert worden, hat für einen Tag eine Funktion nicht funktioniert etc. ggf. müssen wir abwarten. Der Sinn hinter solchen Dingen kann im Jahre 2023 doch nicht mehr traffic sparen sein, aber wie auch immer. Wie du sagst - mal sehen wie lange der workaround gelingt... Schönen Tag :)

AdamK-DE commented 1 year ago

weiss jemand wie lange man nach dem steuern von alexa2.0.History.#trigger warten sollte bis alles aktuell ist?

ich nutze alexa2.0.History.name in zig blocklys zum ermitteln des echos an dem die frage gestellt wurde damit die antwort auch darüber kommen kann...

aber ich denke man sollte noch 1-2 tage abwarten mit der anpassung der scripts..

@Apollon77 : und das ganze umstellen auf polling ist eine option?

oh was im log dazu:

alexa2.0 | 2023-08-01 09:48:07.875 | info | Alexa-Push-Connection (macDms = true) established. Disable Polling alexa2.0 | 2023-08-01 09:47:57.161 | info | Alexa-Push-Connection disconnected - retry: Retry Connection in 10s

realwax commented 1 year ago

@AdamK-DE Nach dem auslösen des triggers dauert es bis zu einer Sekunde bis die Werte aktuell sind. Aber ich verstehe die Frage nicht ganz. Du kannst ja "on change" darauf reagieren und brauchst kein timing. den #trigger löse ca 3 sekunden nach dem "Alexa Wort trigger" aus, damit genug zeit für einen kurzen Sprachbefehl ist.

AdamK-DE commented 1 year ago

ich trigger direkt den trigger in meinen ioB scripts.. testete schon und 1sec pause reicht. nervig aber kann man mit leben... Unbenannt

AdamK-DE commented 1 year ago

Inzwischen ist das ein Hotfix: (beim trigger wort wird bei mir der EQ und muted, wie volume aktualisiert)

on({ id: [].concat(['alexa2.0.Echo-Devices.[EURE-DEVICEID].Player.muted']), change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; getState('alexa2.0.History.#trigger', (err, state) => { setStateDelayed('alexa2.0.History.#trigger' / Trigger/Rescan /, state ? !state.val : true, 3000, true); }); });

diese lösung ist wohl die bessere ABER die muss man für jedes alexa gerät erstellen.. nervig bei 5 dots hier... damit kann man aber wohl auch wieder per routinen triggern?!

und verstehe ich das richtig: das MUTED wird sofort von dem dot aktuallisiert zu dem gesprochen wird?????

DrBakterius commented 1 year ago

Oder so: Screenshot 2023-08-01 114359

on({id: [].concat(Array.prototype.slice.apply($("state[id=alexa2.0.Echo-Devices.*.Player.volume]"))), change: "any"}, async function (obj) {

  let value = obj.state.val;
  let oldValue = obj.oldState.val;
  getState("alexa2.0.History.#trigger", function (err, state) {
      setStateDelayed("alexa2.0.History.#trigger"/*Trigger/Rescan*/, state ? !state.val : true, 2000, false);
  });
  setStateDelayed("alexa2.0.History.summary"/*summary*/, '', 2500, false);
});

(Der Datenpunkt muss zuvor beschreibbar gemacht werden...)

realwax commented 1 year ago

@AdamK-DE finde die Version vom @DrBakterius etwas sauberer, weil du auf den change eben reagierst und nicht stateless etwas abgreifst. Das obige wäre stateful... Würde das als extra function im script ausführen und dann eben auf on change vom summary agieren. Damit hast du kein Timing miss, wenns mal länger dauert... Und zu der Lösung hat dir Bakterius eh oben aufgezeigt, man kann in einer einzigen Trigger Funktion mit Wildcards arbeite und dem ID von Selektor... Ja verstehst du richtig. Den Dot bekommst ja dann über name raus...

AdamK-DE commented 1 year ago

aber wozu die verzögerung von 2sek? beim umschalten ist die doch gar nicht nötig?!

DrBakterius commented 1 year ago

aber wozu die verzögerung von 2sek? beim umschalten ist die doch gar nicht nötig?!

Weil eventuell der Trigger schon ausgelöst wird bevor man den Befehl gesprochen hat.

realwax commented 1 year ago

Ja, so ist. Ich warte sogar 3 sec falls der Befehl länger dauert.

Du kannst deinen Gerätenamen so auslesen:

image

on({ id: [].concat(new RegExp('alexa2.0.Echo-Devices.*.Player.muted')), change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; console.log(obj.deviceName); console.log(obj.deviceId); });

AdamK-DE commented 1 year ago

ok. und klappt hier ohne verzögern nicht.. antwort landet beim ersten mal immer auf den falschen dot.

mit dem verzögern 2sek läuft es anscheinend wieder 1A auf allen dots :) aber alexa fasselt hier immer anfangs "moment" was etwas dauert... denke je nach dem muss die 2sec hoch..

solarsnoop commented 1 year ago

Also bei mir ist es wie bei euch, keine Aktualisierung mehr der History und auch Routinen bekommen kein true mehr wenn Sie aufgerufen wurden. Mit fest eingestellter default Zeit gehen zumindest die History Werte nützt mir aber nix da 60 Sekunden zu lange sind. sieht dann so aus:

alexa2.0 | 2023-08-01 14:54:20.988 | info | Alexa-Push-Connection disconnected - retry: Retry Connection in 60s -- | -- | -- | -- alexa2.0 | 2023-08-01 14:54:20.987 | debug | Alexa-Remote WS-MQTT: Retry Connection in 60s alexa2.0 | 2023-08-01 14:54:20.984 | debug | Alexa-Remote WS-MQTT: Close: 1005: alexa2.0 | 2023-08-01 14:54:20.969 | debug | Alexa-Remote WS-MQTT: Open: wss://dp-gw-na.amazon.de/tcomm/ alexa2.0 | 2023-08-01 14:53:20.453 | info | Alexa-Push-Connection disconnected - retry: Retry Connection in 60s alexa2.0 | 2023-08-01 14:53:20.451 | debug | Alexa-Remote WS-MQTT: Retry Connection in 60s alexa2.0 | 2023-08-01 14:53:20.449 | debug | Alexa-Remote WS-MQTT: Close: 1005: alexa2.0 | 2023-08-01 14:53:20.432 | debug | Alexa-Remote WS-MQTT: Open: wss://dp-gw-na.amazon.de/tcomm/ alexa2.0 | 2023-08-01 14:52:24.928 | info | Alexa-Push-Connection disconnected - retry: Retry Connection in 55s alexa2.0 | 2023-08-01 14:52:24.928 | debug | Alexa-Remote WS-MQTT: Retry Connection in 55s alexa2.0 | 2023-08-01 14:52:24.927 | debug | Alexa-Remote WS-MQTT: Close: 1005: alexa2.0 | 2023-08-01 14:52:24.914 | debug | Alexa-Remote WS-MQTT: Open: wss://dp-gw-na.amazon.de/tcomm/ alexa2.0 | 2023-08-01 14:51:34.415 | info | Alexa-Push-Connection disconnected - retry: Retry Connection in 50s alexa2.0 | 2023-08-01 14:51:34.414 | debug | Alexa-Remote WS-MQTT: Retry Connection in 50s alexa2.0 | 2023-08-01 14:51:34.414 | debug | Alexa-Remote WS-MQTT: Close: 1005: alexa2.0 | 2023-08-01 14:51:34.407 | debug | Alexa-Remote WS-MQTT: Open: wss://dp-gw-na.amazon.de/tcomm/ alexa2.0 | 2023-08-01 14:50:48.914 | info | Alexa-Push-Connection disconnected - retry: Retry Connection in 45s alexa2.0 | 2023-08-01 14:50:48.911 | debug | Alexa-Remote WS-MQTT: Retry Connection in 45s alexa2.0 | 2023-08-01 14:50:48.908 | debug | Alexa-Remote WS-MQTT: Close: 1005: alexa2.0 | 2023-08-01 14:50:48.893 | debug | Alexa-Remote WS-MQTT: Open: wss://dp-gw-na.amazon.de/tcomm/ alexa2.0 | 2023-08-01 14:50:08.395 | info | Alexa-Push-Connection disconnected - retry: Retry Connection in 40s alexa2.0 | 2023-08-01 14:50:08.395 | debug | Alexa-Remote WS-MQTT: Retry Connection in 40s alexa2.0 | 2023-08-01 14:50:08.393 | debug | Alexa-Remote WS-MQTT: Close: 1005: alexa2.0 | 2023-08-01 14:50:08.382 | debug | Alexa-Remote WS-MQTT: Open: wss://dp-gw-na.amazon.de/tcomm/ alexa2.0 | 2023-08-01 14:49:32.888 | info | Alexa-Push-Connection disconnected - retry: Retry Connection in 35s alexa2.0 | 2023-08-01 14:49:32.888 | debug | Alexa-Remote WS-MQTT: Retry Connection in 35s alexa2.0 | 2023-08-01 14:49:32.885 | debug | Alexa-Remote WS-MQTT: Close: 1005:
realwax commented 1 year ago

@solarsnoop weiter oben hast du einen hotfix. Dann reagiert es zeitnahe.

solarsnoop commented 1 year ago

@realwax Ja Danke habe es jetzt auch so gelöst ist so zumindest eine Lösung mit der man leben kann/muss

ali86x commented 1 year ago

Lösung von @DrBakterius funktioniert einwandfrei. Bin aktuell auf 3 Sekunden Wartezeit. Damit kann ich leben. Aber warum setzt du den Summary am Ende noch auf " " ?

DrBakterius commented 1 year ago

warum setzt du den Summary am Ende noch auf " " ?

Weil der DP normalerweise ja von Alexa gelöscht wurde. Setzt man jetzt den gleichen Befehl hintereinander ab und triggert auf Änderung von 'summary', dann passiert nichts wenn der DP schon mit dem gleichen Inhalt gefüllt ist.

ali86x commented 1 year ago

Das macht natürlich Sinn 😁

Dann füge ich das besser noch ein.

IchBinSmart commented 1 year ago

Inzwischen ist das ein Hotfix: (beim trigger wort wird bei mir der EQ und muted, wie volume aktualisiert) on({ id: [].concat(['alexa2.0.Echo-Devices.[EURE-DEVICEID].Player.muted']), change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; getState('alexa2.0.History.#trigger', (err, state) => { setStateDelayed('alexa2.0.History.#trigger' / Trigger/Rescan /, state ? !state.val : true, 3000, true); }); });

diese lösung ist wohl die bessere ABER die muss man für jedes alexa gerät erstellen.. nervig bei 5 dots hier... damit kann man aber wohl auch wieder per routinen triggern?!

und verstehe ich das richtig: das MUTED wird sofort von dem dot aktuallisiert zu dem gesprochen wird?????

Works like a charm :-) -so funktioniert es auch für viele Geräte:

// Workaround for Alexa History is broken var alexa_devices = [alexa_bad_id, alexa_esszimmer_id, alexa_wohnzimmer_id, alexa_marit_id, alexa_jakob_id, alexa_kueche_id, alexa_schlafzimmer_id]

for (var counter=0; counter<alexa_devices.length;counter++) { on({ id: "alexa2.0.Echo-Devices." + alexa_devices[counter]+ ".Player.muted", change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; getState('alexa2.0.History.#trigger', (err, state) => { setStateDelayed('alexa2.0.History.#trigger' / Trigger/Rescan /, state ? !state.val : true, 3000, true); }); }); }

uwe72 commented 1 year ago

Der Workarround funktioniert auf alle Fälle. Natürlich mit dem Nachteil der X-sekündigen Verzögerung. Habe es aktuell auf 3 Sekunden eingestellt. DANKE ALLEN FÜR DEN WORKARROUND!!!!!!

dbeckers99 commented 1 year ago

Danke für den Workaround! Da wäre ich nicht von selbst drauf gekommen. Man lernt jeden Tag etwas dazu. 😂 In diesem Fall zwangsweise durch Amazon.

realwax commented 1 year ago

@IchBinSmart so funktioniert es mit einem Script für alle. In Blockly nutze ich die RegExp Function siehe weiter oben Blockly. Die Lösung von Backterius geht auch. Er hat einen guten Punkt gemacht summary wieder zu leeren, was das normale Verhalten ist.

on({ id: [].concat(new RegExp('alexa2.0.Echo-Devices..Player.muted')), change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; getState('alexa2.0.History.#trigger', (err, state) => { setStateDelayed('alexa2.0.History.#trigger' / Trigger/Rescan /, state ? !state.val : true, 3000, false); }); setStateDelayed('alexa2.0.History.summary' / summary */, '', true, 4000, false); });

rettroo commented 1 year ago

@realwax Servus, ganz blöde Frage, kann ich das Script einfach als Javascript Copy/Pasten?

Ich bekomme folgenden Fehler:

javascript.0 | 2023-08-02 07:50:03.444 | error | at processImmediate (internal/timers.js:466:21) -- | -- | -- | -- javascript.0 | 2023-08-02 07:50:03.444 | error | at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1504:17) javascript.0 | 2023-08-02 07:50:03.444 | error | at /opt/iobroker/node_modules/iobroker.javascript/main.js:2017:17 javascript.0 | 2023-08-02 07:50:03.444 | error | at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1929:37) javascript.0 | 2023-08-02 07:50:03.444 | error | at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1679:24) javascript.0 | 2023-08-02 07:50:03.444 | error | at Object.createScript (vm.js:262:10) javascript.0 | 2023-08-02 07:50:03.444 | error | at new Script (vm.js:102:7) javascript.0 | 2023-08-02 07:50:03.444 | error | SyntaxError: Invalid regular expression: missing / javascript.0 | 2023-08-02 07:50:03.443 | error | ^ javascript.0 | 2023-08-02 07:50:03.443 | error | setStateDelayed('alexa2.0.History.#trigger' / Trigger/Rescan */, state ? !state.val : true, 3000, false); javascript.0 | 2023-08-02 07:50:03.443 | error | script.js.Alexa_Workaround compile failed: at script.js.Alexa_Workaround:5
solarsnoop commented 1 year ago

warum setzt du den Summary am Ende noch auf " " ?

Weil der DP normalerweise ja von Alexa gelöscht wurde. Setzt man jetzt den gleichen Befehl hintereinander ab und triggert auf Änderung von 'summary', dann passiert nichts wenn der DP schon mit dem gleichen Inhalt gefüllt ist.

Naja man könnte es auch anders machen ich habe das über ein virtuelles Gerät gemacht und Datenpunkt welcher jedes mal wenn ich einen Befehl ausführe aktualisiert wird. Bei mir wir mit dem Befehl "Alexa Licht" das Licht an bzw. aus geschaltet je nach Zustand Licht an oder aus.

image

Im IOT Adapter also Virtuelles Gerät erstellt mit Datenpunkt true oder false, Rolle Switch.

image

Nun kann ich mit dem Befehl "Alexa Licht den Daten punkt auf "true" setzen, und woher weiß ich welches Licht geschaltet werden soll, Dazu hole ich jetzt anstelle der Routine aus der History das Gerät und vergleiche es im Skript nur da wo das Gerät auch de Raum entspricht wird es ausgeführt. Der Trigger ist die Aktualisierung des Datenpunkts also muss ich auch nichts löschen denn im Script wird die History jedes Mal aktualisiert.

image

So kann man darunter für jeden Raum mit dem selben Befehl gezielt einen Raum steuern abhängig vom dot (Bei mir steht in jedem raum ein Echo dot :-) So habe ich jetzt das Problem gelöst da wo ich es zuvor mit Routinen gesteuert habe. Ich hab auch 500ms getestet ging auch aber 1 sek ist sicherer :-) Also ich kenne euere Anforderung nicht aber vielleicht hilft es ja jemanden der das gleiche Problem hat .

realwax commented 1 year ago

@rettroo Vielleicht war vorher ein Fehler drinnen ich habe es aktualisiert oben und ich paste es nochmals hier.

jscript: on({ id: [].concat(new RegExp('alexa2.0.Echo-Devices.*.Player.muted')), change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; getState('alexa2.0.History.#trigger', (err, state) => { setStateDelayed('alexa2.0.History.#trigger' /* Trigger/Rescan */, state ? !state.val : true, 3000, false); }); setStateDelayed('alexa2.0.History.summary' /* summary */, '', true, 4000, false); });

blockly: habe versucht den blockly export hier zu posten aber das gelingt nicht, wird falsch dargestellt.

grafik: image

uwe72 commented 1 year ago

warum setzt du den Summary am Ende noch auf " " ?

Weil der DP normalerweise ja von Alexa gelöscht wurde. Setzt man jetzt den gleichen Befehl hintereinander ab und triggert auf Änderung von 'summary', dann passiert nichts wenn der DP schon mit dem gleichen Inhalt gefüllt ist.

Naja man könnte es auch anders machen ich habe das über ein virtuelles Gerät gemacht und Datenpunkt welcher jedes mal wenn ich einen Befehl ausführe aktualisiert wird. Bei mir wir mit dem Befehl "Alexa Licht" das Licht an bzw. aus geschaltet je nach Zustand Licht an oder aus.

image

Im IOT Adapter also Virtuelles Gerät erstellt mit Datenpunkt true oder false, Rolle Switch.

image

Nun kann ich mit dem Befehl "Alexa Licht den Daten punkt auf "true" setzen, und woher weiß ich welches Licht geschaltet werden soll, Dazu hole ich jetzt anstelle der Routine aus der History das Gerät und vergleiche es im Skript nur da wo das Gerät auch de Raum entspricht wird es ausgeführt. Der Trigger ist die Aktualisierung des Datenpunkts also muss ich auch nichts löschen denn im Script wird die History jedes Mal aktualisiert.

image

So kann man darunter für jeden Raum mit dem selben Befehl gezielt einen Raum steuern abhängig vom dot (Bei mir steht in jedem raum ein Echo dot :-) So habe ich jetzt das Problem gelöst da wo ich es zuvor mit Routinen gesteuert habe. Ich hab auch 500ms getestet ging auch aber 1 sek ist sicherer :-) Also ich kenne euere Anforderung nicht aber vielleicht hilft es ja jemanden der das gleiche Problem hat .

Hast du über diese Lösung nicht das Problem mit der Verzögerung?

cratoo commented 1 year ago

Zur Info: scheinbar gibt es den Datenpunkt .muted nur bei den Echo Dots. Beim Fire TV Cube scheint es den nicht zu geben und entsprechend auch kein Update beim Wake-Word. Bisher habe ich noch keinen State gefunden, der beim Wake-Word aktualisiert wird. Im Debug Log kommt schön die Meldung dass der Fire TV Cube "isMuted" gesetzt wurde, aber da der state nicht existiert, passiert leider nichts.

realwax commented 1 year ago

@cratoo Schalt mal deinen Alexa2 Adapter in den Debug Mode. Im Protokoll siehe bitte nach was passiert, wenn du Alexa sagst. Ggf. wird der EQ, oder die Volume aktualisiert. Falls gar nichts passiert, hast du leider Recht, falls sich etwas tut, gib Bescheid welcher Wert. Die Script entsprechend anpassen.... (ggf helfen "wir")

Du könntest versuchen den State anzulegen.... so dass man er aktualisiert wird, vorausgesetzt der Adapter versucht es dann...

solarsnoop commented 1 year ago

Hast du über diese Lösung nicht das Problem mit der Verzögerung?

Nein , naja es dauert gefühlt 2 Sekunden bis das Licht schaltet aber vorher was es auch fast eine Sekunde

cratoo commented 1 year ago

@realwax wie beschrieben, war meine Info bereits aus dem debug log ;)

Alexa-Remote WS-MQTT: Incoming message: {"service":"FABE","messageType":"MSG","channel":866,"messageId":94224308,"moreFlag":1711276032,"seq":1,"checksum":72712708,"content":{"messageType":"GWM","subMessageType":"MSG","channel":46201,"destinationIdentityUrn":"urn:tcomm-endpoint:service:serviceName:DeeWebsiteMessagingService:domain:prod:realm:USAmazon","deviceIdentityUrn":"urn:tcomm-endpoint:device:customerId:XXXX:deviceType:A2IVLV5VM2W81:deviceSerialNumber:XXXX","payload":{"command":"PUSH_VOLUME_CHANGE","payload":{"destinationUserId":"XXX","dopplerId":{"deviceType":"XXXX","deviceSerialNumber":"XXX"},"volumeSetting":63,"isMuted":false},"timeStamp":1690959335061}}}

Wie du vermutet hast macht er auch ein Volume-Update, aber auch dafür hab ich keinen State gefunden. Dann hätte ich oben gepostetes als Vorlage nehmen können. Wenns nicht irgendwo noch "versteckte" states gibt (beim Homematic-Kram kann man da was aktivieren), sehe ich derzeit kein State den der Adapter in meinem Fall aktualisiert.

realwax commented 1 year ago

@cratoo Ja, du hast Recht. Ich habe mich etwas gespielt fehlende Kanäle und States anzulegen und zu sehen, ob sie der Adapter nimmt und aktualisiert, aber beim Start wird die Struktur gecleant. Bringt nix. Somit kann das nur Ingo lösen, bzw. für die echo dots geht der Hotfix. Ich habe es hier zusammengefasst https://github.com/Apollon77/ioBroker.alexa2/issues/1029#issuecomment-1661647480

maniac-on-moon commented 1 year ago

Hallo Liebe ioBroker,

ich steure mit der "History.summary" die Rolläden "Rolläden Süd runter" und "Rolläden stopp", da komme ich mit den 3 Sekunden nicht richtig hin.

Wie kann man die Aktualisierung beschleunigen?

Ideen? Oder hab ich was überlseen?

THX Tom

solarsnoop commented 1 year ago

Versuche es doch mal mit 1 Sekunde: image