[Gelöst] Alexa Standard Skill mit Dooya Markise

Begonnen von AlexBV, 06 April 2018, 19:05:50

Vorheriges Thema - Nächstes Thema

AlexBV

Nach ein paar Monaten Pause, will ich mich nochmal meinem Dooya-Problem widmen, mit dem ich immer noch nicht weitergekommen bin.

Ich benutze eine Markise mit Dooya Ansteuerung. Per FHEM funktioniert das einwandfrei. Die Markise erwartet Positionsangaben als "pos" um in Mittelstellungen zu fahren, also z.B. "set Markise pos 30". Der Alexa-Standard-Skill mit dem "genericDeviceType blind" sendet aber Prozentangaben, also z.B. "set Markise pct 30". Das funktioniert natürlich nicht.
Leider werden die Kommandos von Alexa in diesem Fall nicht einmal als Event gelistet, so dass mich auch die Versuche mit Notifys nicht wirklich weitergebracht haben.

Hier ein Auszug aus dem Log:

WEB_127.0.0.1_51588 GET /fhem?cmd=set%20Markise%20pct%2050
Cmd: >set Markise pct 50<
Dooya_Set: Called
Dooya_InternalSet call send Markise Dooya Markise
WEB: /fhem?cmd=set%20Markise%20pct%2050

Mit homebridgemapping habe ich auch schon experimentiert, was aber ganz und gar erfolglos war. Hat jemand eine Idee, wie man das ganz simpel lösen kann?

Tueftler1983

Kannst du mit Alexa nicht einen Dummy triggern und der über gibt den Wert pct 30 über ein notify oder doif als POS 30 an die Markise weiter?

AlexBV

Hört sich gut an. Kannst du mir einen Tipp geben, wie ich ein Dummy definieren muss, das "pct" verarbeiten kann?

AlexBV

Hier nochmal die Definition der Dooya Markise:

Definition:
defmod Markise Dooya 1001011000000000010101001010_1
attr Markise IODev sduino433
attr Markise devStateIcon open:fts_sunblind_0@green 0:fts_sunblind_0@yellow 10:fts_sunblind_10@yellow 20:fts_sunblind_20@yellow 30:fts_sunblind_30@yellow 40:fts_sunblind_40@yellow 50:fts_sunblind_50@yellow 60:fts_sunblind_60@yellow 70:fts_sunblind_70@yellow 80:fts_sunblind_80@yellow 90:fts_sunblind_90@yellow 100:fts_sunblind_100@yellow closed:fts_sunblind_100@red
attr Markise drive-down-time-to-100 43
attr Markise drive-down-time-to-close 47
attr Markise drive-up-time-to-100 4
attr Markise drive-up-time-to-open 50
attr Markise eventMap on:raus off:rein
attr Markise genericDeviceType blind
attr Markise room Alexa,Außen



Internals:
   CHANNEL    1
   DEF        1001011000000000010101001010_1
   ID         1001011000000000010101001010
   IODev      sduino433
   NAME       Markise
   NR         114
   STATE      open
   TYPE       Dooya
   move       stop
   CODE:
     1          1001011000000000010101001010_1
   READINGS:
     2018-04-06 20:17:57   exact           0
     2018-04-06 20:17:57   position        0
     2018-04-06 20:17:57   state           open
Attributes:
   IODev      sduino433
   devStateIcon open:fts_sunblind_0@green 0:fts_sunblind_0@yellow 10:fts_sunblind_10@yellow 20:fts_sunblind_20@yellow 30:fts_sunblind_30@yellow 40:fts_sunblind_40@yellow 50:fts_sunblind_50@yellow 60:fts_sunblind_60@yellow 70:fts_sunblind_70@yellow 80:fts_sunblind_80@yellow 90:fts_sunblind_90@yellow 100:fts_sunblind_100@yellow closed:fts_sunblind_100@red
   drive-down-time-to-100 43
   drive-down-time-to-close 47
   drive-up-time-to-100 4
   drive-up-time-to-open 50
   eventMap   on:raus off:rein
   genericDeviceType blind
   room       Alexa,Außen
   

Tueftler1983

Hi sorry das ich mich erst jetzt melde,

Also ich würde ein dummy und ein DOIF machen

define dummy d_Markise

dann das DOIF

define di_Markise DOIF ([d_Markise] eq "pct 10") set Markise pos 10) DOELSEIF ([d_Markise] eq "pct 20") set Markise pos 20) DOELSEIF ([d_Markise] eq "pct 30") set Markise pos 30) DOELSEIF ([d_Markise] eq "pct 40") set Markise pos 40) DOELSEIF ([d_Markise] eq "pct 50") set Markise pos 50) DOELSEIF ([d_Markise] eq "pct 60") set Markise pos 60) DOELSEIF ([d_Markise] eq "pct 70") set Markise pos 70) DOELSEIF ([d_Markise] eq "pct 80") set Markise pos 80) DOELSEIF ([d_Markise] eq "pct 90") set Markise pos 90) DOELSEIF ([d_Markise] eq "pct 100") set Markise pos 100)

alternativ würde wahrscheinlich auch was mit userreading gehen was das pct in pos umwandelt aber da fällt mir die lösung aus dem Stehgreif nicht ein.

Teste mal und gib rückmeldung

Tueftler1983

mach mal bitte ein list von Markise wenn du mit alexa die anweisung gegeben hast in eine bestimmte Position zu fahren, will wissen ob dort dann ein reading angelegt wird..... vielleicht geht es dann ohne das Dummy

AlexBV

Zitat von: Tueftler1983 am 07 April 2018, 23:55:04
mach mal bitte ein list von Markise wenn du mit alexa die anweisung gegeben hast in eine bestimmte Position zu fahren, will wissen ob dort dann ein reading angelegt wird..... vielleicht geht es dann ohne das Dummy

Ich habe Alexa gesagt, dass die Markise auf 50% fahren soll. Nach der Bestätigung "ok" habe ich erneut "list Markise" ausgeführt. Es gab keinerlei Änderung zu meinem Posting von 09:34:20. Die Readings sind unverändert. Hast du noch eine Idee?

AlexBV

Ich habe jetzt die Sache mit dem Dummy nochmal verfolgt. Dazu benötigt man einen Dummy und ein Notify. Die Lösung sieht dann wie folgt aus:

define dMarkise dummy
attr dMarkise alexaName Markise
attr dMarkise genericDeviceType blind
attr dMarkise room Alexa,Außen

define nMarkise notify dMarkise:pct.* set Markise pos $EVTPART1
attr nMarkise room Außen


Es ist zwar umständlich, aber funktioniert tatsächlich perfekt!

Eine Lösung ohne die beiden Hilfskonstruktionen wäre mir natürlich lieber. Vielleicht hat noch jemand eine Idee dazu ...



Tueftler1983

Hättest du das mit dem doif gar nicht versucht? Egal Hauptsache ist du kannst sie jetzt steuern.

TomLee

Hallo,

hab mich ich bisher nur sehr wenig mit homebridgeMapping beschäftigt und mehr oder weniger keine Ahnung, mich würd's aber interessieren ob mit

attr Markise homebridgeMapping CurrentPosition=position TargetPosition=position,cmd=pos

Positionen angefahren werden können ?

Gruß

Thomas

AlexBV

@Tueftler1983:
Ich habe statt mit DOIF mit einem einzeiligen Notify gearbeitet, da mir das einfacher und kürzer erschien.

@TomLee:
Auch das HomebridgeMapping funktioniert. Und für meinen Geschmack ist es noch etwas eleganter als mit Dummy und Notify.

Danke euch beiden für die Tipps und die Hilfe!!!

Tueftler1983

gern geschehen, ich bin selbst noch neu in Alexa-Fhem und somit bin ich auch noch nicht fitt it homebridgemapping, muss aber sagen das damit einiges möglich zu sein scheint.

Notifys liegen mir auch nicht so, wahrscheinlich weil ich seit beginn alles mit doif gemacht habe da mir die syntax leichter fiel. Aber ich muss sagen mit notify kann man einiges kürzer halten als mit doif... denke das ich mich in beides mal einarbeiten werde.

wthiess

Hallo!

Das Dooya Modul arbeitet mit 200%. Ich habe das nun mit dem "homebridgemapping" von @TomLee eingebaut. Was sage ich zu Alexa um die Rollo auf oder zuzumachen. Die % laufen. Nur 100% ist nicht zu sondern 200%.
Wie habt Ihr das gelöst.

lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

Feinfinger

Hallo Wolfgang,

Ich habe exakt das gleiche Problem.

Im Moment löse ich das mit nem notify, welches auf das Reading ,,exact" reagiert.

Hätte aber auch gerne eine ,,schönere Lösung" mittels mapping.


Bist du weiter gekommen?
Proxmox VM - MAPLE-CUL - SIGNALDINO