Welche setter sind nötig für ein scene-Device ?

Begonnen von TomLee, 24 Januar 2022, 18:56:50

Vorheriges Thema - Nächstes Thema

TomLee

Hallo,

in einem structure-Device mit genericDeviceType scene ist das ein und ausschalten möglich, ich verstehe das so weil es auch einen setter on/off in dem Device gibt.

In einem LightScene-Device mit genericDeviceType scene ist nur das "einschalten" der jeweils gespeicherten Szene(n) möglich (wie im FHEM-Device selbst), ich verstehe es so das "Alexa" mit dem setter scene die Szenen bekannt gemacht werden, woher soll sie sonst die Namen wissen.

Ich hätte gerne in einem MQTT2_Device das gleiche Verhalten wie in einem LightScene-Device, einen setter scene hab ich definiert und genericDeviceType scene vergeben, das Device wird in der App aber nicht als Szene /gar nicht erkannt.
Sind weitere setter nötig, wie nextScene und previousScene, das es als Szene in der App erkannt wird, Readings gibts in einem LightScene-Device ja nur state, welche weitere Abhängigkeit gibts da ?

Gruß

Thomas


TomLee

#1
Jetzt schau ich heute wieder danach und plötzlich ist das Device in den Szenen vorhanden, lösche ich es wirds auch problemlos wieder gefunden, hatte nix geändert gehabt.

Im Log steht jetzt das:
{"endpointId":"61c26ef3-f33f-78f5-3bf3-ef204a48a6f7ef73","manufacturerName":"MQTT2_DEVICE","description":"n: MQTT2_v1_eg, r: eg,mqtt2_device","friendlyName":"fernando eg,mqtt2_device","displayCategories":["SCENE_TRIGGER"],"additionalAttributes":{"manufacturer":"FHEM","model":"roborockRE"},"capabilities":[{"type":"AlexaInterface","interface":"Alexa","version":"3"},{"type":"AlexaInterface","interface":"Alexa.SceneController","version":"3","supportsDeactivation":true}],"cookie":{"device":"MQTT2_v1_eg","fuuid":"61c26ef3-f33f-78f5-3bf3-ef204a48a6f7ef73"}},


Zum Vergleich ein Test-LightScene-Device:
{"endpointId":"61eec756-f33f-78f5-33d8-639dd0f22ed53a97 Pippi","manufacturerName":"LightScene","description":"n: ls_Test, r: test","friendlyName":"Pippi test","displayCategories":["ACTIVITY_TRIGGER"],"additionalAttributes":{"manufacturer":"FHEM","model":"<unknown>"},"capabilities":[{"type":"AlexaInterface","interface":"Alexa","version":"3"},

Was ist der Unterschied zw. displayCategories":["SCENE_TRIGGER"] und displayCategories":["ACTIVITY_TRIGGER"] ?

Was könnte der Grund sein weshalb mein Device jetzt als ["SCENE_TRIGGER"] erkannt wird, offensichtlich brauchts mehr wie nur einen scene-setter ?

Es gibt zwei Szenen mit dem scene-setter zur Auswahl, warum werden die nicht als zwei "Szene-Devices" gefunden ?

Stattdessen wird nur das eine Device gefunden mit dem alexaName in friendlyName, nicht wie bei LightScene je definierte Szene "ein Szene-Device" mit dem Namen in friendlyName.

justme1968

auf api seite sind ACTIVITY_TRIGGER definiert als combination von geräten die in einer bestimmten reihenfolge geschaltet werden müssen. als z.b. fernseher an und dann programm umschalten. bei SCENE_TRIGGER ist die reihenfolge egal. also z.b. eine gruppe von lampen die am ende einen bestimmten zustand haben sollen die reihenfolge beim einschalten ist aber egal. da das ganze weder an den anwender durchgereicht wird noch man in der app selber szenen konfigurieren kann und ich glaube auch die darstellung identisch ist macht es eigentlich keinen unterschied.

in alexa-fhem wird für harmony und LightScene automatisch ACTIVITY_TRIGGER verwendet da hier die geräte immer in der gleichen reihenfolge geschaltet werden und für alles andere SCENE_TRIGGER da die reihenfolge bei einer structure zufällig ist da die devices intern in einem hash landen.

der bereich szenen ist im api recht bescheiden dokumentiert und ich habe da gefühl was gerade wie verstanden wird ändert sich auf alexa seite einfach ab und zu.

was genau möchtest du denn mit der szene erreichen? im prinzip bringt man alexa damit nur dazu einen etwas anderen wortlaut zu verstehen. also stelle xy auf ... statt z.b. ein und aus.

schau dir mal den seit kurzem eingebauten ModeController support an (siehe ankündigungen). der erlaubt ähnlichen wortlaut, erlaubt die kombination von (mehreren) drop downs mit einer anderem kategorie und hat den vorteil nicht auf 12 pro skill begrenzt zu sein.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

TomLee

#3
Zitatwas genau möchtest du denn mit der szene erreichen?

Vor ein paar Wochen hatte ich einen pct-setter gebastelt der die Sprachsteuerung ohne viel Umwege ermöglicht.

Jetzt hab ich die Tage in einem LightScene-Device halt festgestellt (weil ich mich damit bisher nicht beschäftigt hatte), das alle darin definierten Szenen als Szenen in der App angelegt werden und aktivierbar sind.
Die Namen der Szenen kommen nur in dem setter remove und scene vor, oder gibts noch versteckte Readings ? Darum geh ich davon aus das eigentlich nur ein select-Widget-setter von Nöten wäre um die Zonennamen (Szenen) Alexa bekannt zu machen ? Das die Anzahl Szenen begrenzt sind ist mir klar und das Sprachkommando zum aktivieren auch nicht optimal, aber ohne weiters zu tun müsste ein User damit nur ein Template anwenden, eine Gerätesuche in Alexa anstossen, "Namen" anpassen und kann per Sprache die Zonen steuern, so mein Gedanke.

ModeController schau ich mir an, bin ich bis jetzt noch nicht dazu gekommen.


edit:

upps, versteckte Readings sieht man ja mit einem List

edit2:

Für mich, mit diesen settern wurde das Device auch ohne genericDeviceType scene gefunden:

nextScene:{ReadingsVal($name,'zones','none')} { $DEVICETOPIC.valetudoRE($EVENT) }
previousScene:{ReadingsVal($name,'zones','none')} { $DEVICETOPIC.valetudoRE($EVENT) }
scene:erster,zweiter { $DEVICETOPIC.valetudoRE($EVENT) }