Hallo zusammen,
kann ich mitttels homeBridgeMapping aus einem dim-Befehl einen on-for-timer Befehl machen?
Da der Aufruf aus dem Thread Titel nicht funktioniert, möchte ich wenigstens sagen können: "Alexa, stelle Bewässerung auf 30" - und dann soll der dim-Wert als on-for-timer Wert (idealerweise * 60 Sek.) für den Schaltaktor gemappt werden.
Geht das?
Viele Grüße
Ronny
Wiki gelesen!?
Erst mal musst du prüfen, ob Amazon das überhaupt "unterstützt"/erkennt...
Denke: nein
Aber im Wiki ist ein Link wo man das herausfinden kann...
Wenn man etwas "passendes" gefunden hat, dann geht das evtl. schon "automatisch", wenn das Device "richtig erkannt" / "interpretiert" wird, z.B. bzgl. setList/vorhandener Readings etc.
Wenn nicht: genericDeviceType...
Wenn es Amazon/Alexa nicht "erkennt" dann kannst du mit homeBridgeMapping auch nichts daran ändern.
EDIT: homeBridgeMapping "erklärt" alexa-fhem nur, wie Kommandos, die von Amazon kommen in fhem umgesetzt werden müssen (also wie z.B. ein: "schalte XYZ ein" dazu führt, dass eben in fhem XYZ eingeschaltet wird / sollte es sich nicht um ein "simples" on handeln) und genauso andersrum, also welcher Wert/Zustand in fhem eben auf Amazon/Alexa Seite den passenden Status "anzeigt"... Mehr nicht. Es ist damit NICHT möglich "Spracherweiterungen" zu machen... Steht aber alles im Wiki...
Wenn es dir nur darum geht "etwas" auf einem Wert zu setzen, dann kannst du (wie ja bereits von dir "angedeutet") einen "dummy-dimmer" oder einen "readingsProxy-Dimmer" bauen und entsprechend dann schalten (bei dummy z.B. mittels notify / bei readingsProxy verm. sogar "direkt")...
Wenn du in der Liste bei Amazon was gefunden hast, was "passt" und damit nicht zurecht kommst: einfach noch mal gezielt fragen...
Ansonsten bleibt nat. immer noch der Custom Skill, damit ginge das...
Gruß, Joachim
Falls es feste Werte sind, kannst du dir in der Alexa App auch Routinen bauen. So habe ich das zumindest gelöst.
Ich will Routinen vermeiden, weil die gelegentlich (nach Updates?) verschwinden und ich auch nicht zwei Stellen zur Wartung haben möchte.
Daher die Idee der Krücke mit dem genericDeviceType light, damit ich neben on und off dem Device quasi noch einen Wert übermitteln kann - um einen Timer zu integrieren. Von der Sprachsteuerung würde das für mich passen, weil ich ja nicht von Dimmen spreche.
Einen extra Dummy mit Notify zur Übersetzung hoffte ich vermeiden zu können, indem ich ein Mapping direkt am Aktor mittes eventMap oder - vermutlich besser - homeBridgeMapping realisiere.
Leider finde ich zu wenig Beispiele, um zu kapieren, wie ich mit Homebridgemapping den Wert eines Dim-Befehls (brightness) in ein on-for-timer cmd umwandle...
Wiki und github readme hatte ich gelesen.
Viele Grüße
Ronny
Wie wäre es dann mit einem list!?
Gruß, Joachim
Evtl. mit cmdalias: https://fhem.de/commandref_modular.html#cmdalias
Es ist ein Schaltaktor einer unserer Bewässerungskreise, an dem die Wassersteckdosen sind.
(peerSmart habe ich wegen der Menge entfernt)
:
DEF 4165AA02
FUUID 5ebd5b10-f33f-6078-1eef-c2b9377015c45d65
NAME Schaltaktor.Bewaesserung.01.Sw.02.Kreis.6
NOTIFYDEV global
NR 970
NTFY_ORDER 50-Schaltaktor.Bewaesserung.01.Sw.02.Kreis.6
STATE off
TYPE CUL_HM
chanNo 02
device Schaltaktor.Bewaesserung.01
READINGS:
2020-06-27 10:14:24 CommandAccepted yes
2020-05-14 16:55:14 R-sign off
2020-06-05 19:48:36 RegL_01. 00:00 08:00
2020-06-27 10:14:24 deviceMsg off (to VCCU)
2020-06-27 10:14:24 level 0
2020-06-27 10:14:24 pct 0
2020-06-27 10:14:24 recentStateType ack
2020-06-27 10:14:24 state off
2020-06-27 10:14:24 timedOn off
2020-06-27 10:14:24 trigLast fhem:02
2020-06-05 20:52:05 trigger 0
helper:
dlvlCmd ++A011F107034165AA0202000000
peerFriend peerSens,peerVirt
peerOpt 3:switch
regLst 1,3p
cmds:
TmplKey :no:1592764406.02553
TmplTs 1592764406.02553
cmdKey :1:0:0::0003:02
TmplCmds:
cmdList:
clear:[readings|trigger|register|oldRegs|rssi|msgEvents|msgErrors|attack|all]
eventL:-peer- -cond-
eventS:-peer- -cond-
getConfig:
getRegRaw:[List0|List1|List2|List3|List4|List5|List6] ... [-PeerChannel-]
inhibit:[on|off]
off:
on-for-timer:-ontime-
on-till:-time-
on:
peerBulk:-peer1,peer2,...- [set|unset]
peerIODev:[IO] -btn- [set|unset]... not for future use
peerSmart:........
press:[long|short] -peer- [-repCount(long only)-] [-repDelay-] ...
regBulk:-list-.-peer- -addr1:data1- -addr2:data2- ...
regSet:[prep|exec] -regName- -value- ... [-peerChannel-]
sign:[on|off]
statusRequest:
toggle:
tplDel:tmplt
expert:
def 1
det 0
raw 1
tpl 0
role:
chn 1
tmpl:
Attributes:
AutoWatering 0
alias Wasser
event-on-change-reading state
genericDeviceType switch
group Bewaesserung
model HM-LC-SW4-SM
peerIDs 00000000,
room Aussen,Homekit,QuickFHEM
structexclude Bewaesserung
userattr Bewaesserung Bewaesserung_map duration structexclude AutoWatering WateringOrder
webCmd on:off
Zitat von: rudolfkoenig am 29 Juni 2020, 20:13:31
Evtl. mit cmdalias: https://fhem.de/commandref_modular.html#cmdalias
Stimmt, könnte auch gehen...
Danke, Joachim
Ich würde mit:
genericDeviceType light
homeBridgeMapping Brightness=pct,cmd=on-for-timer On=state,valueOn=on,valueOff=off
anfangen.
Dann in der alexa-fhem Log schauen, (ob und) wie das Device erkannt wird, und was dann passiert wenn man per Sprache die Brightness setzt.
Da keine Dauer (Wert nach on-for-timer) als Reading im Device steht, kann man das natürlich nicht in der Alexa App mitberücksichtigen. Deswegen habe ich das Reading pct ausgewählt.
EDIT: mit einem Wert anfangen, den Alexa auch erlaubt ;)
ZitatEvtl. mit cmdalias:
ZitatStimmt, könnte auch gehen...
Hab mich noch nie mit cmdalias beschäftigt, wie wird/soll denn ein cmdalias von Alexa erkannt werden ohne setter und Readings ?
Gruß
Thomas
Z.B.: Wenn das Device von Alexa mit "set device dim x" gesteuert wird, macht man ein cmdalias, das es in "set device etwas-anderes x" umwandelt.
Ist ein bisschen tricky im Alexa Kontext wegen Karakteristiken... Aber könnte gehen
Hi Thomas,
mit cmdalias kann ich ein Statement a la StringReplace komplett umbauen, aus einem on für ein Device z.B. grundsätzlich on-for-timer machen bzw. übersetzen.
Ich denke, damit könnte ich das Dim auch gut übersetzen, so dass beim Gerät am Ende nur on-for-timer X ankommt. Allerdings empfinde ich das für meinen einen Fall, also für ein einzelnes Device ein wenig oversized.
Ich verwende einige sehr hilfreiche Cmdaliase im anderen Kontext, z. b. zur Suche von Definitionen oder setex.
Viele Grüße
Ronny
entweder
- im mapping das kommando angeben das verwendet werden soll
- mit eventMap dafür sogen das das kommando umgebogen wird
- oder mit cmdalias ein neues kommando definieren und dieses dann verwenden
es fängt immer mit 1 an und geht dann je nach dem was das gerät von sich aus kann dann mit 2 und/oder 3 weiter.