Morgendliche Routine automatisieren - Eure Meinung ?

Begonnen von visionsurfer, 23 Oktober 2016, 20:06:48

Vorheriges Thema - Nächstes Thema

l2r

#15
ich steuere meine ganzen Szenen am Morgen über RESIDENTS bzw. ROOMMATE mit dem zugehörigem Wecker. Ist vllt. am Anfang etwas komplex, aber wenn man sich da einmal reingearbeitet hat, dann läuft das 1a und ist vor allem gut zu erweitern.

http://www.fhemwiki.de/wiki/Weckautomation


define rolladen_morgens DOIF ([wetterstation_helligkeit] > 5 and [rolladen:value]>0 ) (set rolladen value 0)
attr do always


würdest du das do always weg lassen, dann wird das doif nur ein einziges mal ausgeführt


Gruß Michael
Wissen ist Macht.
Ich weiß nix.
Macht nix.

visionsurfer

Hi,

ok. Muss ich mir mal anschauen. Was besser ist.

Aber bei deinem Beispiel mit dem Code, ist jetzt hinten das Value falsch, oder ? Value 0 und Value 0 passt dann nicht ? :) Morgens soll der Rolladen ja aufgeben und nicht schließen.

Ah so und dann muss immer bei solchen Definitionen ein attr da always dran ? Ich dachte der hört halt im Hintergrund immer mit und wenn die Werte wieder passen, dann führt es es automatisch aus. Täglich.

Weil im Badezimmer hab ich z.B. ein DOIF gebaut, was eine Lampe schaltet, aber nur wenn Helligkeit unter einem Wert ist und Bewegungsmelder eine Bewegung erkennt. Da hab ich auch kein attr do always drin. Sondern das läuft einfach so und so wie ich mir das vorstelle.

Grüße,
Visionsurfer

Damian

Zitat von: l2r am 25 Oktober 2016, 08:47:07

define rolladen_morgens DOIF ([wetterstation_helligkeit] > 5 and [rolladen:value]>0 ) (set rolladen value 0)
attr do always


würdest du das do always weg lassen, dann wird das doif nur ein einziges mal ausgeführt


Gruß Michael

Das stimmt nicht. do always ist hier nicht sinnvoll, weil Helligkeit zyklisch sendet.

Ohne do always, wird erst wieder der Befehl ausgeführt, wenn die Bedingung zwischendurch nicht wahr war, dann gibt es hier einen Zustandswechsel zu cmd_2 und das Modul ist "scharfgestellt" für eine erneute Ausführung.
 

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

visionsurfer

Hi,

ok. Gut das wir noch mal drüber gesprochen haben. Hatte mich wieder ganz durcheinander gebracht :) Ich hätte es nämlich ohne gemacht.
Aber Value 0 und Value 0 stimmt trotzdem nicht, oder ?

Grüße,
Visionsurfer

l2r

Zitat von: Damian am 25 Oktober 2016, 09:39:14
Das stimmt nicht. do always ist hier nicht sinnvoll, weil Helligkeit zyklisch sendet.

Ohne do always, wird erst wieder der Befehl ausgeführt, wenn die Bedingung zwischendurch nicht wahr war, dann gibt es hier einen Zustandswechsel zu cmd_2 und das Modul ist "scharfgestellt" für eine erneute Ausführung.
 

Gruß

Damian

cmd_2 gibt's doch gar nicht, da ich das doelse weggelassen habe?! Deshalb habe ich ja value>0 eingebaut, damit der nur dann set value 0 ausführt, wenn die Rolladen unten sind (also nicht value 0 haben).
oder ich bin grade nicht auf dem aktuellen Stand was DOIF angeht...
Wissen ist Macht.
Ich weiß nix.
Macht nix.

visionsurfer

@l2r
ok. Stimmt. Jetzt hab ich es auch verstanden warum 0 und 0 da steht. 0 ist ja = offen, 100 = geschlossen.

ok. Also braucht man dann doch dein attr ?

Grüße,
Visionsurfer

l2r

der Meinung bin/war ich zumindest.

Da Damian aber den Entwickler von DOIF ist, will ich mich da nicht zu weit aus dem Fenster lehnen... ;)
Wissen ist Macht.
Ich weiß nix.
Macht nix.

visionsurfer

Hi,

oh ja stimmt. Sehe ich auch gerade.

Na ich würde sagen, ich probiere es heute Abend mal aus. Morgen früh werden wir es sehen.

Bzw. irgendwo hatte ich gelesen das man dann das Ereigniss ja auch irgendwie simulieren kann. Also so tun als ob schon Helligkeit einen bestimmten Wert erreicht hat ?
Muss ich noch mal suchen. Dann kann ich es auch schon vorher testen. Wobei live ist immer besser :)

Grüße,
Visionsurfer

CBSnake

Hi,

zum simulieren, erstelle nen dummy, statt deinem helligkeitssensor, den dummy ins doif, und den dummy auf die wunschwerte setzen. Ich hab z.b. nen dummy_test und ein doif _ test um neue Sachen zu probieren ohne das gleich was ausgelöst wird, was die Familie iritiert ;-)
Grüße
Achim

Gesendet von meinem SM-P605 mit Tapatalk

FHEM auf Debian 10, HM-Wlan, JeeLink-Wlan, Wlanduino, ConBee, TP-Link Steckdose, GHoma Steckdosen, Shelly Steckdosen

Damian

Zitat von: l2r am 25 Oktober 2016, 10:20:27
cmd_2 gibt's doch gar nicht, da ich das doelse weggelassen habe?! Deshalb habe ich ja value>0 eingebaut, damit der nur dann set value 0 ausführt, wenn die Rolladen unten sind (also nicht value 0 haben).
oder ich bin grade nicht auf dem aktuellen Stand was DOIF angeht...

ohne do always gibt es einen imaginären DOELSE-Fall. D. h.

DOIF (...)(set ...) ist das Gleiche wie DOIF (...)(set ...) DOELSE

Wenn die Bedingung nicht wahr ist, gibt es den cmd_2-Zustand, ob man möchte oder nicht. Das ist auch wichtig damit ein Zustandswechsel hervorgerufen wird und die ganzen Beispiele in der Commandref ohne do always auch sinnvoll funktionieren.

Wenn do always gesetzt wird, gibt des dagegen den cmd_2-Zustand nicht, wenn kein DOELSE angegeben ist.

Das ist auch so in der Commandref beschrieben und hat eine bestimmte Vorgeschichte, die aber hier nicht wichtig ist.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

visionsurfer

Hi,

ok. Danke für deine Antwort. Dann lasse ich das Always erst mal weg. Bin gerade heim gekommen und werde nun mal weiter an den Fall gehen :)

Danke schon mal an alle für die tolle Unterstützung.

Grüße,
Visionsurfer

visionsurfer

Hi,

kann es sein das dieser Code hier falsch war ?

define rolladen_morgens DOIF ([wetterstation_helligkeit] > 5 and [rolladen:value]>0 ) (set rolladen value 0)

Ich hab das zuerst so gemacht:

define rolladen_morgens DOIF ([wetterstation_helligkeit] > 5 and [rollo_lounge:value]>0 ) (set rollo_lounge value 0 g1)

Das funktionierte nicht. Irgendwas war falsch mit [rollo_lounge:value]

Ich hab es nun so gemacht:

define rolladen_morgens DOIF ([wetterstation_helligkeit] > 5 and [rollo_lounge]>0 ) (set rollo_lounge value 0 g1)

Dann hab ich mir einen Dummy gemacht und anstatt wetterstation_helligkeit den Dummy eingesetzt. Den Dummy hab ich dann einfach mal auf 7 gesetzt und schon ist mein Rolladen hochgefahren. Damit scheint es also zu klappen.

Grüße,
Visionsurfer

CoolTux

Dann gibt es das Reading value für das Device rollo_lounge wohl nicht.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

visionsurfer

Jungs tut mir leid, ich muss euch noch mal nerven.
Also für mein Rolladen hab ich das ja nun wie oben beschrieben hinbekommen. Scheint auch zu klappen.

@CoolTux:
Doch schau mal das Reading value gibt es:


Internals:
   DEF        2/3/4:dpt5.001 2/1/4:dpt1.008 2/2/4:dpt1.008 2/3/104:dpt5.001
   DEVNAME    rollo_lounge
   IODev      KNX
   KNX_MSGCNT 8
   KNX_RAWMSG C1107w236800
   KNX_TIME   2016-10-25 20:01:48
   LASTInputDev KNX
   MSGCNT     8
   NAME       rollo_lounge
   NR         340
   NTFY_ORDER 50-rollo_lounge
   STATE      0 %
   TYPE       KNX
   Gaddr:
     1          2/3/4
     2          2/1/4
     3          2/2/4
     4          2/3/104
   Gcode:
     1          2304
     2          2104
     3          2204
     4          2368
   Model:
     1          dpt5.001
     2          dpt1.008
     3          dpt1.008
     4          dpt5.001
   Readings:
     2016-10-25 19:07:05   getG2           up
     2016-10-25 19:07:05   getG3           up
     2016-10-25 20:01:48   getG4           0 %
     2016-10-25 20:01:48   last-sender     1/1/7
     2016-10-25 20:01:26   setG1           0 %
     2016-10-25 20:00:32   setG2           down
     2016-10-25 19:46:41   setG3           down
     2016-10-25 19:47:56   setG4           50 %
     2016-10-25 20:01:48   state           0 %
     2016-10-25 19:36:35   value           0
   Readingsname:
Attributes:
   IODev      KNX
   eventMap   /value 100% g2:Ab/on g3:Stop/value 0% g2:Auf/value 30% g1:Pos1/value 50% g1:Pos2
   room       Lounge
   webCmd     Ab:Stop:Auf:Pos1:Pos2


Nun wollte ich das 1:1 auf meine Raffstores kopieren.
Ich habe vorher eine Gruppe meiner 3 Fenster mit den Raffstores gebildet.

Das ganze sieht so aus:


Internals:
   ATTR       room
   DEF        room rollo_kueche rollo_essen_alle rollo_tv
   NAME       raffstores_alle
   NR         417
   NTFY_ORDER 50-raffstores_alle
   STATE      Ab
   TYPE       structure
   Content:
     rollo_essen_alle undefined
     rollo_kueche 100 %
     rollo_tv   100 %
   Readings:
     2016-10-25 20:23:28   LastDevice      rollo_essen_alle
     2016-10-25 20:23:28   LastDevice_Abs  rollo_essen_links
     2016-10-25 20:26:03   state           value 100% g2
Attributes:
   eventMap   /value 100% g2:Ab/on g3:Stop/value 0% g2:Auf/value 25% g4:Pos1/value 50% g4:Pos2/value 75% g4:Pos3
   room       Gruppen
   webCmd     Ab:Stop:Auf:Pos1:Pos2:Pos3


Mich wundert schon mal, warum es hier kein Reading Value gibt. Es gibt nur das Reading State. Alle Angaben sind eigentlich so eingetragen wie auch bei meinen Rolladen. Total komisch.

Das Problem ist das bei dem Reading "state" mal 100% steht und mal "value 100% g2". Wenn nur sauber 100% drin steht, dann funktioniert es hiermit sofort:

define raffstores_morgens DOIF ([wetterstation_helligkeit] > 10 and [raffstores_alle]>0 ) (set raffstores_alle value 25 g4)

So sieht mein List für das DOIF aus:


Internals:
   CFGFN
   DEF        ([dummy_test] > 10 and [raffstores_alle]>0 ) (set raffstores_alle value 25 g4)
   NAME       raffstores_morgens
   NR         1619
   NTFY_ORDER 50-raffstores_morgens
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2016-10-25 20:43:59   Device          raffstores_alle
     2016-10-25 20:41:09   cmd             2
     2016-10-25 20:41:09   cmd_event       dummy_test
     2016-10-25 20:41:09   cmd_nr          2
     2016-10-25 20:43:21   e_dummy_test_STATE 30
     2016-10-25 20:43:59   e_raffstores_alle_STATE Ab
     2016-10-25 20:41:09   state           cmd_2
   Condition:
     0          InternalDoIf($hash,'dummy_test','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) > 10 and InternalDoIf($hash,'raffstores_alle','STATE','','',AttrVal($hash->{NAME},'notexist',undef))>0
   Devices:
     0           dummy_test raffstores_alle
     all         dummy_test raffstores_alle
   Do:
     0:
       0          set raffstores_alle value 25 g4
     1:
   Helper:
     event      Ab
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   raffstores_alle
     timerevent Ab
     triggerDev raffstores_alle
     timerevents:
       Ab
     timereventsState:
       state: value 100% g2
     triggerEvents:
       Ab
     triggerEventsState:
       state: value 100% g2
   Internals:
     0           dummy_test:STATE raffstores_alle:STATE
     all         dummy_test:STATE raffstores_alle:STATE
   Itimer:
   Readings:
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   room       Gruppen


Sorry das ich euch hier so zuspamme, aber ich komme leider nicht weiter. Kann mir jemand auf die Sprünge helfen ?
Wo ist da der Wurm drin.

Grüße,
Visionsurfer



visionsurfer

Moin,

also mein Rolladen hat heute morgen wunderbar automatisch geöffnet, als es draußen hell wurde. Läuft perfekt wie gewünscht.

Nur die Raffstores bekomme ich nicht hin, weil die irgendwie komische Werte zurück geben, wo ich nicht weiß wie ich das abbilden kann. Außerdem glaube ich festgestellt zu haben, das die mal "ab", mal "value 100% g2" und mal "100%" als state schreiben.

Wenn ich z.B. alle Raffstores runterfahre und dann danach noch mal auf "stop" drücke, steht einfach nur "stop" da. Ich hatte gehofft das dann noch kurzer Zeit der Wert wieder auf 100% springt. Tut es aber nicht.
Man soll es ja mit stateRegex eventuell beeinflussen können. Aber das attr hab ich nicht verstanden, obwohl ich mir die Wiki schon 3 mal durchgelesen habe.

Keine Ahnung wie man dann dort auch "stop" wieder 100% machen kann.

Grüße,
Visionsurfer