Zeilenumbruch...

Begonnen von user1, 13 Oktober 2015, 23:33:13

Vorheriges Thema - Nächstes Thema

user1

Ich versuche, mit notify und at eine Ereignissteuerung zu realisieren. Dabei möchte ich mehrere Befehle an ein "notify" knüpfen. Leider funktioniert das aber nicht.

Bei der ersten Variante, die ich ausprobiert habe, wird der Zeilenumbruch mit \ ignoriert:


define setBoost notify ^never$ \
    set MAX_1 desiredTemperature manual 22; \
    delete boostTimer; \
    define boostTimer at +00:10:00 trigger setAuto;


Das sehe ich daran, dass der Code beim Starten von FHEM ausgeführt wird, auch ohne trigger.

Ich gehe mal davon aus, dass es eine Möglichkeit gibt, FHEM-Befehle über mehrere Zeilen umzubrechen, aber so wie oben funktioniert es offenbar nicht.

Mein zweiter Versuch bestand darin, die FHEM-Befehle in Perl code zu packen, wie in den Beispielen in http://www.fhemwiki.de/wiki/Notify, was aber auch nicht klappte:


define setBoost notify ^never$ { \
fhem("set MAX_1 desiredTemperature manual 22");; \
fhem("delete boostTimer");; \
fhem("define boostTimer at +00:10:00 trigger setAuto");; \
fhem("attr boostTimer room MAX");; \
}


Hier wird der Code zwar beim laden des .cfg Files nicht ausgeführt, ein trigger setBoost hat aber keinerlei Wirkung. Im Log-File gibt es auch keine Fehlermeldung.

Die \ und das doppelte ;; sind zwar wohl überflüssig, sollten aber nach meinem Verständnis auch nicht schaden.

Was mache ich hier falsch?

rapster

#1
Was du falsch machst:

1. die fhem.cfg direkt bearbeiten => nutze die DEF, hier brauchst du dich nicht um Zeilenumbruch usw. zu kümmern.
2. einfach Beispiele aus dem wiki rauskopiert zu haben, ohne die Wiki-Seite aufmerksam gelesen zu haben,
    denn, dein trigger device für dein notify ist "never", ein "trigger setBoost" tut nicht das was du willst,

    wie gesagt les dich in die Thematik ein, und kopier nicht einfach Beispiele welche du nicht 100% verstehst.
    Und lass die finger von der fhem.cfg, es gibt keinen (kaum einen) Grund diese direkt zu bearbeiten.

rudolfkoenig

Zusaetzlich:
- notify ergaenzt den Regexp selbst mit ^ und $
- statt delete+define kann man defmod verwenden
- statt at mit 10 Sekunden wuerde ich sleep 10 verwenden, es ist einfacher.

weblint

@rudolfkoenig
klasse! Endlich mal ein Post ohne Seitenlanges genöhle das man es nicht drauf hat. Wenn ich so ältere Anfragen aus 2012 lese mit was die um die Ecke kamen und von Dir kompetent Hilfestellung bekamen gibt es egal wie blöd der Fehler auch ist immer eins auf die Mütze anstatt konstruktiv zu antworten. So, das wollte ich loswerden. Erging mir gestern so bei einer Anfrage zu wget und notify.

Wenn der Junge Mann hier die fhem.cfg bearbeitet was spricht dagegen. Habe meine config in mehere aufgeteilt und per include eingebunden. Läuft perfekt gerade wenn man was probieren will

Cu, Klaus

Gesendet von meinem Nexus 5 mit Tapatalk

RasPi an EnOcean/CUL. Using Fs20, EnOcean, HM in Testing

user1

Danke für die Antworten soweit.

Ja, beim Trigger habe ich Name und Event durcheinandergebracht.

Zu rapster:

1) doch, ich will die cfg direkt bearbeiten, da ich hier relativ komplexe Dinge verteilt auf mehrere Files drin habe die ich manuell ändern  und strukturiert dargestellt haben möchte.

2) es ist nicht so, dass ich keine Ahnung von Programmieren habe, aber es stimmt, dass ich bei FHEM bei vielem im Detail nicht durchblicke. Das soll keine Entschuldigung sein, aber ein Teil davon liegt daran dass die Infos zu FHEM m.E. sehr "verteilt" sind. Nur nebenbei, habe meine eigenen Perlmodule am laufen, eigene Firmware für Jeelink + eigene Hardware etc. Gestern abend hatte ich aber eine "Durcheinander"...

- 3) Du hast nicht mal versucht, auf meine Fragen einzugehen. Manchmal wäre einfach keine Antwort besser, finde ich.

Zu rudolf könig

- Danke für den Hinweis mit defmod und sleep.
- Sleep habe ich nicht verwendet, da ich das "at" auch löschen können möchte (Abbruch und Nachtriggern).

Unterdessen läuft das Ding. Hier der Code falls jemand mal das gleiche Problem haben sollte.


define boostSwitch FS20 11114444 1d
attr boostSwitch dummy 1
attr boostSwitch room MAX

define boostButtonOn   notify MAX_eco.onoff\x3a.0 trigger boostSwitch on
define boostButtonOff  notify MAX_eco.onoff\x3a.1 trigger boostSwitch off

define setBoost notify boostSwitch.on \
  set MAX_1 desiredTemperature manual 22;; \
  set GenericSwitch2 on;; \
  set boostSwitch on;; \
  defmod boostTimer at +00:10:00 trigger boostSwitch off;; \
  attr boostTimer room MAX

define setAuto notify boostSwitch.off \
  delete boostTimer;; \
  set boostSwitch off;; \
  set GenericSwitch2 off;; \
  set MAX_1 desiredTemperature auto


rapster

Zitat von: user1 am 14 Oktober 2015, 09:01:53
Manchmal wäre einfach keine Antwort besser, finde ich.

Werde ich in Zukunft auf Fragen von dir so handhaben

weblint

auf 'alle' wäre konstruktiver
RasPi an EnOcean/CUL. Using Fs20, EnOcean, HM in Testing

rudolfkoenig

Bitte private Fehden auch privat austragen.