FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: rallye am 23 Januar 2018, 11:17:18

Titel: Bedingungen in AT
Beitrag von: rallye am 23 Januar 2018, 11:17:18
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
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
Titel: Antw:Bedingungen in AT
Beitrag von: nils_ am 23 Januar 2018, 13:57:26
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....)
Titel: Antw:Bedingungen in AT
Beitrag 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)
Titel: Antw:Bedingungen in AT
Beitrag von: Otto123 am 23 Januar 2018, 14:23:09
Hi,

was ergibt denn bei Dir {$wday} in der FHEM Kommandozeile?
und {$wday == 2} ?

Gruß Otto
Titel: Antw:Bedingungen in AT
Beitrag von: automatisierer am 23 Januar 2018, 14:40:43
Zitat von: Otto123 am 23 Januar 2018, 14:23:09
Hi,

was ergibt denn bei Dir {$wday} in der FHEM Kommandozeile?
Dienstag...  :-X
Titel: Antw:Bedingungen in AT
Beitrag von: rallye am 23 Januar 2018, 14:47:32
{$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
Titel: Antw:Bedingungen in AT
Beitrag von: rallye am 23 Januar 2018, 14:58:18
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



notify
Internals:
   .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 Monitor
2018-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
Titel: Antw:Bedingungen in AT
Beitrag von: rallye am 23 Januar 2018, 15:01:21
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)
Titel: Antw:Bedingungen in AT
Beitrag von: kumue am 23 Januar 2018, 15:08:58
wozu das notify nfy_test ?
Titel: Antw:Bedingungen in AT
Beitrag 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
Titel: Antw:Bedingungen in AT
Beitrag von: kumue am 23 Januar 2018, 15:13:17
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...
Titel: Antw:Bedingungen in AT
Beitrag 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
...
Titel: Antw:Bedingungen in AT
Beitrag von: rallye am 23 Januar 2018, 15:28:08
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
Titel: Antw:Bedingungen in AT
Beitrag von: rallye am 23 Januar 2018, 15:30:52
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
...
Titel: Antw:Bedingungen in AT
Beitrag 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
Titel: Antw:Bedingungen in AT
Beitrag von: kumue am 23 Januar 2018, 15:41:06
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
Titel: Antw:Bedingungen in AT
Beitrag 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...
Titel: Antw:Bedingungen in AT
Beitrag von: rallye am 23 Januar 2018, 15:47:47
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
Titel: Antw:Bedingungen in AT
Beitrag von: rallye am 23 Januar 2018, 15:55:38
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...
Titel: Antw:Bedingungen in AT
Beitrag von: marvin78 am 23 Januar 2018, 15:59:31
Es gibt diverse Homemode, Homestate etc. Module für sowas. Ist natürlich ggf. mit Kanonen auf Spatzen geschossen.
Titel: Antw:Bedingungen in AT
Beitrag von: Beta-User am 23 Januar 2018, 16:07:44
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.
Titel: Antw:Bedingungen in AT
Beitrag von: nils_ am 23 Januar 2018, 16:24:13
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
Titel: Antw:Bedingungen in AT
Beitrag von: rallye 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
Titel: Antw:Bedingungen in AT
Beitrag von: kumue am 23 Januar 2018, 17:14:07
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...
Titel: Antw:Bedingungen in AT
Beitrag von: Beta-User am 23 Januar 2018, 17:43:14
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
Titel: Antw:Bedingungen in AT
Beitrag von: rallye am 23 Januar 2018, 18:40:26
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...