Hauptmenü

Eventmap für pct

Begonnen von goert10, 22 Oktober 2017, 08:13:40

Vorheriges Thema - Nächstes Thema

goert10

Guten Morgen zusammen,

meine Frage ähnelt einem Thema (bzw Lösung) für den dim-Befehl:

Zitat von: rudolfkoenig am 29 August 2015, 13:10:41
Ich weiss nicht genau, was du moechtest (FHEM wohl auch nicht), ich interpretiere mal folgendes: dim 70 bis dim 99 soll als Hoch interpretiert werden, alles andere mit dim als Runter. Weiterhin on als Hoch und off als Runter. Versuch mal folgendes als Eventmap:
on:Hoch off:Runter dim.[789]\d:Hoch dim.*:Runter
Falls man "set Geraet Hoch" absetzt, dann wird das immer als on interpretiert, und Runter als off.

Nur möchte ich hierbei pct Daten zuweisen.
Ist es möglich den dim Befehl durch ein pct Befehl zu ersetzen? Leider verstehe ich die Syntax nicht so ganz.
Ich habe 4 Befehle (moveUp, moveDown, moveIntermediate, moveTilt), welche ich als Blind ansteuern möchte.

Somit wäre einfach ausgedrückt:
pct(0) = moveUp, pct(1-50) = moveIntermediate, pct(51-99) = moveTilt, pct(100) = moveDown


Eine andere Überlegung wäre, die move-befehle über einen blind-Dummy und event-on-change zu steuern, jedoch fehlt mir auch hier das Verständnis für die Syntax.

Vielen Dank für eure Hilfe!
LG Timo

rudolfkoenig

Zitatpct(0) = moveUp, pct(1-50) = moveIntermediate, pct(51-99) = moveTilt, pct(100) = moveDown
Ich habe meinen Zweifel daran, dass die events als pct(0) gesendet werden.
Da FHEMWEB ueber keine kuenstliche Intelligenz verfuegt, ist fuer ein funktionierendes Beispiel zwingend notwendig, dass die Events _genau_ bekannt sind.

ZitatLeider verstehe ich die Syntax nicht so ganz.
Welche Dokumente hast du bereits gelesen? Es gibt Erklaerungen in commandref, fhemwiki und hier im Forum habe ich das bestimmt auch schon gemacht. Ich versuchs nochmal:
- die durch Leerzeichen getrennte Teile des Arguments werden eins nach dem anderen betrachtet
- wenn in so einem Teilstueck das was vor dem Doppelpunkt ist, dem Status des Geraetes entspricht, dann wird es mit dem hinter dem Doppelpunkt ersetzt, aber nur fuer die Anzeige
- fuer die anderen Richtung geht es auch: wenn man ein Befehl absetzt, was dem Wort hinter dem Doppelpunkt entspricht, dann wird es mit dem vor dem Doppelpunkt ersetzt.
- vor dem Doppelpunkt kann man auch ein Regexp schreiben (siehe Beispiel oben), damit man nicht alle 99 Faelle explizit hinschreiben muss.
- leider funktionert in so einem Fall (mit Regexp) die Rueckwaerts-Richtung (also das mit dem Befehl) nicht mehr.

Beispiel (gerade im telnet eingetippt):
fhem> define dummy dummy
fhem> attr dummy eventMap pct.00:Oben pct.99:Unten pct.*:Irgendwo
fhem> info timer

fhem> set dummy pct 00
2017-10-22 09:51:16.860 dummy dummy Oben

fhem> set dummy pct 99
2017-10-22 09:51:22.309 dummy dummy Unten

fhem> set dummy pct 12
fhem> 2017-10-22 09:51:24.101 dummy dummy Irgendwo




goert10

Danke für den Denkanstoß, ich werde es später einmal ausprobieren.

Die pct Befehle kommen aus einem blind-Dummy und werden in Homebridge eingebunden.
Somit kann ich am iPhone theoretisch werte von 0-100 einstellen und diese an den Aktor leiten.

Meine Jalousie-Steuerung kennt allerdings nur 4 Positionen/Befehle, wie schon oben erwähnt, es muss also umgewandelt werden. Vielleicht denke ich auch zu kompliziert, aber ein einfacher switch löst das Problem j ach nicht. 

Ein weiteres Problem wäre die Rückmeldung. Der Aktor gibt mir eine Rückmeldung, ob die Jalousie geschlossen/offen/undefiniert ist.
Wie kann ich diese Rückmeldung an meinen Blind übergeben, sodass die Anzeige auch am iPhone ankommt?

Ich hoffe, dass dieses Thema für mehrer Leute interessant sein könnte, da ich bis jetzt keinen Llsungsansatz gefunden habe.

goert10

Zu allererst: Dankeschön!

Das EventMapping "pct.0:moveDown pct.100:moveUp" funktioniert perfekt und wird über einen Notifier an den Aktor geschickt.

Jetzt eine Frage an die Homebridge-Experten:
Wenn ich in HomeKit eine Jalousie betätige, wird auf einen Status vom Aktor gewartet, ist ja logisch. Ohne diesen Status erscheint immer "wird geöffnet".

Auch wenn es hier anscheinend nicht gerne gehört ist: Ich schätze, dass ich mein Aktor-Reading "state" an den Dummy leiten muss und diesen State per HomebridgeMapping an den blind anpassen muss.

Ich verstehe nur leider nicht, auf was genau ich mappen muss, damit alles in Homebridge ankommt  :(
"PositionState=" war ein Ansatz, nur beweisen kann ich es nicht, finde kaum Informationen zu den Services.