Autor Thema: DOIF: neue Zeit-Features  (Gelesen 37185 mal)

Offline andies

  • Tester
  • Hero Member
  • ****
  • Beiträge: 2721
Antw:DOIF: neue Zeit-Features
« Antwort #120 am: 18 Dezember 2017, 14:13:54 »
Oh Mist, das hatte ich doch gerade gelesen mit dem do always und dem Streit darüber...

@damian: Könnte man das nicht immer setzen? Oder spricht da etwas dagegen?
FHEM 6.0 auf RaspPi3 (Raspbian:  4.19.97-v7+ ); Perl: v5.28.1
SIGNALduino (433 MHz) und HM-UART (868 MHz)
wenige Brennenstuhl-IT, Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Offline kumue

  • Hero Member
  • *****
  • Beiträge: 1006
Antw:DOIF: neue Zeit-Features
« Antwort #121 am: 18 Dezember 2017, 14:25:34 »
Oh Mist, das hatte ich doch gerade gelesen mit dem do always und dem Streit darüber...

@damian: Könnte man das nicht immer setzen? Oder spricht da etwas dagegen?

wenn all deine DOIFs z.B. mit DO_ anfangen, könntest du auf global defined triggern...
define no1 notify global:DEFINED.DO_.* attr $EVTPART1 do always
Gefällt mir Gefällt mir x 1 Hilfreich Hilfreich x 1 Liste anzeigen

Offline Wasserwerk33

  • Full Member
  • ***
  • Beiträge: 377
Antw:DOIF: neue Zeit-Features
« Antwort #122 am: 22 Mai 2020, 16:48:07 »
Hallo Leute habe mir die Schreibweise von der ersten Seite genommen. Aber glaube nicht das ich es so richtig geschrieben habe. Den er sagt ich habe auch einen Fehler. Denke auch in den Klammern. Aber welche sind den falsch oder ejar zu viel.

([?20:00-03:30]
and
[avr:power] eq "off")
(set Erdgeschoss_Licht off )
 DOELSEIF
([([22:30]+int(rand(1800))) |Mo Di Mi Do So]) or ([([22:20]+int(rand(7200)))] |Fr Sa])
and
[Eltern] eq "absend"
and
[Babysitter] eq "weg")
(set Erdgeschoss_Licht off )

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 7253
Antw:DOIF: neue Zeit-Features
« Antwort #123 am: 22 Mai 2020, 18:03:50 »
([?20:00-03:30]
and
[avr:power] eq "off")
(set Erdgeschoss_Licht off )
DOELSEIF
(([([22:30]+int(rand(1800))) |Mo Di Mi Do So] or [([22:20]+int(rand(7200)))|Fr Sa])
and
[Eltern] eq "absend"
and
[Babysitter] eq "weg")
(set Erdgeschoss_Licht off )
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-Web, THRESHOLD, FHEM-Befehl: IF

Offline Pfriemler

  • Hero Member
  • *****
  • Beiträge: 3552
  • geht nich gips nich
Antw:DOIF: neue Zeit-Features
« Antwort #124 am: 22 Mai 2020, 19:30:08 »
Je nachdem woher der Wert für [Eltern] kommt, könnte es sein, dass sie nie "absend" sind...  ;)
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

Offline Wasserwerk33

  • Full Member
  • ***
  • Beiträge: 377
Antw:DOIF: neue Zeit-Features
« Antwort #125 am: 22 Mai 2020, 23:55:18 »
@Damian
Danke für den Code werde ihn mal ausprobieren.

@Pfriemler

Sind unsere Handys die über die Fritzbox laufen und in einer Strucrure untergebracht sind. Das hat eigentlich immer funktoniert. Wieso meinst du den das das nicht funkoniert?

Offline Pfriemler

  • Hero Member
  • *****
  • Beiträge: 3552
  • geht nich gips nich
Antw:DOIF: neue Zeit-Features
« Antwort #126 am: 23 Mai 2020, 08:13:35 »
Structures bekommen die Werte in der Regel anderweitig zugeliefert. Und abwesende Geräte sind i.d.R. absent, es sei denn Du hast selbst eine Umbenennung eingebaut
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Wasserwerk33

  • Full Member
  • ***
  • Beiträge: 377
Antw:DOIF: neue Zeit-Features
« Antwort #127 am: 24 Mai 2020, 22:47:02 »
So habe es nochmal probiert habe das mit den Eltern auch rausgenommen und habe es durch mich und Frau auf present geändert.
Es schaltet nun aber dauerhaft obwohl wir zuhause sind und AVR:power on ist.

Internals:
   CFGFN     
   DEF        ([?20:00-03:30]
and
[avr:power] eq "off" and [Stefan] eq "present" or [Christin] eq "present")
(set Erdgeschoss_Licht off )
 DOELSEIF
(([([22:00]+int(rand(1800))) |Mo Di Mi Do So]) or ([([22:20]+int(rand(7200))) |Fr Sa])
and
[Stefan] eq "absent" and [Christin] eq "absent"
and
[avr:power] eq "off")
(set Erdgeschoss_Licht off )
   FUUID      5ec6df24-f33f-faf7-3710-eae47bcededb8c02
   MODEL      FHEM
   NAME       Licht_steuerung
   NOTIFYDEV  global,Stefan,Christin,avr
   NR         16776
   NTFY_ORDER 50-Licht_steuerung
   STATE      cmd_1
   TYPE       DOIF
   VERSION    20811 2019-12-22 17:45:08
   READINGS:
     2020-05-24 22:45:12   Device          Christin
     2020-05-24 22:44:09   cmd             1
     2020-05-24 22:44:09   cmd_event       Stefan
     2020-05-24 22:44:09   cmd_nr          1
     2020-05-24 22:45:12   e_Christin_STATE present
     2020-05-24 22:45:09   e_Stefan_STATE  present
     2020-05-24 22:43:58   mode            enabled
     2020-05-24 22:44:09   state           cmd_1
     2020-05-24 22:43:58   timer_01_c01    25.05.2020 20:00:00
     2020-05-24 22:43:58   timer_02_c01    25.05.2020 03:30:00
     2020-05-24 22:43:58   timer_03_c02    25.05.2020 22:26:12|MoDiMiDoSo
     2020-05-24 22:43:58   timer_04_c02    24.05.2020 22:52:32|FrSa
   Regex:
     accu:
     cond:
       Christin:
         0:
           &STATE     ^Christin$
         1:
           &STATE     ^Christin$
       Stefan:
         0:
           &STATE     ^Stefan$
         1:
           &STATE     ^Stefan$
       avr:
         0:
           power      ^avr$:^power:
         1:
           power      ^avr$:^power:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms)  and  ::ReadingValDoIf($hash,'avr','power') eq "off" and ::InternalDoIf($hash,'Stefan','STATE') eq "present" or ::InternalDoIf($hash,'Christin','STATE') eq "present"
     1          (::DOIF_time_once($hash,2,$wday,"MoDiMiDoSo")) or (::DOIF_time_once($hash,3,$wday,"FrSa"))  and  ::InternalDoIf($hash,'Stefan','STATE') eq "absent" and ::InternalDoIf($hash,'Christin','STATE') eq "absent"  and  ::ReadingValDoIf($hash,'avr','power') eq "off"
   days:
     2          MoDiMiDoSo
     3          FrSa
   do:
     0:
       0          set Erdgeschoss_Licht off
     1:
       0          set Erdgeschoss_Licht off
     2:
   helper:
     DEVFILTER  ^global$|^Stefan$|^avr$|^Christin$
     NOTIFYDEV  global|Stefan|avr|Christin
     event      present,presence: present
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   Christin
     timerevent present,presence: present
     triggerDev Christin
     timerevents:
       present
       presence: present
     timereventsState:
       state: present
       presence: present
     triggerEvents:
       present
       presence: present
     triggerEventsState:
       state: present
       presence: present
   internals:
     all         Stefan:STATE Christin:STATE
   interval:
     0          -1
     1          0
   intervalfunc:
   localtime:
     0          1590429600
     1          1590370200
     2          1590438372
     3          1590353552
   readings:
     all         avr:power
   realtime:
     0          20:00:00
     1          03:30:00
     2          22:26:12
     3          22:52:32
   time:
     0          20:00:00
     1          03:30:00
     2          ([22:00]+int(rand(1800)))
     3          ([22:20]+int(rand(7200)))
   timeCond:
     0          0
     1          0
     2          1
     3          1
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     1           2  3
   trigger:
   triggertime:
     1590353552:
       localtime  1590353552
       hash:
     1590370200:
       localtime  1590370200
       hash:
     1590429600:
       localtime  1590429600
       hash:
     1590438372:
       localtime  1590438372
       hash:
   uiState:
   uiTable:
Attributes:
   room       Licht

Irgendwo habe ich einen schreibfehler? Oder nimmt der einen wert irgendwo falsch??
Selbst wenn ich Set checkall ausführe. Er springt dann in CMD1 da dürfte er doch eigentlich nicht reinspringen.

danke
« Letzte Änderung: 24 Mai 2020, 22:50:07 von Wasserwerk33 »

Offline amenomade

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5602
Antw:DOIF: neue Zeit-Features
« Antwort #128 am: 25 Mai 2020, 01:01:57 »
([?20:00-03:30] and [avr:power] eq "off" and [Stefan] eq "present" or [Christin] eq "present")

and or Vorrang.  Was Du geschrieben hast, ist wie:
(
([?20:00-03:30] and [avr:power] eq "off" and [Stefan] eq "present")
 or [Christin] eq "present"
)

Jedes mal wenn Christin "present" meldet, ist die Bedingung 1 wahr, egal den Rest.
« Letzte Änderung: 25 Mai 2020, 01:37:51 von amenomade »
FHEM 5.9 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Offline Wasserwerk33

  • Full Member
  • ***
  • Beiträge: 377
Antw:DOIF: neue Zeit-Features
« Antwort #129 am: 25 Mai 2020, 21:56:36 »
@ amenomade
Ich habe es geändert wie du es mir geschrieben hast. Leider nicht geklappt. Und ja du hast recht er meldet die ganze Zeit Christin present.
 Und schaltet daher.

Offline amenomade

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5602
Antw:DOIF: neue Zeit-Features
« Antwort #130 am: 25 Mai 2020, 23:03:23 »
Ich habe überhaupt keine Lösung geschrieben. Ich habe nur deinen Fehler anders dargestellt, um besser zu zeigen, warum es ein Fehler ist. Beide "code" Abschnitte in meinem vorherigen Post sind absolut gleichwertig und führen zum gleichen Ergebnis.

Natürlich musst Du die Klammern anders setzen, damit es funktioniert:
xxx and xxx and (xxx or xxx)
FHEM 5.9 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus