Hallo zusammen,
ich habe folgendes Notify aktiv:
xmascheck {
fhem("set Xmas off");
{Log 1, "Adventszeit inaktiv"}
if (Advent==1)
{
{Log 1, "Adventszeit aktiv"}
fhem("set Xmas on");
fhem("include ./weihnachten.cfg");
}
return;
}
Bei einem Neustart wird es nicht ausgeführt aber ein trigger erzeugt das gewünschte Ergebnis im laufenden Betrieb
Ich sehe aber keinen Fehler
bei einem neustart wird das Event global:INITIALIZED erzeugt.. und afaik nicht "xmascheck" ...
Grüße,
Stephan
1. was heisst afaik
2. und wie bekomme ich es dann bei einem Neustart gebacken ?
afaik = as far as I know
Zitat von: raspklaus am 02 Dezember 2017, 17:22:50
Ich sehe aber keinen Fehler
ich schon... da sind zuviele geschweifte Klammern.
Sehe ich nicht, im Syntaxcheck sind alle ordnungsgemäss abgeschlossen
zuviele != nicht abgeschlossen :
Zitatxmascheck {
fhem("set Xmas off");
{Log 1, "Adventszeit inaktiv"}
## geschweifte Klammern sind zuviel.
if (Advent==1)
{
{Log 1, "Adventszeit aktiv"}
## geschweifte Klammern sind zuviel.
fhem("set Xmas on");
fhem("include ./weihnachten.cfg");
}
return;
}
Mit der ersten, öffnenden geschweiften Klammer bist du in Perl und kannst Perl-Befehle einfach so absetzen.
Mir stellt sich auch die Frage, ob du hier mit dem wechsel auf Perl gut beraten bist, da sich das auch direkt in FHEM lösen lässt...
aber da es funktioniert, ist diese Frage eher rhetorisch.
Dein Problem wird dieses aber nicht lösen...
Grüße,
Stephan
Es funktioniert ja wie gewünscht aber nur überr die Commandline mit trigger und nicht bei einem Neustart von fhem
Dazu muss ich mich wiederholen:
Zitat von: abc2006 am 02 Dezember 2017, 17:35:29
bei einem neustart wird das Event global:INITIALIZED erzeugt.. und afaik nicht "xmascheck" ...
Grüße,
Stephan
und wann wird dann das notify ausgeführt ?
immer, wenn das Device "xmascheck" ein Event erzeugt. Doch weil du keine Syntax für das Reading angegeben hast, wahrscheinlich gar nicht.
list vom Notify bitte machen
Hier das list
Internals:
DEF xmascheck {
fhem("set Xmas off");
{Log 1, "Adventszeit inaktiv"}
if (Advent==1)
{
{Log 1, "Adventszeit aktiv"}
fhem("set Xmas on");
fhem("include ./weihnachten.cfg");
}
return;
}
NAME xmascheck
NOTIFYDEV xmascheck
NR 2738
NTFY_ORDER 50-xmascheck
REGEXP xmascheck
STATE 2017-12-02 15:57:30
TYPE notify
READINGS:
2017-12-02 12:33:33 state active
Attributes:
devStateIcon disabled:kreisrot
disable 0
room Weihnacht
verbose 5
Auch das list ändert nichts daran das abc2006 recht hat.
Zitat von: abc2006 am 02 Dezember 2017, 17:35:29
bei einem neustart wird das Event global:INITIALIZED erzeugt.. und afaik nicht "xmascheck" ...
Grüße,
Stephan
Das notify wird schlicht und einfach nur getriggert wenn xmascheck per trigger aufgerufen wird da es keine Readings besitzt die sich ändern könnten/würden.
Zitat von: abc2006 am 02 Dezember 2017, 19:41:54
immer, wenn das Device "xmascheck" ein Event erzeugt. Doch weil du keine Syntax für das Reading angegeben hast, wahrscheinlich gar nicht.
Wenn das Device xmascheck Readings besitzen würde die sich aktualisieren dann würde das notify immer bei einer Aktualisierung der Readings ausgeführt werden.
Da es das nicht hat wird es nur per
trigger xmascheck
ausgelöst.
Das hat mit einem Syntax für Reading erstmal nichts zu tun.
Sowas kann gewollt sein wenn ein notify bei
- jeder Änderung eines Readings oder
- als Makro per trigger
ausgeführt werden soll.
ZitatBei einem Neustart wird es nicht ausgeführt aber ein trigger erzeugt das gewünschte Ergebnis im laufenden Betrieb
global:INITIALIZED war schon der richtige Hinweis wenn das notify bei einem (re)start von FHEM ausgeführt werden soll.
Warum das aber nur bei einem Start von FHEM ausgeführt werden soll muss schon raspklaus selber wissen.
Edith: Und wie das notify umgestellt werden muss um bei jedem Start von FHEM ausgelöst zu werden bin ich jetzt zu bequem zu suchen - mit dem Hinweis auf global:INITIALIZED sollte sich das aber leicht per SuFu rausfinden lassen.
Zitat von: Puschel74 am 02 Dezember 2017, 20:36:08
mit dem Hinweis auf global:INITIALIZED sollte sich das aber leicht per SuFu rausfinden lassen.
Eigentlich sollte dafür die Lektüre der Commandref zu notify (http://commandref.fhem.de/commandref_DE.html#notify) ausreichen. Da steht doch alles was man braucht. ::)
Und ich könnte mir auch vorstellen, dass hier ein at (http://commandref.fhem.de/commandref_DE.html#at), das einmal täglich (kurz nach Mitternacht) ausgeführt wird, sinnvoller ist, als ein notify. Es sei denn, das System wird sowieso einmal täglich neu gestartet. Aber macht denn sowas und warum?
Apropos, "wer macht denn sowas":
Zitat
fhem("include ./weihnachten.cfg");
*grusel*
Zitat von: betateilchen am 02 Dezember 2017, 17:50:02
ich schon... da sind zuviele geschweifte Klammern.
zuviele != falsch
(nur völlig überflüssig! ;))
Zitat
zuviele != falsch
(nur völlig überflüssig! ;))
Das kommt darauf an, wie man "falsch" definiert. Aus meiner Sicht ist es deshalb falsch, zu viele Klammern zu verwenden, weil man dann viel leichter die Übersicht verliert. Zudem ist es ein Zeichen dafür, dass das Verständnis für die Klammern fehlt, also liegt an der Stelle ein "Fehler" vor. Die Perspektive entscheidet hier ;)
Zitat von: marvin78 am 02 Dezember 2017, 21:09:09
Die Perspektive entscheidet hier ;)
Na ja, die Perspektive ist hier doch eigentlich eindeutig vorgegeben: Die Frage war, was ist der Fehler, dass das notify nicht ausgeführt wird. Ursächlich dafür sind nicht die (zu) vielen Klammern. Ergo sind die hier auch nicht der Fehler. 8)
Ansonsten stimme ich deiner Aussage aber uneingeschränkt zu ;)!
Zitat von: Benni am 02 Dezember 2017, 20:50:27
Eigentlich sollte dafür die Lektüre der Commandref zu notify (http://commandref.fhem.de/commandref_DE.html#notify) ausreichen. Da steht doch alles was man braucht. ::)
Tja, dazu müsste man ja die commandref mit der Browsersuche füttern.
Das Forum lässt sich aber per Forensuche - meiner Meinung nach - leichter nach "notify bei FHEM Start" durchsuchen.
Klar gibt es jede Menge Treffer die erstmal nichts mit der eigenen Frage zu tun haben aber lesen soll ja bilden 8)
Und jetzt kommt sicher der "Tipp" das man doch einfach nur den Code für das notify posten sollte da das ja viel effektiver wäre als auf irgendwelche Dokus oder Suchmöglichkeiten zu verweisen.
Zitat von: marvin78 am 02 Dezember 2017, 21:09:09
Das kommt darauf an, wie man "falsch" definiert. Aus meiner Sicht ist es deshalb falsch, zu viele Klammern zu verwenden, weil man dann viel leichter die Übersicht verliert. Zudem ist es ein Zeichen dafür, dass das Verständnis für die Klammern fehlt, also liegt an der Stelle ein "Fehler" vor. Die Perspektive entscheidet hier ;)
In erster Linie entscheidet der Inhalt zwischen den geschweiften Klammern, ob das gewünschte Ergebnis rauskommt oder nicht. In diesem Fall war das jetzt unkritisch. Aber es gibt Situationen, in denen beispielsweise einfach "1" rauskommt anstatt einer gewünschten Aktion.
Insofern sind geschweifte Klammern an Stellen, wo sie nicht zwingend erforderlich sind, immer falsch.
Ich habe mal das o.g. Notify in FHEMWEB in der Detailansicht einer notify eingegeben, und habs versucht zu speichern.
Ich bekomme eine Fehlermeldung in einem Dialog:
ZitatBareword "Advent" not allowed while "strict subs" in use at (eval 18) line 4.
und kann nicht speichern. Da im Beispiel kein \ oder ;; zu sehen ist, gehe ich davon aus, dass es auch in einer Detailansich erstellt wurde. Ich frage mich, wie man dabei diese Fehlermeldung uebersehen kann.
Advent ist der Wert den eine sub aus MyUtils erzeugt
Aber es funktioniert nun
global:INITIALIZED
{
fhem("set Xmas off");
Log 1, "Adventszeit inaktiv"
if (Advent==1)
{
Log 1, "Adventszeit aktiv"
fhem("set Xmas on");
fhem("include ./weihnachten.cfg");
}
return;
}
Es war auch ein Sonderfall, denn der Neustart war nach einem Update.
und trotz dummer Bemerkungen, da ich die 20 Adventssteckdosen nicht das ganze Jahr mitschleifen will wird die entsprechende Config nur vor Weihnachten geladen
auch wenn diese Vorgehensweise den diversen Grössen hier nicht gefällt.
Der Hinweiss mit global:INITIALIZED hätte gereicht aber manche hier haben anscheinend keine anderen Ansprechpartner, deshalb schreiben sie dann ewig lang zum Thema RTFM
Es könnte natürlich auch sein, dass dies schon bereitgehaltene Textmodule sind, denn der Wortlaut bei diversen hier ist immer der Gleiche.
Es stellt sich allerdings noch die Frage ob ich die RegEx nicht einfach kombinieren kann
global:INITIALIZED or Advent==1
{
fhem("set Xmas on");
fhem("include ./weihnachten.cfg");
return;
}
Siehe Antwort 1:
Zitat von: abc2006 am 02 Dezember 2017, 17:35:29
bei einem neustart wird das Event global:INITIALIZED erzeugt.. und afaik nicht "xmascheck" ...
Zum Thema kombinieren: Beispiele gibts in der commandref.
Wenn du ein konkretes Problem hast, melde dich einfach nochmal.
Grüße,
Stephan
Zitat von: raspklaus am 03 Dezember 2017, 16:24:37
Advent ist der Wert den eine sub aus MyUtils erzeugt
Aber es funktioniert nun
global:INITIALIZED
{
fhem("set Xmas off");
Log 1, "Adventszeit inaktiv"
if (Advent==1)
{
Log 1, "Adventszeit aktiv"
fhem("set Xmas on");
fhem("include ./weihnachten.cfg");
}
return;
}
Um lernwillige Anwender, die das Forum als Wissensquelle nutzen, nicht in die rirre zu führen: in dem gezeigten Code sind mindestens drei Fehler, die FHEM auch anmeckern würde, wenn man versuchen würde das so zu speichern. Besser den Beitrag ignorieren, da das einfach nur Mist ist, auch wenn der TE behauptet, dass das funktionieren würde.
Zitat von: raspklaus am 03 Dezember 2017, 16:24:37
Der Hinweiss mit global:INITIALIZED hätte gereicht aber manche hier haben anscheinend keine anderen Ansprechpartner, deshalb schreiben sie dann ewig lang zum Thema RTFM
Es könnte natürlich auch sein, dass dies schon bereitgehaltene Textmodule sind, denn der Wortlaut bei diversen hier ist immer der Gleiche.
Besser als Textbausteine zu posten (gute Idee!) wäre vermutlich ein Bot, der passende Links raussucht: https://www.youtube.com/watch?v=tuBUwlnxQNU
So wäre auch bei Beiträgen dieser Art ein gewisser Unterhaltungswert gewährleistet.
Zitatmindestens drei Fehler, die FHEM auch anmeckern würde
Das musste ich jetzt ausprobieren ;D
auf den code will ich gar nicht eingehen.
aaaaaaber:
Zitat von: raspklaus am 03 Dezember 2017, 16:24:37
da ich die 20 Adventssteckdosen nicht das ganze Jahr mitschleifen will wird die entsprechende Config nur vor Weihnachten geladen
warum? was ist an den steckdosen so schlimm?
Zitat von: dev0 am 04 Dezember 2017, 12:06:51
Um lernwillige Anwender, die das Forum als Wissensquelle nutzen, nicht in die rirre zu führen: in dem gezeigten Code sind mindestens drei Fehler, die FHEM auch anmeckern würde, wenn man versuchen würde das so zu speichern. Besser den Beitrag ignorieren, da das einfach nur Mist ist, auch wenn der TE behauptet, dass das funktionieren würde.
Das mit den Fehlern ist richtig
allerdings nur wenn man nicht die entsprechende myUtils und die passenden Dummys hat :P
Zitat von: raspklaus am 03 Dezember 2017, 16:24:37
Es stellt sich allerdings noch die Frage ob ich die RegEx nicht einfach kombinieren kann
Ganz schön frech! Erst die Helfer beschimpfen und dann nach mehr Hilfe fragen! >:(
Und zu deiner (Zusatz-)Frage hier nochmal der Verweis auf die Commandref zu notify (http://commandref.fhem.de/commandref_DE.html#notify), da du das entweder noch nicht gelesen hast und/oder einfach noch nicht verstanden hast
Zitat von: raspklaus am 04 Dezember 2017, 15:30:38
allerdings nur wenn man nicht die entsprechende myUtils und die passenden Dummys hat :P
Und das war jetzt sogar unverschämt (v.a. der Smiley)!
*und weg*
Zitat von: raspklaus am 04 Dezember 2017, 15:30:38
allerdings nur wenn man nicht die entsprechende myUtils und die passenden Dummys hat
Aus reinem wissenschaftlichem Interesse würde mich interessieren, welche Dummys das sind und was in der myUtils steht ...
Grüße,
Stephan
wie steht es weiter oben mindestens 20mal:
lesen!!!!!!!!!!!!!!!!!!!!!!!!!
Hier steht es
https://forum.fhem.de/index.php/topic,42209.0.html (https://forum.fhem.de/index.php/topic,42209.0.html)
Der Threat stammt von einem Mitglied dieses Forums mit dem man hervorragend zusammenarbeiten konnte :)
Danke, wieder was gelernt :-)
Grüße,
Stephan