gelöst : NotifyAbwesendIn3Min already defined, delete it first

Begonnen von Sauron, 12 März 2014, 15:11:51

Vorheriges Thema - Nächstes Thema

Sauron

Hallo Forum,
ich bin neu hier in der fhem Welt und komme aus der XS1 Welt. Ich hoffe ich bin hier richtig mit meinen Fragen.
Nun versuche ich meine Skripte in eure Welt zu übertagen, an dieser Stelle bin ich mit meiner Weissheit allerdings schon zu ende.

Problem:
Ich möchte, wenn ich das Haus verlasse eine Taste "gehen_melden" drücken
woraufhin eine Routine ablaufen soll ( Türe schliessen, Staus abwesend setzen......)
Türe schliessen soll nach einer Minute stattfinden

daher habe ich in fhem.cfg
define gehen_melden FS20 XXXXX xXX
define HaustuereSchliessen XXXX XX
define NotifyGehen notify gehen_melden:.* {SktGehenMelden("gehen_melden","HaustuereSchliessen");;}

in 99_MyUtils.cfg
sub SktGehenMelden($$){
  my ($Ws,$Haustuer) = @_;
#Log 1,"SktGehenMelden*";
  if(Value($Ws) ne "off") {
     { fhem( "define test at +00:01:00 set HaustuereSchliessen on-for-timer 2") };
    #...........
  }   
}
das geht nun mehrfach hintereinader gut, aber irgendwann kommt:
2014.03.12 10:10:56 3: define test at +00:01:00 set HaustuereSchliessen on-for-timer 2 : test already defined, delete it first
was mache ich falsch?


marvin78

Eventuell wird innerhalb der Minute ein zweites mal getriggert? Das at verschwindet ja erst nach der Minute, welche du festgelegt hast, wieder. Ein neues define führt dann zu dem Fehler.

Puschel74

Hallo,

der aber kein Fehler ist sondern nur ein Hinweis das etwas definiert werden soll was bereits existiert.
Nicht schön aber auch nicht schlimm.

Diese Meldung lässt sich umgehen indem man das at nur anlegen lässt wenn es nicht bereits existiert.

fhem("define test at +00:01:00 set HaustuereSchliessen on-for-timer 2") if(Value("test") eq "")

Wie gesagt - kann man machen muss man aber nicht.

Grüsse
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.

Rince

Ich finde es ja ratsamer Notifies nicht zu löschen und zu kreieren, sondern mit disabled=0 oder 1 einfach zu aktivieren oder zu deaktivieren wenn man sie braucht.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

betateilchen

es geht aber letztendlich nicht um ein notify, sondern um ein at mit einer relativen Zeitangabe. Da nützt Dir das disable nicht besonders viel ;)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

der-Lolo

ein solches at verschwindet aber doch wenn es die schaltzeit erreicht hat, oder?
Also muss es ja so sein das der trigger mehrfach kommt...

Sauron


Puschel74

Hallo,

@der-Lolo

Das at verschwindet wenn es ausgeführt wurde resp. der Zeitpunkt der Ausführung erreicht ist - ja.

Ich weiß jetzt nicht wie das in FHEM gehandelt wird wenn FHEM zum Zeitpunkt der Ausführung nicht läuft und erst danach gestartet wird.
Ich vermute mal das das at dann einfach bis zum nächsten Zeitpunkt erhalten bleibt.

Die Meldung kann in diesem Fall nur kommen wenn innerhalb der einen Minute das notify mit dem innenliegenden at nochmal triggert und FHEM
dann natürlich versucht das bereits bestehende at nochmal anzulegen.
Richtig.

@Sauron
Bitte deinen ersten Beitrag bearbeiten und dem Titel ein gelöst vorne dran stellen.
Danke.

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.

der-Lolo

wie hast du das jetzt gelöst?
Mit Puschels Code Schnipsel?
Ein event-on-change hätte auch geholfen - denke ich...

Puschel74

Hallo,

event-on-change funktioniert mWn nur bei einem Device aber nicht bei einem notify oder at - wie auch?
Es ändert sich ja kein Event - es wird nur etwas definiert was bereits existiert  ;)

Grüsse
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.

der-Lolo

natürlich meinte ich ein event-on-change für den Taster den er drückt wenn er geht, oder gab es einen anderen grund für das 2-fache anlegen des at jobs?
falls es einen anderen grund gab - erklär es nochmal bitte, weil dann habe zumindest ich es nicht richtig verstanden...

Danke.

Puschel74

Hallo,

ich hab mir grad den ersten Beitrag nochmal angeschaut.

Stimmt - du hast recht.
Fehler von mir.

Ich weiss nicht ob event-on-change-reading bei einem FS20-Taster funktioniert.
Versuch macht kluch  ;D
Das müsste der TE mal ausprobieren ob es dann besser klappt bzw. ohne Abfrage ob das at bereit definiert ist.

Grüsse
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.

Sauron

Zitat von: der-Lolo am 12 März 2014, 19:05:02
wie hast du das jetzt gelöst?
Mit Puschels Code Schnipsel?
Ein event-on-change hätte auch geholfen - denke ich...
ich habe überall den Code Schnipsel if(Value("Name des define ") eq "") angehängt.

Sauron

Zitat von: Puschel74 am 13 März 2014, 08:26:42
Hallo,
......

Ich weiss nicht ob event-on-change-reading bei einem FS20-Taster funktioniert.
Versuch macht kluch  ;D
Das müsste der TE mal ausprobieren ob es dann besser klappt bzw. ohne Abfrage ob das at bereit definiert ist.

Grüsse
Ich habe den Betrag wie von dir gewünscht auf gelöst gesetzt, da meine Frage super beantwortet ist. Falls sich "TE "auf mich bezieht und ich noch was testen soll, dann mach ich das "gelöst"gerne wieder weg bzw. ein neues Thema auf, da müsstest du mir aber genau beschreiben was gewünscht ist.

der-Lolo

Guten Morgen Sauron,
ich fragte mich einfach noch warum es überhaupt zu dem doppeltem anlegen deiner at + definition kam, hier gäbe es zwei möglichkeiten - die erste wäre das der Schalter dir sein event "on" mehrfach liefert - das könntest du unterdrücken wenn du das attribut event-on-change für den schalter setzt. Dann wird wie der name schon sagt nur ein neues event generiert wenn es sich zum vorherigen event geändert hat. Der schalter also seinen state ändert.
Dieses attribut macht oft sinn in FHEM da es einige Sensoren z.b. gibt die innerhalb einer gewissen zeit senden, auch ohne wertänderung. Ein temperatur sensor liefert z.b. alle drei minuten seine temperatur, auch wenn sie sich nicht geändert hat. Wenn du nun auf die temperatur triggerst kommt der trigger eben alle x minuten neu. wenn das attribut aktiv ist kommt das event nur wenn sich der trmperaturwert wirklich geändert hat.
Die zweite möglichkeit wäre das du den Taster innerhalb der definierten zeit mehrfach betätigt hast... dann wärst du die fehlerquelle ;-)
Wenn es doch noch einen anderen grund geben könnte hätte ich das eben gerne für mein verständnis gewusst.

Mit dem Schnipsel vom puschel schipperst du um das problem herum löst es aber meiner meinung nach nicht. Mal davon abgesehen das es ja eh "nur" um einen schönheitsfehler geht.