DOIF neue Features: Generalisierung, $DEVICE, $EVENT, Attribut notexist

Begonnen von Damian, 28 Dezember 2015, 22:06:42

Vorheriges Thema - Nächstes Thema

FunkOdyssey

Ich probiere nun erstmals die Generalisierung aus und wollte aus einem NOTIFY wie der folgende (im Forum gefunden) ...

define not_missingack notify .*:.(MISSING.ACK.*|.*NACK.*) { bla }

... ein DOIF machen. Ich habe es wie folgt ausprobiert. Ist das folgende richtig?


(
[":^MISSING.ACK"] or
[":^NACK"]
)
(ausführungsteil)


Oder kann man das auch weiter verschlanken in Form von "(MISSING.ACK.*|.*NACK.*)"?

Damian

Zitat von: FunkOdyssey am 22 Februar 2016, 16:37:13
Ich probiere nun erstmals die Generalisierung aus und wollte aus einem NOTIFY wie der folgende (im Forum gefunden) ...

define not_missingack notify .*:.(MISSING.ACK.*|.*NACK.*) { bla }

... ein DOIF machen. Ich habe es wie folgt ausprobiert. Ist das folgende richtig?


(
[":^MISSING.ACK"] or
[":^NACK"]
)
(ausführungsteil)


Oder kann man das auch weiter verschlanken in Form von "(MISSING.ACK.*|.*NACK.*)"?

.*NACK.* entspricht dann einfach "NACK"

es geht auch [":^MISSING.ACK|NACK"]

Gruß

D. Sordyl

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FunkOdyssey

Danke. Ich probiere das mal aus. Man kann den Fall halt so schlecht reproduzieren und deswegen habe ich vorsichtshalber im Forum gefragt. merci

kjmEjfu

Zitat von: Loredo am 21 Februar 2016, 13:43:27
Dafür braucht man keinen eigenen Webhook, geht alles über einen.

dann verstehe ich leider doch nicht ganz, wie du das machst.
Denn auch wenn der iBeacon auslöst, wird doch im Geofancy die DeviceUUID vom iPhone übergeben. Durch das entsprechend im Roommate gesetzte Attribut  rr_geofenceUUIDs wird aber doch eine Veränderung durchgeführt. Ein rr_locationIgnore o.ä. gibt es ja nicht.
Kannst du mich noch in die richtige Richtung schubsen?
Migriere derzeit zu Home Assistant

Loredo

Das ist jetzt wirklich OT hier, ich habe dir im Geofancy Thread geantwortet.


Gruß
Julian
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

igami

Hallo Damian,

ich hätte da noch eine Idee/einen Wunsch:
Die Syntax bei Filtern nach Ausdrücken mit Ausgabeformatierung erweitern auf

[<Device>:<Reading>|<Internal>:d|"<Regex>":"<Output>":"<notexist>"]


So könnte man für jede Abfrage noch einen eigenen notexist Wert Vergeben. So wie es aktuell mit ReadingsVal auch funktioniert.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Damian

Zitat von: igami am 29 März 2016, 20:58:41
Hallo Damian,

ich hätte da noch eine Idee/einen Wunsch:
Die Syntax bei Filtern nach Ausdrücken mit Ausgabeformatierung erweitern auf

[<Device>:<Reading>|<Internal>:d|"<Regex>":"<Output>":"<notexist>"]


So könnte man für jede Abfrage noch einen eigenen notexist Wert Vergeben. So wie es aktuell mit ReadingsVal auch funktioniert.

Grüße
igami
Da in den meisten Fällen die zusätzlichen Optionen nicht benutzt werden, müsste man [device:reading:::"Defaultwert"] angeben - ist nicht so schön.

Hast du einen Fall, wo das Attribut notexist nicht ausreicht?

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

igami

Eigentlich wollte ich damit das Konstrukt

("[HM_2C10D8_Sw:state]" eq "on")?"eingeschaltet":"ausgeschaltet")

abkürzen.
Wobei ich hier ja auch den Wert des Reading auf "on" überprüfe und nicht ob das Reading existiert.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

igami

habe es nun folgendermaßen gelöse

[HM_2C10D8_Sw:state:"(.*)":($1 =~ /on/?"eingeschaltet":"ausgeschaltet")]
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Per

Eine Frage als Nicht-Perl-Nativ-Speaker: Wie sieht das ganze DOIF aus? Ab und zu bräuchte ich sowas, um Gerätenamen in Meldungen "sprechender" zu machen. Küchenfenster auf liest sich besser als ku.window auf :D.

Damian

Zitat von: igami am 31 März 2016, 17:46:43
habe es nun folgendermaßen gelöse

[HM_2C10D8_Sw:state:"(.*)":($1 =~ /on/?"eingeschaltet":"ausgeschaltet")]


Mit den neuen Filteroptionen ist das sicherlich möglich. Allerdings gibt es hier genauso eine Fehlermeldung, wenn das Reading nicht vorhanden ist.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

igami

Zitat von: Damian am 31 März 2016, 18:56:02
Mit den neuen Filteroptionen ist das sicherlich möglich. Allerdings gibt es hier genauso eine Fehlermeldung, wenn das Reading nicht vorhanden ist.

Ist eigentlich auch ein Mapping des Werts als eine Abfrage ob das Reading existiert.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Damian

Zitat von: igami am 01 April 2016, 13:08:33
Ist eigentlich auch ein Mapping des Werts als eine Abfrage ob das Reading existiert.

Im Ausführungsteil ist das sicherlich gut nutzbar. In der Bedingung kann man ja auch mit =~ auf "on" abfragen.

Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

lestat.le

Hallo,

ich möchte das ich eine EMail erhalte, wenn ein Fensterkontakt "open" signalisiert und der Dummy "ALARM_armed" aktiv ist.
Alle Fensterkontakte beginnen mit "Fensterkontakt_".

Leider bekomme ich nicht cmd 1. Es bleibt auf cmd2.

Erst hatte ich diese Variante:

(["^Fensterkontakt_"] eq "open" and [?ALARM_armed] eq "an") ({DebianMail(xxxxxx)})

Aus der Commandref habe ich dann dies hier probiert (da ist mein Anwendungsfall ja eigentlich beschrieben)

(["^Fensterkontakt_:open"] and [?ALARM_armed] eq "an") ({DebianMail(xxxxxx)})

Wie gesagt, ich bekomme immer nur cmd2. Kann mir bitte jemand unter die Arme greifen? Wo habe ich den Fehler gemacht?

Herzlichen Dank und viele Grüße


l2r

Wissen ist Macht.
Ich weiß nix.
Macht nix.