blindActuator HM-LC-Bl1PBU-FM - Auswertung Reading motor

Begonnen von Hifi-Ear, 09 August 2016, 20:51:02

Vorheriges Thema - Nächstes Thema

Hifi-Ear

Liebe fhem-Freunde,
habe alle Roll-Laden im Haus automatisiert, noch verschiedene FS20-Lösungen auf Contronic's Homeputer und nun Schritt für Schritt Implementierung von HM-LC-Bl1PBU-FM in fhem (Raspi3). Zwei laufen eigentlich problemlos, aber ich möchte mit den FS20-Fernbedienungen noch eleganter steuern.
Dazu brauche ich den aktuellen Zustand des Motors. Der ist im Reading "motor" zu lesen, zeigt sich dort mit verschiedenen Zuständen, welche einen Doppelpunkt im Wert enthalten, z.B. "stop:up", "stop:50" oder "down:50". Ich will in einem DOIF nur auswerten, ob der Motor läuft, also nicht in einem der Stopzustände ist. Leider gelingt das auch nach vielen Versuchen mit der Syntax nicht. Bei anderen Readings ohne Doppelpunkt hat es keine Probleme.
Vielleicht kann jemand helfen?

Danke,
Hifi-Ear
Raspberry Pi3 / Jessie: FHEM-Server 5.7
FS20 and HomeMatic (ca. 150 IOs)
FS20 on Contronics Homeputer since 2004

martinp876


Hifi-Ear

Dies z.B., 'led red' ist nur zum Test. Ersteres, Auswertung von pct funktioniert, alle anderen keine Reaktion, außer einem Syntaxfehler. Letzte Beispielzeile verdeutlicht das eigentliche Ziel, dann aber mit Fernbedienungsbefehlen verküpft, um den Roll-Laden anzuhalten (nicht die Test-LED zu schalten).

define run4 DOIF ([GF_Blind4:pct] eq "100") (set Info12 led red) DOELSE (set Info12 led off)
define run4 DOIF ([GF_Blind4:motor] eq "stop:up") (set Info12 led red) DOELSE (set Info12 led off)
define run4 DOIF ([GF_Blind4:motor:stop] eq "up") (set Info12 led red) DOELSE (set Info12 led off) -> syntax fault
define run4 DOIF ([GF_Blind4:motor] ne "stop*") (set Info12 led red) DOELSE (set Info12 led off)
Raspberry Pi3 / Jessie: FHEM-Server 5.7
FS20 and HomeMatic (ca. 150 IOs)
FS20 on Contronics Homeputer since 2004

martinp876

Du solltest dich mehr mit doif befassen und es auch dort im Forum vorbringen.
Eq ist Ein Vergleich auf diesen String
=~ ist eher das was du suchst, wortfetzen. Es sollen auch regexp funktionieren, im commandref ist jedoch leider kein Beispiel. Die Syntax ist nicht identisch zu regexp.
Offensichtlich wird der : interpretiert und daher scheitert der Vergleich.

Hifi-Ear

Vielen Dank, Martin, für die Richtungsweisung. Mich hatte irritiert, dass es mit dem 'pct'-Reading funktionierte und habe deshalb die letzte Zeile mit dem Stern nur als unformelle Zielrichtung aufgeführt.
Habe mich wirklich mit DOIF befasst und möchte nur kurz die generelle Lösung zeigen, die ich dann auf meinen Einsatz anpasse:

define run4 DOIF ([GF_Blind4:"stop.*"]) (set Info12 led red) DOELSE (set Info12 led off)

'motor' kommt darin nicht vor. Es werden alle Readings auf stop* geprüft und dabei wird das stop* des Motors erwischt. Das funktioniert einwandfrei.

Gruß,
Hifi-Ear
Raspberry Pi3 / Jessie: FHEM-Server 5.7
FS20 and HomeMatic (ca. 150 IOs)
FS20 on Contronics Homeputer since 2004