Hauptmenü

Events erzeugen [gelöst]

Begonnen von chq, 14 Oktober 2018, 09:27:23

Vorheriges Thema - Nächstes Thema

chq

Hallo,

ich stehe grad mal wieder wirklich vollkommen auf dem Schlauch. Bisher habe ich Devices erstellt, die lediglich auf Events reagieren oder Readings abfragen.

Nun möchte ich, dass ein Device selber Events erzeugen, so dass andere Devices darauf reagieren können.

Wie macht "man" das für gewöhnlich? Mit setreading und dann Readings des sendenden Devices ändern, so dass hierbei Events entstehen?

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

CoolTux

Die meisten Devices erzeugen Events. Verstehe Deine Frage nicht. Um was für ein Device geht es denn? Gib mal ein list von so einem Device bevor hier großes raten an fängt.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

chq

#2
Ach so, Du meinst, dass ich nicht erst ein bestimmtes Event über ein extra erzeugtes Reading erstellen muss, sondern bereits ohnehin erzeugt Events verwende.

Ein list von dem betreffenden Device sprengt vermutlich den Rahmen der in einem Posting möglichen Anzahl an Zeichen.

Hier aber zumindest mal ein Ausschnitt der ersten Zeilen:

DEF        ([00:00]) () ## idle

## Tageshöchsttemperatur über 17 Grad (Ausführung jederzeit):

DOELSEIF ([HM_markise:state] eq "closed" and [Wetterstation:luminosity] >= "36000" and [Wetterstation:UVR] >= "350" and [wettervorhersage:fc1_high_c] >= "17" and [twilight:azimuth] >= "219" and [twilight:azimuth] < "265" and [twilight:elevation:d1] <= "28.7" and [twilight:elevation:d1] > "23.3" and [?HM_rolloEsszimmer:control] > "92" and [HM_drehgriffEsszimmer:state] ne "open") (setreading $SELF doifState fhemCmd) (set HM_rolloEsszimmer pct 92) ## L11
DOELSEIF ([HM_markise:state] eq "closed" and [Wetterstation:luminosity] >= "36000" and [Wetterstation:UVR] >= "350" and [wettervorhersage:fc1_high_c] >= "17" and [twilight:azimuth] >= "265" and [twilight:azimuth] < "292" and [twilight:elevation:d1] <= "30.3" and [twilight:elevation:d1] > "24.5" and [?HM_rolloEsszimmer:control] > "92" and [HM_drehgriffEsszimmer:state] ne "open") (setreading $SELF doifState fhemCmd) (set HM_rolloEsszimmer pct 92) ## L12
DOELSEIF ([HM_markise:state] eq "closed" and [Wetterstation:luminosity] >= "36000" and [Wetterstation:UVR] >= "350" and [wettervorhersage:fc1_high_c] >= "17" and [twilight:azimuth] >= "292" and [twilight:azimuth] < "301" and [twilight:elevation:d1] <= "22.3" and [twilight:elevation:d1] > "18.7" and [?HM_rolloEsszimmer:control] > "92" and [HM_drehgriffEsszimmer:state] ne "open") (setreading $SELF doifState fhemCmd) (set HM_rolloEsszimmer pct 92) ## L13
DOELSEIF ([HM_markise:state] eq "closed" and [Wetterstation:luminosity] >= "36000" and [Wetterstation:UVR] >= "350" and [wettervorhersage:fc1_high_c] >= "17" and [twilight:azimuth] >= "202" and [twilight:azimuth] < "229" and [twilight:elevation:d1] <= "23.7" and [twilight:elevation:d1] > "18.4" and [?HM_rolloEsszimmer:control] > "92" and [HM_drehgriffEsszimmer:state] ne "open") (setreading $SELF doifState fhemCmd) (set HM_rolloEsszimmer pct 92) ## R11
DOELSEIF ([HM_markise:state] eq "closed" and [Wetterstation:luminosity] >= "36000" and [Wetterstation:UVR] >= "350" and [wettervorhersage:fc1_high_c] >= "17" and [twilight:azimuth] >= "229" and [twilight:azimuth] < "265" and [twilight:elevation:d1] <= "30.5" and [twilight:elevation:d1] > "26.2" and [?HM_rolloEsszimmer:control] > "92" and [HM_drehgriffEsszimmer:state] ne "open") (setreading $SELF doifState fhemCmd) (set HM_rolloEsszimmer pct 92) ## R12
DOELSEIF ([HM_markise:state] eq "closed" and [Wetterstation:luminosity] >= "36000" and [Wetterstation:UVR] >= "350" and [wettervorhersage:fc1_high_c] >= "17" and [twilight:azimuth] >= "265" and [twilight:azimuth] < "288" and [twilight:elevation:d1] <= "30.1" and [twilight:elevation:d1] > "25.5" and [?HM_rolloEsszimmer:control] > "92" and [HM_drehgriffEsszimmer:state] ne "open") (setreading $SELF doifState fhemCmd) (set HM_rolloEsszimmer pct 92) ## R13


Ich möchte erreichen, dass bei allen Kommandos außer dem ersten ein bestimmtes Event erzeugt wird.

Ich habe das mangels Kenntnissen zunächst mit (setreading $SELF doifState fhemCmd) gelöst.

Mein Problem wird sein, dass ich dieses Event auch von anderen Devices erzeugen wollen werde.

Gruß Chris

Edit:

In der Commandref habe ich das hier gefunden:

Bespiele für Event(abfragen):

["FS"] triggert auf alle Devices, die "FS" im Namen beinhalten.
["^FS"] triggert auf alle Devices, die mit "FS" im Namen anfangen.
["FS:temp"] triggert auf alle Devices, die "FS" im Namen und "temp" im Event beinhalten
([":^temp"]) triggert auf beliebige Devices, die im Event mit "temp" beginnen.
(["^FS$:^temp$"] trigger auf Devices, die genau "FS" heißen und im Event genau "temp" vorkommt.
[""] triggert auf alles.


Leider ist da triggert auf ein bestimmtes Event, unabhängig davon, welches Device dieses erzeugte.
So einfach wie möglich, so kompliziert wie nötig

CoolTux

Zitat von: chq am 14 Oktober 2018, 09:47:34
Ach so, Du meinst, dass ich nicht erst ein bestimmtes Event über ein extra erzeugtes Reading erstellen muss, sondern bereits ohnehin erzeugt Events verwende.

Ein list von dem betreffenden Device sprengt vermutlich den Rahmen der in einem Posting möglichen Anzahl an Zeichen.

Hier aber zumindest mal ein Ausschnitt der ersten Zeilen:

DEF        ([00:00]) () ## idle

## Tageshöchsttemperatur über 17 Grad (Ausführung jederzeit):

DOELSEIF ([HM_markise:state] eq "closed" and [Wetterstation:luminosity] >= "36000" and [Wetterstation:UVR] >= "350" and [wettervorhersage:fc1_high_c] >= "17" and [twilight:azimuth] >= "219" and [twilight:azimuth] < "265" and [twilight:elevation:d1] <= "28.7" and [twilight:elevation:d1] > "23.3" and [?HM_rolloEsszimmer:control] > "92" and [HM_drehgriffEsszimmer:state] ne "open") (setreading $SELF doifState fhemCmd) (set HM_rolloEsszimmer pct 92) ## L11
DOELSEIF ([HM_markise:state] eq "closed" and [Wetterstation:luminosity] >= "36000" and [Wetterstation:UVR] >= "350" and [wettervorhersage:fc1_high_c] >= "17" and [twilight:azimuth] >= "265" and [twilight:azimuth] < "292" and [twilight:elevation:d1] <= "30.3" and [twilight:elevation:d1] > "24.5" and [?HM_rolloEsszimmer:control] > "92" and [HM_drehgriffEsszimmer:state] ne "open") (setreading $SELF doifState fhemCmd) (set HM_rolloEsszimmer pct 92) ## L12
DOELSEIF ([HM_markise:state] eq "closed" and [Wetterstation:luminosity] >= "36000" and [Wetterstation:UVR] >= "350" and [wettervorhersage:fc1_high_c] >= "17" and [twilight:azimuth] >= "292" and [twilight:azimuth] < "301" and [twilight:elevation:d1] <= "22.3" and [twilight:elevation:d1] > "18.7" and [?HM_rolloEsszimmer:control] > "92" and [HM_drehgriffEsszimmer:state] ne "open") (setreading $SELF doifState fhemCmd) (set HM_rolloEsszimmer pct 92) ## L13
DOELSEIF ([HM_markise:state] eq "closed" and [Wetterstation:luminosity] >= "36000" and [Wetterstation:UVR] >= "350" and [wettervorhersage:fc1_high_c] >= "17" and [twilight:azimuth] >= "202" and [twilight:azimuth] < "229" and [twilight:elevation:d1] <= "23.7" and [twilight:elevation:d1] > "18.4" and [?HM_rolloEsszimmer:control] > "92" and [HM_drehgriffEsszimmer:state] ne "open") (setreading $SELF doifState fhemCmd) (set HM_rolloEsszimmer pct 92) ## R11
DOELSEIF ([HM_markise:state] eq "closed" and [Wetterstation:luminosity] >= "36000" and [Wetterstation:UVR] >= "350" and [wettervorhersage:fc1_high_c] >= "17" and [twilight:azimuth] >= "229" and [twilight:azimuth] < "265" and [twilight:elevation:d1] <= "30.5" and [twilight:elevation:d1] > "26.2" and [?HM_rolloEsszimmer:control] > "92" and [HM_drehgriffEsszimmer:state] ne "open") (setreading $SELF doifState fhemCmd) (set HM_rolloEsszimmer pct 92) ## R12
DOELSEIF ([HM_markise:state] eq "closed" and [Wetterstation:luminosity] >= "36000" and [Wetterstation:UVR] >= "350" and [wettervorhersage:fc1_high_c] >= "17" and [twilight:azimuth] >= "265" and [twilight:azimuth] < "288" and [twilight:elevation:d1] <= "30.1" and [twilight:elevation:d1] > "25.5" and [?HM_rolloEsszimmer:control] > "92" and [HM_drehgriffEsszimmer:state] ne "open") (setreading $SELF doifState fhemCmd) (set HM_rolloEsszimmer pct 92) ## R13


Ich möchte erreichen, dass bei allen Kommandos außer dem ersten ein bestimmtes Event erzeugt wird.

Gruß Chris

Ok verstehe.
Ich gebe zu das so gut wie alles unter FHEM ein Device ist. Dennoch sprechen meistens nur von ein Device wenn es etwas ist was den Zustand eines physikalischen Gerätes anzeigt oder verändern kann.
Was Du hast in ein DOIF. Deine Frage ist also besser im Forum für DOIF auf gehoben. Und wenn Deine DOIF Definition den Ramen des Forumeditors sprengt, stimmt etwas mit Deiner Herangehensweise nicht.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

chq

Meine DOIF-Definition sprengt nicht die Zeichenanzahl des Foreneditors, vermutlich aber ein list des Devices.

Bitte schau Dir das hier noch an:

In der Commandref habe ich das hier gefunden:

Bespiele für Event(abfragen):

["FS"] triggert auf alle Devices, die "FS" im Namen beinhalten.
["^FS"] triggert auf alle Devices, die mit "FS" im Namen anfangen.
["FS:temp"] triggert auf alle Devices, die "FS" im Namen und "temp" im Event beinhalten
([":^temp"]) triggert auf beliebige Devices, die im Event mit "temp" beginnen.
(["^FS$:^temp$"] trigger auf Devices, die genau "FS" heißen und im Event genau "temp" vorkommt.
[""] triggert auf alles.

Leider ist da triggert auf ein bestimmtes Event, unabhängig davon, welches Device dieses erzeugte.

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

CoolTux

#5
Es gibt aber auch Beispiele auf das triggern von bestimmten Device und Readings.
Und es werden Events nicht abgefragt sondern darauf reagiert (triggern)

Bitte verschiebe Deinen Thread in das richtige Forum, da kann man Dir besser helfen. Ich kenne mich zu wenig mit DOIF aus.
Mal davon ab ist das
(["^FS$:^temp$"] trigger auf Devices, die genau "FS" heißen und im Event genau "temp" vorkommt.
doch genau das was Du suchst.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

chq

Das hat mir geholfen. 1000 Dank!

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

CoolTux

ok, dann bitte noch auf gelöst setzen. Danke Dir
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net