Problem mit notify; Mehrfache Befehlsausführung

Begonnen von mannil, 17 Juni 2014, 21:26:36

Vorheriges Thema - Nächstes Thema

mannil

Hallo!

Ich habe ein Problem mit einem notify.

Das notify ist wie folgt definiert:
define rol_og_sonne_auf notify T:.* {if(ReadingsVal("T","twilight_weather",0)<75){fhem ("set rol_og_alle pct 100;; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!'")}}
attr rol_og_sonne_auf disabledForIntervals 22:00-24:00 00:00-18:00
attr rol_og_sonne_auf group Rolladen
attr rol_og_sonne_auf room zz_Steuerung


Im Log siehts so aus:
2014.06.17 21:15:09 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:09 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:10 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:10 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:10 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:10 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:11 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:11 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:11 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:11 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:12 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:12 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:12 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:12 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:13 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:13 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:13 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:13 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:15 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:15 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:15 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:15 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:16 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:16 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:16 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:16 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:17 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:17 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:17 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:17 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:18 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:18 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:18 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:18 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:19 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:19 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:19 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:20 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:21 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:21 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:21 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:21 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:22 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:22 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:22 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:22 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:23 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:23 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:23 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:23 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:24 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:24 3: rol_og_sonne_auf return value: OK
2014.06.17 21:15:24 3: CUL_HM set rol_az pct 100
2014.06.17 21:15:24 3: CUL_HM set rol_volker pct 100
2014.06.17 21:15:25 3: set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!' : OK
2014.06.17 21:15:25 3: rol_og_sonne_auf return value: OK


Bei der Ausführung ist mir FHEM auf dem Raspi abgestürzt. Der USB Stick auf /opt gemountet war nicht mehr ansprechbar. Das Handy hat aufgrund der zahlreichen Pushover Meldungen nur noch gebimmelt.

Die Rolladen sind in einer structure verpackt. Manuelle Ausführung führt zu keinen Problemen.

define rol_og_alle structure room rol_volker rol_az
attr rol_og_alle devStateIcon 0%:up 100%:down
attr rol_og_alle eventMap on:100% off:0%
attr rol_og_alle group Rolladen
attr rol_og_alle icon fts_shutter
attr rol_og_alle room zz_Steuerung
attr rol_og_alle webCmd pct


Was mache ich falsch?
Danke vorab für die Hilfe!!!

PS: Das Spiel wiederholt sich jetzt natürlich auch alle 5 Minuten bei der Aktualisierung von Twilight.
System 1: Cubietruck, CUL868v3, nanoCUL433, 2 x JeeLink 868, 6 x EC3000, 6 x Pollin Steckdosen, 10 x LaCrosse, 2 x FHT80b

System 2: Cubietruck, CUL434, MAX!Lan, HM-CFG-USB2, FHEMduino 434, 2 x ELRO Steckdosen, 2 x IT CMR-1000, 3 x MAX! HKT, 1 x MAX! WT, 3 x HM-LC-Bl1PBU-FM

der-Lolo

Ich schätze mal T:.* ist etwas zu universell gefasst... schau mal im eventmonitor oder event types was da alles auf T:.* matcht...


Puschel74

#2
Moin,

das regexp matcht auf alles (welches regexp  ??? ).
Ist ja garkeines angegeben.

Nun wird natürlich bei jedem Event von T das
{if(ReadingsVal("T","twilight_weather",0)<75)
geprüft und JEDESMAL wenn das if zutrifft wird der Rest ausgeführt.

@mannil
Was hast du erwartet das passieren soll?
Der Code macht genau das was er soll resp. wie du es "programmiert" hast.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

mannil

Nabend,

danke für die Kommentare.

Nur leider stehe ich weiterhin "auf dem Schlauc".

Wie müßte die Codezeile denn aussehen, daß nur einmal bei unterschreiten des Wertes 75 das notify auslöst?

Verwirrte Grüße!
System 1: Cubietruck, CUL868v3, nanoCUL433, 2 x JeeLink 868, 6 x EC3000, 6 x Pollin Steckdosen, 10 x LaCrosse, 2 x FHT80b

System 2: Cubietruck, CUL434, MAX!Lan, HM-CFG-USB2, FHEMduino 434, 2 x ELRO Steckdosen, 2 x IT CMR-1000, 3 x MAX! HKT, 1 x MAX! WT, 3 x HM-LC-Bl1PBU-FM

Puschel74

Hallo,

das regexp muss angepasst werden.

Zitatdaß nur einmal bei unterschreiten des Wertes 75 das notify auslöst?
Das wird nicht klappen - zumindest nicht mit einem normalen notify.
Ich weiß nicht ob andere Module dazu besser geeignet wären aber ich würde mal so ran gehen:

define rol_og_sonne_auf notify T:twilight_weather.* {
  if((ReadingsVal("T","twilight_weather",0)<75) && (Value("rol_og_alle") ne "pct 100")) {
    fhem ("set rol_og_alle pct 100;; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!'")
  }
}


- das notify triggert nur wenn das Reading twilight_weather auftaucht
- es wird geprüft ob der Wert < 75 ist UND rol_og_alle NICHT auf pct 100 steht (ob das klappt weiß ich nicht - musst du ggf. anpassen).

Fehlermeldungen bitte hier posten.
Der Code ist UNGETESTET und NICHT für die fhem.cfg bestimmt.
Das DEF bearbeiten und den Teil ab Device:Reading einfügen sollte klappen.
Einzeiler kann ich nicht ausstehen (eher - ich bin zu blöd dafür) daher gibt es bei mir idR nur "Mehrzeiler"  8)

Grüße

P.S.: Das Einsteiger.pdf möcht ich dir noch ans Herz legen.
Und auch mal hier im Forum abseits deiner Frage(n) ein bischen mitlesen oder stöbern kann dir das "Leben" mit FHEM auch erleichtern  ;)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

mannil

Hallo Puschel,

nochmals Danke für die Hinweise und Bemühungen.

Ich habe jetzt wohl eine Möglichkeit gefunden die für mich besser geeignet ist.
T:twilight_weather.* {if(ReadingsVal("T","twilight_weather",0)<100){fhem ("set rol_og_alle pct 100; set Pushover msg 'fhem' 'Rolladen geöffnet! Sonnenschutz aus!'; attr rol_og_sonne_auf disable 1")}}

Das notify setzt sich also selber nach Ausführung auf disabled. Enabled wird es wieder wenn meine Sonnenschutzschaltung anspricht. Dies werde ich jetzt noch mit Deiner Abfrage des Rolladenstand kombinieren.

Hintergrund: Ich denke, daß die Rolladen dann nicht hochfahren wenn vorher ein manueller Eingriff passiert ist. Mögliches Szenario wäre da ja ein Gewitter bei dem man die Rolladen doch lieber geschlossen hat.

Ich werde das mal weiter beobachten und mich bei Bedarf nochmal melden.
System 1: Cubietruck, CUL868v3, nanoCUL433, 2 x JeeLink 868, 6 x EC3000, 6 x Pollin Steckdosen, 10 x LaCrosse, 2 x FHT80b

System 2: Cubietruck, CUL434, MAX!Lan, HM-CFG-USB2, FHEMduino 434, 2 x ELRO Steckdosen, 2 x IT CMR-1000, 3 x MAX! HKT, 1 x MAX! WT, 3 x HM-LC-Bl1PBU-FM