Hallo zusammen,
ich habe folgenden notify:
define ndirektRasen notify Rasen { if(ReadingsVal("Rasen", "deviceMsg", "") eq "on (to broadcast)") {fhem("define atdirektRasen at +00:00:02 set Rasen off")}}
Wenn ich am HM-LC-SW4-WM eine Taste drücke, in meinem Fall Taste 2, zieht das Relais an und an Fhem wird "on (to broadcast)" geschickt.
Ich möchte dann dass Fhem nach 2 Sekunden den off Befehl sendet.
Der Code oben funktioniert auch einwandfrei, aber ich bekomme einen Fehler im Log, dass "atdirektRasen" schon definiert ist.
Wie kann "atdirektRasen" noch definiert sein wenn sich diese at Funktion doch nach einmal benutzen wieder löscht?
Gibt es vielleicht eine einfachere Möglichkeit nach einer bestimmten Zeit ein Gerät off zu schalten.
Ich hab nach off-for-timer gesucht aber nichts funktionierendes gefunden.
Hier der Log:
2014.06.01 22:51:38 3: define atdirektRasen at +00:00:02 set Rasen off : atdirektRasen already defined, delete it first
2014.06.01 22:51:38 3: ndirektRasen return value: atdirektRasen already defined, delete it first
2014.06.01 22:51:38 3: define atdirektRasen at +00:00:02 set Rasen off : atdirektRasen already defined, delete it first
2014.06.01 22:51:38 3: ndirektRasen return value: atdirektRasen already defined, delete it first
2014.06.01 22:51:38 3: define atdirektRasen at +00:00:02 set Rasen off : atdirektRasen already defined, delete it first
2014.06.01 22:51:38 3: ndirektRasen return value: atdirektRasen already defined, delete it first
2014.06.01 22:51:38 3: define atdirektRasen at +00:00:02 set Rasen off : atdirektRasen already defined, delete it first
2014.06.01 22:51:38 3: ndirektRasen return value: atdirektRasen already defined, delete it first
2014.06.01 22:51:40 3: define atdirektRasen at +00:00:02 set Rasen off : atdirektRasen already defined, delete it first
2014.06.01 22:51:40 3: ndirektRasen return value: atdirektRasen already defined, delete it first
2014.06.01 22:51:40 3: CUL_HM set Rasen off
Gruß Alex
hi alex,
so wie ich das im log sehe waren die 2 minuten seit dem letzten test noch nicht vorbei. ggfs einfach in der konsole "list atdirektRasen" bevor Du den knopf drückst um zu sehen ob das device noch von einen vorherigen test da ist
LG, florian
als Antwort bekomme ich:
No device named atdirektRasen found
Edit: Es sind sogar nur 2 Sekunden zum Testen
Gruß Alex
Hallo,
Du kannst ein Device nur einmal definieren. Da Du das "atdirektRasen" nirgendwo löschst knallt es eben beim zweiten Mal.
im Hinteren Teil
Zitat{fhem("define atdirektRasen at +00:00:02 set Rasen off")}
könntest Du auch einfach einen set absetzen.
{fhem ("set Rasen on-for-timer 2")} das setzt dann zwar noch einmal on ab, schaltet aber auch nach 2 sec wieder ab.
Gruß Christoph
Hab jetzt grade die Idee von Bennemannc ausprobiert.
Funktioniert genauso wie meine erste Variante
Im Log steht jetzt:
2014.06.02 12:39:20 3: CUL_HM set Rasen on-for-timer 2
2014.06.02 12:39:20 3: CUL_HM set Rasen on-for-timer 2
2014.06.02 12:39:20 3: CUL_HM set Rasen on-for-timer 2
2014.06.02 12:39:20 3: CUL_HM set Rasen on-for-timer 2
2014.06.02 12:39:20 3: CUL_HM set Rasen on-for-timer 2
Ich befürchte dass wenn ich den Timer mal auf 10 Minuten stelle, der Log dann "voll" geschrieben wird
Gruß Alex
das sieht so aus, wie wenn dein Notify 5 mal zuschlägt, also aufgerufen wird
Vielleicht passiert das beim Wechsel zu "on (to broadcast)".
Kann man das unterdrücken?
Edit: Aber nach 2 Sekunden geht der "Rasen" off. Müsste dann nicht theoretisch 5 * 2 Sekunden on-for-timer 2 ausgeführt werden?
Gruß Alex
Hallo,
war ja auch eine blöde Idee - Perpetuum Mobile - der on-for-timer löst sich ja selber aus :(
Ich muss heute Abend mal zuhause nachsehen - ich habe da etwas mit der Außenbeleuchtung, die nach 5 Minuten wieder ausgehen soll. Ist noch ungetestet, aber wenn das geht poste ich Dir das.
Normalerweise drückt man ja an dem Teil keine Tasten - sondern schaltet mit externen Schalten - dann ist die Sache einfacher. Dann geht das mit dem Notify wie beschrieben, da das Auslösende Event ja nicht vom zu schaltenden Device kommt.
Wenn Du das unbedingt mit den Tastern machen willst, könnte man mal nachsehen ob man das interne peering abschaltet und dann nur über fhem geht. Das hat aber den Nachteil, das fhem immer laufen muss.
Gruß Christoph
Man kann ja unterscheiden zwischen "off (to broadcast)" und "off (to CUL_HM)"
off (to broadcast) kommt nur wenn man den Taster direkt am Gerät betätigt, somit müsste man theoretisch nicht mit on-for-timer sich selbst auslösen.
Da durch on-for-timer das Gerät nachher auf "off (to CUL_HM)" steht.
Fhem läuft bei mir immer und wenn doch mal nicht, kann ich immer noch das Wasser direkt am Ventil öffnen für die Bewässerung.
Gruß Alex
Hallo,
wie hat mein Ausbilder immer gesagt: "Wissen heißt wissen wo's steht" .....
ich hab's wiedergefunden - nicht notify, sondern eventMap ist die Lösung. Hier ist der Link: http://forum.fhem.de/index.php/topic,20264.msg138090.html#msg138090
also bei eventMap muss /on-for-timer 2:an/ rein mit den Schrägstichen !!!
Gruß Christoph
Hallo,
ich bekomme es nicht gebacken.
Im Anhang ein Screenshot von den Attributen.
Aber mal angenommen das würde mit /on-for-timer 2:an/ funktionieren dann würde doch auch der Timer anspringen wenn ich nur "an" von Fhem aus sende
also "set Rasen on" oder nicht!?
Gruß Alex
Hallo,
ich habe mit eventMap auch noch nicht so viel rumgemacht. Wenn ich das richtig verstehe, werden hier events gemappt - also umgebogen. In diesem Fall würde dann aus "an" "on-for-timer 1". Die Schrägstriche sind erforderlich wegen dem Leerzeichen zwischen on-for-timer und der 2.
Das notify solltest Du gelöscht haben.
ZitatAber mal angenommen das würde mit /on-for-timer 2:an/ funktionieren dann würde doch auch der Timer anspringen wenn ich nur "an" von Fhem aus sende
Ja, dann gibt es kein an mehr sondern nur on-for-timer. Das kann sinvoll sein z.B. für Trepenhausautomaten. BTW off funktioniert dann immer noch wie gewohnt. Das wird ja nicht umgebogen. Wenn Du also das mit dem Rasen auf eine bestimmte Zeit einschränken möchtest, würde das so gehen.
Gruß Christoph
Nur "on-for-timer" wäre nicht gut.
Ich glaube ich bleibe lieber bei meiner ersten bzw. bei deiner Variante (funktionieren ja beide)
Dann muss ich eben mit den "unnötigen" Einträgen im Log leben.
So oft betätige ich die Bewässerung ja nicht durch drücken direkt am Taster. ;)
Gruß Alex
Hallo,
die Hinweismeldung (es ist keine Fehlermeldung) kommt weil das regexp des notify auf ALLES triggert was Rasen sendet.
Pass das regexp entsprechend an und du bekommst die Hinweismeldung nichtmehr zu sehen.
Der Event Monitor sollte dir dabei helfen.
Grad gesehen:
Es ist besser das regexp eng zu halten da das notify sonst jedesmal prüfen muss ob die Bedingungen erfüllt sind.
Dennoch. Der Event Monitor sollte hier dein Freund sein 8)
Grüße
Hallo,
der Event Monitor gibt folgendes aus:
Events:
2014-06-02 18:43:05 Global global DEFINED atdirektRasen
2014-06-02 18:43:05 CUL_HM Rasen level: 100
2014-06-02 18:43:05 CUL_HM Rasen pct: 100
2014-06-02 18:43:05 CUL_HM Rasen deviceMsg: an (to broadcast)
2014-06-02 18:43:05 CUL_HM Rasen an
2014-06-02 18:43:05 CUL_HM Rasen timedOn: aus
2014-06-02 18:43:07 CUL_HM CUL_HM_HM_LC_SW4_WM_21C7EA CMDs_pending
2014-06-02 18:43:07 CUL_HM Rasen set_aus
2014-06-02 18:43:07 Global global DELETED atdirektRasen
2014-06-02 18:43:08 CUL_HM CUL_HM_HM_LC_SW4_WM_21C7EA CMDs_done
2014-06-02 18:43:08 CUL_HM Rasen level: 0
2014-06-02 18:43:08 CUL_HM Rasen pct: 0
2014-06-02 18:43:08 CUL_HM Rasen deviceMsg: aus (to CUL_0)
2014-06-02 18:43:08 CUL_HM Rasen aus
2014-06-02 18:43:08 CUL_HM Rasen timedOn: aus
Basierend auf meiner ersten Variante
Ich sehe da keinen Fehler, bzw ich weiß nicht genau wodrauf ich achten muss.
Wie, Wo und Was kann ich an regexp anpassen??
Gruß Alex
Hallo,
nach deinen Event Monitor Einträgen und dem Code
define ndirektRasen notify Rasen { if(ReadingsVal("Rasen", "deviceMsg", "") eq "on (to broadcast)") {fhem("define atdirektRasen at +00:00:02 set Rasen off")}}
dürfte das at nie angelegt werden da deviceMsg nie "on (to broadcast)" enthält.
Post mal einen Screenshot vom Reading bitte.
Versuch mal:
define ndirektRasen notify Rasen.an define atdirektRasen at +00:00:02 set Rasen off
Grüße
Edith: Code nochmal geändert - versuchs damit nochmal bitte.
Warum gehst du auf das Reading deviceMsg?
Edith2: Hast du Rasen über die Weboberfläche geschaltet? Vor Ort dürfte der mMn kein an senden sondern maximal on.
Ich gehe über deviceMsg da ich nur möchte dass der Rasen (in dem Beispiel für 2 Sekunden) wenn ich auf den Taster am Gerät drücke, bewässert wird.
Daher kann dein Code doch gar nicht funktionieren oder!?
Das "on (to broadcast)" sagt ja ganz klar aus dass der Taster am Gerät selber gedrückt wurde.
Im Anhang der Screenshot
Gruß Alex
Hallo,
ZitatDas "on (to broadcast)" sagt ja ganz klar aus dass der Taster am Gerät selber gedrückt wurde.
Na dann zeig mir bitte in deinem Post vom Event Monitor das
on (to broadcast)Ich sehe nur ein
an (to broadcast).
Grüße
Ja du hast mit dem "an" nicht ganz unrecht
Habs jetzt mal so probiert funktioniert so aber gar nicht (Auszug aus DEF)
Rasen { if(ReadingsVal("Rasen", "deviceMsg", "") eq "an (to broadcast)") {fhem("define atdirektRasen at +00:00:02 set Rasen off")}}
aber hier noch ein Screenshot
Ich habs eben auch mal als "an (to broadcast)" gesehen kann aber keine Regel festellen warum mal so und mal so
Edit: Grade noch mal den Event Monitor mit laufen lassen. Da steht dann wieder drin "an (to broadcast)"
Gruß Alex
Hallo,
wenn Du das eventMap gelöscht hast (deleteattr) dann steht da natürlich wieder on statt an. Versuche mal nicht soviel auf einmal zu ändern.
Gruß Christoph
Hallo,
eventmap war schon wieder weg
Bei mir steht im eventmap genau das drin was auch vorher drin stand: on:an off:aus
Da dran kann es doch nicht liegen
Gruß Alex
Hallo,
daher bitte ich im angepinnten Beitrag auch um die defines der zugehörigen Geräte.
Weil damit das Rätselraten nicht zu sehr ausartet >:(
Nun wäre noch interessant ob du im Event Monitor bei der Vor Ort Bedienung ein on bekommst und bei der FHEM-Bedienung ein an
Den dann liese sich das Ganze ganz easy mit einem
define ndirektRasen notify Rasen.on define atdirektRasen at +00:00:02 set Rasen off
lösen.
Grüße
Beim nächsten mal wird alles besser ;D
Also die Ergebnisse von dem eben geposteten Event Monitor sind vom drücken direkt am Gerät.
Aber funktionieren "tuts" mit diesem notify
define ndirektRasen notify Rasen { if(ReadingsVal("Rasen", "deviceMsg", "") eq "on (to broadcast)") {fhem("define atdirektRasen at +00:00:02 set Rasen off")}}
Also der notify steht auf on
der Event Monitor sagt an
aber es funktioniert
bis auf der Log halt
Gruß Alex
Hallo,
ein letztes Mal und dann sind mir die Meldungen im Logfile auch egal.
define ndirektRasen notify Rasen:deviceMsg.on define atdirektRasen at +00:00:02 set Rasen off
Wozu soll das notify x-mal aufgerufen werden wenn es nur um 1 Reading geht?
Wenn der Event Monitor an "sagt" dann ist es das gesendete Event und nicht das empfangen - behaupte ich jetzt mal.
Ein Aktor (egal ob FS20 oder HM) wird mMn kein an oder aus senden sondern maximal ein on oder off.
an und aus macht dann das eventMap draus - aber das kann ich nur vermuten da wir das define ja nicht sehen dürfen (warum auch immer).
Grüße
Hallo,
Zitatan und aus macht dann das eventMap draus - aber das kann ich nur vermuten da wir das define ja nicht sehen dürfen (warum auch immer).
Ich weiß nicht was du meinst.
Mein eventMap hab ich vorher schonmal gepostet.
Jetzt nochmal im Anhang alles von "list Rasen"
Der Code von dir funktioniert nicht.
Der Log sagt nichts dazu
Der Event Monitor nur das:
Events:
2014-06-02 21:08:14 CUL_HM Rasen level: 100
2014-06-02 21:08:14 CUL_HM Rasen pct: 100
2014-06-02 21:08:14 CUL_HM Rasen deviceMsg: an (to broadcast)
2014-06-02 21:08:14 CUL_HM Rasen an
2014-06-02 21:08:14 CUL_HM Rasen timedOn: aus
2014-06-02 21:08:23 CUL_HM Rasen level: 0
2014-06-02 21:08:23 CUL_HM Rasen pct: 0
2014-06-02 21:08:23 CUL_HM Rasen deviceMsg: aus (to broadcast)
2014-06-02 21:08:23 CUL_HM Rasen aus
2014-06-02 21:08:23 CUL_HM Rasen timedOn: aus
Gruß Alex
Moin,
jo, Doppelpunkt übersehen :o
define ndirektRasen notify Rasen:deviceMsg:.on define atdirektRasen at +00:00:02 set Rasen off
Aber ich schieb den Beitrag mal in den HM-Bereich da ich vermute das sich das über die Devcie-Internen Funktionen leichter lösen lässt und du garkein notify benötigen wirst.
Änder mal den Beitragstitel passend ab bitte - off-fo-timer ist doch etwas dürftig und sollte eher lauten:
Gerät xyx (hier HM......) über Vor-Ort-Knopf für 2 Minuten einschalten
Danke.
Grüße
P.S.: Gestern ist mir das erst eingefallen nachdem ich den Rechenr schon runtergefahren hatte 8)
Hi,
handelt es sich hier um einen HM schalt-aktor der bei Druck auf die lokal angeschlossene Taste immer nach x sec wieder ausgeschaltet werden soll?
Dann würde ich es IM HM device lösen. Einfach einstellen, dass er, wenn der lokale Taster gedrückt wird, nach 2 sec wieder off geht.
Erst einmal pairen, intKeysVisib auf visib schalten und shOnTime des Peer self01 auf die An-dauer setzen.
Gruss Martin
Hallo,
ich werde den Code erst am Donnerstag ausprobieren können.
Ja, im Homematic Bereich ist das Thema wohl besser aufgehoben 8)
An martin876:
Dein Vorschlag werde ich dann auch am Donnerstag ausprobieren können.
Gruß Alex
Hallo,
@martin
Ja - dogexan möchte das Device direkt am Taster am Gerät einschalten und es soll nach 2 Minuten wieder abschalten.
Ich hatte ihn noch gebeten denTthreadtitel anzupassen ::)
@dogexan
Meinen Code kannst du dann vergessen (und das ganze notify drumherum).
Wenn martin sagt das es geht und du es genauso machst wie er sagt dann geht das auch 8)
Und Fragen immer schön beantworten ;)
Grüße
Hallo,
also aus Donnerstag ist nichts geworden, aber ein paar Monate später dann doch.
An Puschel74: Threadtitel ist jetzt angepasst.
An Martin876: intKeysVisib steht jetzt bei mir auf visib. Mit shOnTime hab ich noch meine Probleme.
Wenn ich dich richtig verstehe, soll ich den Wert bei "R-self04-shOnTime" auf die Anzahl der Sekunden ändern wo das Relai angezogen ist. (Es geht jetzt um Kanal 4 auf dem Aktor)
Frage jetzt: Wie mache ich das? Welchen Befehl brauche ich um den Wert der momentan auf 111600 s steht zu ändern? (siehe Anhang)
Gruß Alex
R- ist ein prefix, self04 der peer, also der sender des trigger. Hier intern.
Das kommando ist regSet
Set entity regSet shOnTime 2 self04
111600 ist maximal und sollte als unendlich angezeigt werden - aktuelle sw.
Ist nur bei on,off unendlich, nicht so bei delay
Hallo,
Sehr schön jetzt geht´s ;D 8)
Vielen Dank noch mal für die Hilfe.
Gruß Alex