Ich bin am Verzweifeln ! Eigentlich wollte ich meine Lampen abhängig von Wochenende oder Wochentag schalten, war mit $we aber sehr wenig erfolgreich. Nun habe ich mir eine "Testumgebung" erzeugt mit folgender Definition
define at_test at +*00:00:10 { if ($wday == 4) { fhem ("set test_lampe on");; } }
dieses at_test schaltet den dummy test_lampe auf on wenn die Bedingung erfüllt ist. Doch egal was ich in die Bedingung schreibe - ich habe es versucht mit
- ($wday == 4)
- ($wday == 3)
- ($we)
- (!($we))
- ((!$we))
die Bedingung ist immer "true" und die Lampe wird eingeschaltet. In meiner Verzweiflung habe ich mir den Wert von $we ins Log geschrieben - der ist heute Dienstag korrekter Weise "0" (ohne Hochkomma). Mir ist absolut unklar was ich falsch mache. Muß ich fhem irgend etwas "sagen"/"enablen"/"laden" :-\ ?
Danke
Zitat von: statler am 23 Januar 2018, 11:17:18
Muß ich fhem irgend etwas "sagen"/"enablen"/"laden" :-\ ?
eigentlich nicht....
poste doch mal nen logauszug / event-monitor dazu
und evtl. ein list von den beiden devices (auch wenn die überschaubar sein sollten....)
nimm doch das "große IF".... du bleibst somit auf der FHEM-Ebene
define at_test at +*00:00:10 IF ($wday == 4) (set test_lampe on)
Hi,
was ergibt denn bei Dir {$wday} in der FHEM Kommandozeile?
und {$wday == 2} ?
Gruß Otto
Zitat von: Otto123 am 23 Januar 2018, 14:23:09
Hi,
was ergibt denn bei Dir {$wday} in der FHEM Kommandozeile?
Dienstag... :-X
{$wday} in der Komandozeile ergibt 2
{$wday == 2} in der Komandozeile ergibt 1
Und {$we} in der Kommandozeile ergibt 0. Also alles wie es sein sollte.
Zitat von: automatisierer am 23 Januar 2018, 14:40:43
Dienstag... :-X
Bittesehr, hier die lists:
AT:Internals:
COMMAND {
if ($wday == 4) {
fhem ("set test_lampe on");;
}
}
DEF +*01:00:10 {
if ($wday == 4) {
fhem ("set test_lampe on");;
}
}
NAME at_test
NR 106
NTM 15:20:34
PERIODIC yes
RELATIVE yes
REP -1
STATE inactive
TIMESPEC 01:00:10
TRIGGERTIME 1516717234.72017
TRIGGERTIME_FMT 2018-01-23 15:20:34
TYPE at
READINGS:
2018-01-23 14:20:24 state inactive
Attributes:
room test
verbose 5
notifyInternals:
.COMMAND set test_lampe on
DEF (at_tes.) set test_lampe on
NAME nfy_test
NOTIFYDEV at_tes.
NR 107
NTFY_ORDER 50-nfy_test
REGEXP (at_tes.)
STATE 2018-01-23 11:06:06
TYPE notify
READINGS:
2018-01-23 10:38:51 state active
Attributes:
room test
dummy test_lampe:Internals:
NAME test_lampe
NR 108
STATE off
TYPE dummy
READINGS:
2018-01-23 11:18:32 state off
Attributes:
room test
webCmd on:off
log:2018.01.23 12:20:04 5: redefine at command at_test as +*01:00:10 {
if ($wday == 4) {
fhem ("set test_lampe on");;
}
}
2018.01.23 13:20:14 5: redefine at command at_test as +*01:00:10 {
if ($wday == 4) {
fhem ("set test_lampe on");;
}
}
2018.01.23 14:20:24 5: redefine at command at_test as +*01:00:10 {
if ($wday == 4) {
fhem ("set test_lampe on");;
}
}
habe das Intervall wieder auf 10" gesetzt
Event Monitor2018-01-23 14:56:09 dummy test_lampe on
2018-01-23 14:56:09 at at_test Next: 14:56:19
2018-01-23 14:56:19 dummy test_lampe on
2018-01-23 14:56:19 at at_test Next: 14:56:29
2018-01-23 14:56:29 dummy test_lampe on
2018-01-23 14:56:29 at at_test Next: 14:56:39
2018-01-23 14:56:39 dummy test_lampe on
2018-01-23 14:56:39 at at_test Next: 14:56:49
Zitat von: nils_ am 23 Januar 2018, 13:57:26
eigentlich nicht....
poste doch mal nen logauszug / event-monitor dazu
und evtl. ein list von den beiden devices (auch wenn die überschaubar sein sollten....)
LG Josef
bringt leider das selbe Ergebnis... :-(
Zitat von: kumue am 23 Januar 2018, 14:10:42
nimm doch das "große IF".... du bleibst somit auf der FHEM-Ebene
define at_test at +*00:00:10 IF ($wday == 4) (set test_lampe on)
wozu das notify nfy_test ?
Das notify nfy_test schaltet doch immer :-\
Da ist völlig egal was Du im at machst. -> works as expected
@automatisierer -> Dein FHEM ist verwirrt ;D
Zitat von: statler am 23 Januar 2018, 15:01:21
bringt leider das selbe Ergebnis... :-(
define at_test at +*00:00:10 IF ($wday == 2) (set test_lampe on)
schaltet dir aller 10min dienstags die lampe (dummy) an... wenn du auf nfy_test verzichtest...
define at_test at +*00:00:10 { if ($wday == 4) { fhem ("set test_lampe on");; } }
das geht auch, aber erst Übermorgen...
alternativ ginge dieses schon heute:
define at_test at +*00:00:10 { if ($wday == (4-2)) { fhem ("set test_lampe on");; } }
Liegt daran, dass 4 != Dienstag - oder anders geasgt 2 == Dienstag
Liegt daran, dass bei Perl die Woche am Sonntag beginnt und Perl (wie andere Programmiersprachen meisst auch) bei 0 zu zählen beginnt.
Sonntag == 0
Montag == 1
Dienstag == 2
...
Ja, das ist richtig. Allerdings: das notify wird in der derzeitigen Form vom "at" gar nicht aufgerufen. Am Ende des Tages möchte ich im "at" ein "trigger notify" abhängig vom status Wochentag/Wochenende machen. Im vorliegenden Beispiel ist das "notify-Listing" nicht relevant (auch an kumue).
Zitat von: Otto123 am 23 Januar 2018, 15:09:57
Das notify nfy_test schaltet doch immer :-\
Da ist völlig egal was Du im at machst. -> works as expected
@automatisierer -> Dein FHEM ist verwirrt ;D
Danke @automatisierer. das ist mir klar. Ich wollte eine Bedingung die "false" ist erzeugen (also eben nicht Dienstag), damit das licht nicht angeht. Doch leider schaltet es an ...
Ich fahr jetz mal mein system neu hoch - vielleicht hat's wo einen Knopf ??
Zitat von: automatisierer am 23 Januar 2018, 15:25:05
define at_test at +*00:00:10 { if ($wday == 4) { fhem ("set test_lampe on");; } }
das geht auch, aber erst Übermorgen...
alternativ ginge dieses schon heute:
define at_test at +*00:00:10 { if ($wday == (4-2)) { fhem ("set test_lampe on");; } }
Liegt daran, dass 4 != Dienstag - oder anders geasgt 2 == Dienstag
Liegt daran, dass bei Perl die Woche am Sonntag beginnt und Perl (wie andere Programmiersprachen meisst auch) bei 0 zu zählen beginnt.
Sonntag == 0
Montag == 1
Dienstag == 2
...
doch das wird "aufgerufen" -> (at_tes.) wird bei jedem Event mit at-tes. getriggert, also auch bei at-test ;D ;D ;D
Aber Du musst mir das nicht glauben, dann schreib in das notify doch was anderes rein und nicht genau den Befehl für Dienstag ;)
Noch besser wäre im notify das regExp .* - dann ist es immer HELL ;D ;D ;D
Zitat von: Otto123 am 23 Januar 2018, 15:31:04
Noch besser wäre im notify das regExp .* - dann ist es immer HELL ;D ;D ;D
die lampe ist doch nur ein dummy.... ;) ;D
... auch dummies können schon mal leuchten...
so, jetzt bin ich verwirrt...
ok, habe verstanden - glaub ich...
macht es sinn, ein notify von einem at triggern zu lassen, um einen Befehl auszuführen?
... jetzt bin mir doch nicht mehr sicher ob ich das verstanden hab...
Also, dein at erzeugt Events... und diese triggern das notify... da du die Regex im Notify etwas ungünstig gewählt hast...
Doch, ich glaube es dir ! Hast ja auch viel mehr Sterne (und damit Erfahrung) als ich. Wie ich den Krempel (at_tes.) da herausbringe bzw. überhaupt hineingebracht habe ist mir absolut unklar. Ich hab's komplett gelöscht und das "große IF" verwendet - kaum macht man's richtig funktioniert es auch schon !!!
Danke für Eure Zeit !!!
Josef
Zitat von: Otto123 am 23 Januar 2018, 15:31:04
doch das wird "aufgerufen" -> (at_tes.) wird bei jedem Event mit at-tes. getriggert, also auch bei at-test ;D ;D ;D
Aber Du musst mir das nicht glauben, dann schreib in das notify doch was anderes rein und nicht genau den Befehl für Dienstag ;)
Noch besser wäre im notify das regExp .* - dann ist es immer HELL ;D ;D ;D
Danke auch für deine Mithilfe. Nun funktioniert es ja. Um das Geheimis hinter diesem Konstrukt zu lüften:
in der Endfassung soll im "notify" eine Routine stehen, die die Stehlampen in der Früh einschaltet und zu Sonnenaufgang abschaltet (wenn der Sonnenaufgang nicht schon vor dem Einschaltzeitpunkt gewesen ist). Ein "at" um 5:00 früh überprüft ob Wochentag ist und triggert das notify. Am Wochenende wird das notify nicht getriggert (also die Lampen nicht eingeschaltet). Ein zweites "at" um 7:30 prüft ob Wochenende ist und triggert das notify am Wochenende, ansonst nicht ...
Das Ganze soll dann weiter ausgebaut werden für Feiertage, Urlaub und dgl...
Solltet ihr eine "hübscher" Lösung für mein Problem haben gerne (evtl in einem anderen Fred)
Ansonst D A N K E für eure Mithilfe bei meinem Grundproblem !
LG Josef
Zitat von: automatisierer am 23 Januar 2018, 15:42:47
... auch dummies können schon mal leuchten...
so, jetzt bin ich verwirrt...
ok, habe verstanden - glaub ich...
macht es sinn, ein notify von einem at triggern zu lassen, um einen Befehl auszuführen?
... jetzt bin mir doch nicht mehr sicher ob ich das verstanden hab...
Also, dein at erzeugt Events... und diese triggern das notify... da du die Regex im Notify etwas ungünstig gewählt hast...
Es gibt diverse Homemode, Homestate etc. Module für sowas. Ist natürlich ggf. mit Kanonen auf Spatzen geschossen.
Für meine Ohren klingt das etwas nach weekdayTimer und ggf. holiday2we, wenn man nicht gleich "das volle Programm" der Anwesenheitsmodule haben/einsetzen will.
Aber für was das notify sein soll, erschließt sich mir nicht so richtig. Das notify scheint ja nichts eigenes zu tun zu haben und bis dato ist doch alles innerhalb der jeweiligen at's abarbeitbar. Evtl. kannst du auch über das/die at/weekdayTimer eine myUtils-Routine aufrufen, wenn es etwas komplizierter sein soll.
Zitat von: statler am 23 Januar 2018, 15:55:38
Das Ganze soll dann weiter ausgebaut werden für Feiertage, Urlaub und dgl...
Solltet ihr eine "hübscher" Lösung für mein Problem haben gerne (evtl in einem anderen Fred)
ich verlinke nochmal die commandref ;)
https://fhem.de/commandref_DE.html#holiday
ansonsten haben dir die anderen ja auch schon ein ppar hinweise gegeben....
ich denke eine myUtils Sub ist das was du eigentlich brauchst bzw. mit deinem notify-trigger-aus-einem-at nachzubauen versucht hattest :D
Danke, genau daran (holiday2we) habe ich gedacht. Und darüber hinaus für die Heizung an soetwas: Antw:automatisiertes Definieren und Einbinden von Feiertagen/Schulferien als ical (//http://Antw:automatisiertes%20Definieren%20und%20Einbinden%20von%20Feiertagen/Schulferien%20als%20ical).
Auch die 99_myUtils stehen auf der Agenda, doch mit all den Dingen bin ich noch nicht soweit - habe erst vor Kurzem mit FHEM angefangen und bin noch am Lernen, Lesen, Probieren, Evaluieren und Ideen sammeln.
Danke für alle Hinweise
Josef
Zitat von: statler am 23 Januar 2018, 17:12:30
Danke, genau daran (holiday2we) habe ich gedacht. Und darüber hinaus für die Heizung an soetwas: Antw:automatisiertes Definieren und Einbinden von Feiertagen/Schulferien als ical (//http://Antw:automatisiertes%20Definieren%20und%20Einbinden%20von%20Feiertagen/Schulferien%20als%20ical).
Auch die 99_myUtils stehen auf der Agenda, doch mit all den Dingen bin ich noch nicht soweit - habe erst vor Kurzem mit FHEM angefangen und bin noch am Lernen, Lesen, Probieren, Evaluieren und Ideen sammeln.
Danke für alle Hinweise
Josef
...der Link funktioniert nicht...
Zitat von: statler am 23 Januar 2018, 17:12:30
Danke, genau daran (holiday2we) habe ich gedacht. Und darüber hinaus für die Heizung an soetwas: Antw:automatisiertes Definieren und Einbinden von Feiertagen/Schulferien als ical (//http://Antw:automatisiertes%20Definieren%20und%20Einbinden%20von%20Feiertagen/Schulferien%20als%20ical).
Auch die 99_myUtils stehen auf der Agenda, doch mit all den Dingen bin ich noch nicht soweit - habe erst vor Kurzem mit FHEM angefangen und bin noch am Lernen, Lesen, Probieren, Evaluieren und Ideen sammeln.
Danke für alle Hinweise
Josef
Dann arbeite am besten mal das Einsteiger-pdf durch, da ist ziemlich viel drin, vor allem auch noch ein paar gute links. Weglassen würde ich nur das direkte Editieren der cfg (so du nicht gleich configDB einsetzen willst) und Floorplan (es sei denn, du willst damit vielleicht etwas rum-experimentieren).
myUtils brauchst du vermutlich noch eine ganze Zeit nicht, aber etwas perl kann m.E. nicht schaden - ebenso wie der stete Blick in die commandref.
Und btw: "Ferien" ist einer von drei Dummy's, die ich im Einsatz habe, alles andere, was an Info irgendwo zwischengespeichert werden soll, landet in der Regel in userattr. Dummy's dürfen bei mir nur "globale" Variablen zwischenspeichern (und ggf. mehrere logisch ähnliche in einem dummy). Ist sicher eine Philosophiefrage, aber such' und lies' bei Interesse "Wozu so viele Dummies?"...
Gruß, Beta-User
Hmmmm.... dann ohne tag: https://forum.fhem.de/index.php/topic,36244.msg299631.html#msg299631 Sorry
Zitat von: kumue am 23 Januar 2018, 17:14:07
...der Link funktioniert nicht...