Autor Thema: [Gelöst] Reading innerhalb einer Zeitspanne  (Gelesen 2890 mal)

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8805
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #45 am: 12 August 2021, 08:43:17 »
Hallo Damian,

ich habe dein DOIF wieder importiert.

funktioniert leider immer noch nicht wie gewünscht.
Es wird immer wieder on geschaltet.

Noch mal die Anforderung:

Wenn innerhalb 60 sec. 3 x running on kommt, dann state off
Nach 20 sec. soll automatisch state on
Wenn jetzt wieder innerhalb 60 sec. 3 x running on kommt, dann state off aber nicht wieder automatisch on
Das state on möchte ich dann händisch ausführen.

Und ja, das Einschalten löst ein running on Event aus, macht aber nichts, soll ja erst beim 3. mal innerhalb 60 sec. wieder abschalten.

Ich verstehe den code nicht zu 100%, vermute aber, dass sich das {delete $_on} auf das on von running bezieht.
Müsste hier nicht das on von state gezählt und entsprechen darauf reagiert werden?

Wie immer danke ich dir für deine Mühe und hoffe weiterhin auf deine Hilfe  ;)
VG Dieter

Ich habe es mit Dummys wie beschrieben getestet. Warum es mit deinem Device nicht funktioniert, kann ich nicht sagen, da ich es bei mir nicht nachbilden kann.

$_on ist eine Variable, die auf 1 gesetzt wird, wenn der zweite Timer gestartet wird - sie ist dann definiert (Abfrage: defined $_on)

Du kannst nach jeder Aktion list di_2 aufrufen und die Zustände der Variablen überprüfen. Z. B.:

...
   var:
     count      1
     count2     2

...

$_on ist hier nicht definiert, sonst steht da on 1

Damit kannst du dich an das Problem herantasten.

if (++$_count2 == 2)  bedeutet: erhöhe zuerst die Variable $_count2 um eins und vergleiche danach.

if (!defined $_on) bedeutet: wenn $_on nicht definiert.

Alles andere im Code sollte selbsterklärend sein bzw. in der Commandref zu DOIF stehen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1037
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #46 am: 16 August 2021, 17:08:04 »
Ich habe es mit Dummys wie beschrieben getestet. Warum es mit deinem Device nicht funktioniert, kann ich nicht sagen, da ich es bei mir nicht nachbilden kann.

$_on ist eine Variable, die auf 1 gesetzt wird, wenn der zweite Timer gestartet wird - sie ist dann definiert (Abfrage: defined $_on)

Du kannst nach jeder Aktion list di_2 aufrufen und die Zustände der Variablen überprüfen. Z. B.:

...
   var:
     count      1
     count2     2

...

$_on ist hier nicht definiert, sonst steht da on 1

Damit kannst du dich an das Problem herantasten.

if (++$_count2 == 2)  bedeutet: erhöhe zuerst die Variable $_count2 um eins und vergleiche danach.

if (!defined $_on) bedeutet: wenn $_on nicht definiert.

Alles andere im Code sollte selbsterklärend sein bzw. in der Commandref zu DOIF stehen.

Das gibt´s doch nicht, dass das gleiche DOIF bei dir funktioniert und bei mir nicht.

Internals:
   CFGFN     
   DEF        {if ([GoogleAssistant_dummy:running] eq "on" and !get_Exec("timer")) {
  set_Exec("timer",60,"");
  del_Exec("timer2");
  $_count=1;
} else {
   if (++$_count > 2) {
     fhem_set("GoogleAssistant_dummy off");
     del_Exec("timer");
     if (!defined $_on) {
       set_Exec("timer2",20,'fhem_set("GoogleAssistant_dummy on")');
       $_on=1;
       $_count2=0;
     }
   }
}

{if ([GoogleAssistant_dummy:"on"] and defined $_on)
    {if (++$_count2 == 2) {delete $_on}}
}
}
   FUUID      611a7807-f33f-cd72-c76b-6afa4309f97ae4ae
   MODEL      Perl
   NAME       di_2
   NOTIFYDEV  GoogleAssistant_dummy,global
   NR         215158
   NTFY_ORDER 50-di_2
   STATE      initialized
   TYPE       DOIF
   VERSION    24755 2021-07-15 16:40:59
   Helper:
     DBLOG:
       mode:
         logdb:
           TIME       1629124615.78793
           VALUE      enabled
   READINGS:
     2021-08-16 16:41:00   Device          GoogleAssistant_dummy
     2021-08-16 16:41:00   block_01        executed
     2021-08-16 16:41:00   e_GoogleAssistant_dummy_events on
     2021-08-16 16:40:40   e_GoogleAssistant_dummy_running on
     2021-08-16 16:36:55   mode            enabled
     2021-08-16 16:36:55   state           initialized
   Regex:
     accu:
     collect:
     cond:
       GoogleAssistant_dummy:
         0:
           &STATE     ^GoogleAssistant_dummy$
           running    ^GoogleAssistant_dummy$:^running:
   condition:
     0          if (::ReadingValDoIf($hash,'GoogleAssistant_dummy','running') eq "on" and !get_Exec("timer")) {
  set_Exec("timer",60,"");
  del_Exec("timer2");
  $hash->{var}{count}=1;
} else {
   if (++$hash->{var}{count} > 2) {
     fhem_set("GoogleAssistant_dummy off");
     del_Exec("timer");
     if (!defined $hash->{var}{on}) {
       set_Exec("timer2",20,'fhem_set("GoogleAssistant_dummy on")');
       $hash->{var}{on}=1;
       $hash->{var}{count2}=0;
     }
   }
}

{if (::EventDoIf('GoogleAssistant_dummy',$hash,'on',1) and defined $hash->{var}{on})
    {if (++$hash->{var}{count2} == 2) {delete $hash->{var}{on}}}
}

   helper:
     DEVFILTER  ^global$|^GoogleAssistant_dummy$
     NOTIFYDEV  global|GoogleAssistant_dummy
     event      on
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev GoogleAssistant_dummy
     triggerEvents:
       on
     triggerEventsState:
       state: on
   internals:
   perlblock:
     0          block_01
   ptimer:
     timer:
       count      0
       name       timer
       sec        60
       subname   
       time       1629124920.45668
       hash:
   readings:
     all         GoogleAssistant_dummy:running
   trigger:
     all         GoogleAssistant_dummy
   uiState:
   uiTable:
   var:
     count      1
     count2     2
Attributes:
   DbLogExclude .*

Internals:
   FUUID      5ff9f0b6-f33f-cd72-1fbc-2697b25823d55d15
   FVERSION   98_dummy.pm:0.206650/2019-12-06
   NAME       GoogleAssistant_dummy
   NR         455
   STATE      on
   TYPE       dummy
   READINGS:
     2021-08-16 16:40:40   running         on
     2021-08-16 16:41:00   state           on
Attributes:
   DbLogExclude .*
   alias      Testlight
   appOptions {"template": "switch"}
   genericDeviceType audio_video_receiver
   readingList state running
   room       Google
   setList    on off running

Reden wir evtl. aneinander vorbei? ???

Ich führe 3 x innerhalb 60 Sec. "set running on" aus.
Der Dummy wird ausgeschalten und nach 20 Sec. wieder an.
Das kann ich aber beliebig oft wiederholen, er wird immer wieder angeschaltet.
Er sollte aber nach dem 2 x aus bleiben, bis ich ihn selbst wieder einschalte.

Es ist auch egal ob ich "set running on" od. "set state on" ausführe.
Es wird immer das count hoch gezählt.
Bei "set state on" sollte doch aber nur das count2 hoch zählen.

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8805
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #47 am: 16 August 2021, 19:35:43 »
Ja, ich konnte das Problem bei der Wiederholung nachstellen.

Hier die Korrektur:

defmod di_2 DOIF {if ([GoogleAssistant_dummy:running] eq "on" and \
  !get_Exec("timer")) {\
  set_Exec("timer",60,"");;\
  del_Exec("timer2");;\
  $_count=1;;\
} else {\
  if (++$_count > 2) {\
     fhem_set("GoogleAssistant_dummy off");;\
     del_Exec("timer");;\
     if (!defined $_on) {\
       set_Exec("timer2",20,'fhem_set("GoogleAssistant_dummy on")');;\
       $_on=1;;\
       $_count2=0;;\
     }\
   }\
}\
}\
{if ([GoogleAssistant_dummy:"^on$"] and defined $_on)\
    {if (++$_count2 == 2) {delete $_on}}\
}

Es war eine Klammer } falsch - es sollten zwei unabhängige Blöcke sein. Was aber gravierender war, war die Abfrage auf Status on. Mit [GoogleAssistant_dummy:"on"] wurde auch auf running on getriggert.

Man braucht ja nur einmal set GoogleAssistant_dummy on zum Wiederaktivieren ausführen, da das erste ja schon bereits vom Modul gesetzt wurde.

Willst du auf zwei Mal manuell schalten wieder aktivieren, dann musst du ++$_count2 == 3 schreiben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1037
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #48 am: 16 August 2021, 20:25:59 »
Ja, ich konnte das Problem bei der Wiederholung nachstellen.

Hier die Korrektur:

defmod di_2 DOIF {if ([GoogleAssistant_dummy:running] eq "on" and \
  !get_Exec("timer")) {\
  set_Exec("timer",60,"");;\
  del_Exec("timer2");;\
  $_count=1;;\
} else {\
  if (++$_count > 2) {\
     fhem_set("GoogleAssistant_dummy off");;\
     del_Exec("timer");;\
     if (!defined $_on) {\
       set_Exec("timer2",20,'fhem_set("GoogleAssistant_dummy on")');;\
       $_on=1;;\
       $_count2=0;;\
     }\
   }\
}\
}\
{if ([GoogleAssistant_dummy:"^on$"] and defined $_on)\
    {if (++$_count2 == 2) {delete $_on}}\
}

Es war eine Klammer } falsch - es sollten zwei unabhängige Blöcke sein. Was aber gravierender war, war die Abfrage auf Status on. Mit [GoogleAssistant_dummy:"on"] wurde auch auf running on getriggert.

Man braucht ja nur einmal set GoogleAssistant_dummy on zum Wiederaktivieren ausführen, da das erste ja schon bereits vom Modul gesetzt wurde.

Willst du auf zwei Mal manuell schalten wieder aktivieren, dann musst du ++$_count2 == 3 schreiben.

Super, scheint erst mal zu funktionieren wie gewünscht.
Das nur 1 Block vorhanden war hatte ich auch bemerkt, aber keine Beachtung geschenkt.
Und mit der Abfrage des Status hatte ich heute auch rumexperimentiert.
Also war ich auf der richtigen Fährte.  ;)

Vielen Dank für deine Geduld und Hilfe.

Schönen Abend noch.
VG Dieter

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8805
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #49 am: 16 August 2021, 20:30:03 »
Super, scheint erst mal zu funktionieren wie gewünscht.
Das nur 1 Block vorhanden war hatte ich auch bemerkt, aber keine Beachtung geschenkt.
Und mit der Abfrage des Status hatte ich heute auch rumexperimentiert.
Also war ich auf der richtigen Fährte.  ;)

Vielen Dank für deine Geduld und Hilfe.

Schönen Abend noch.
VG Dieter

Wenn du diesen Lösungsansatz für ein durchaus komplexeres Problem verinnerlicht hast, dann bist du für die Zukunft gut gerüstet.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1037
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #50 am: 18 August 2021, 10:40:43 »
Wenn du diesen Lösungsansatz für ein durchaus komplexeres Problem verinnerlicht hast, dann bist du für die Zukunft gut gerüstet.

Tja, so gut gerüstet bin ich dann wohl doch nicht.  :-[

Muss leider noch mal deine Hilfe in Anspruch nehmen.

Ich möchte nun noch eine Meldung wenn das DOIF die Anlage das 2. mal abschaltet.
Habe schon zig Versuche hinter mir aber es will nicht funktionieren.

Hier mein letzter Ansatz, in dem ich die Meldung einfach verzögert ausgeben wollte und den Timer beim Einschalten wieder lösche.

Wärst du so nett und zeigst mir erneut die Lösung?

Vielen Dank im Voraus.

{if ([GoogleAssistant_dummy:running] eq "on" and
  !get_Exec("timer")) {
  set_Exec("timer",30,"");
  del_Exec("timer2");
  $_count=1;
} else {
  if (++$_count > 4) {
     fhem_set("GoogleAssistant_dummy off");
     del_Exec("timer");
       if (!defined $_on) {
       set_Exec("timer2",10,'fhem_set("GoogleAssistant_dummy on")');
       del_Exec("timer3");
       $_on=1;
       $_count2=0;
     }
   }
}
}
{if ([GoogleAssistant_dummy:"^on$"] and defined $_on)
    {if (++$_count2 == 2) {delete $_on}}
}
{if ([GoogleAssistant_dummy:"^off$"] and defined $_on)
    {set_Exec("timer3",20,'fhem_set("Telegram message \@Dieter_K. Hauswasserwerk Notabschaltung")')}
}

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8805
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #51 am: 18 August 2021, 18:25:01 »
Ausgehend von meinem ursprünglichen Code:

defmod di_2 DOIF {if ([GoogleAssistant_dummy:running] eq "on" and \
  !get_Exec("timer")) {\
  set_Exec("timer",60,"");;\
  del_Exec("timer2");;\
  $_count=1;;\
} else {\
  if (++$_count > 2) {\
     fhem_set("GoogleAssistant_dummy off");;\
     if (++$_count_off > 1) {
        fhem_set("Telegram message \@Dieter_K. Hauswasserwerk Notabschaltung");
        $_count_off=0;
     }
     del_Exec("timer");;\
     if (!defined $_on) {\
       set_Exec("timer2",20,'fhem_set("GoogleAssistant_dummy on")');;\
       $_on=1;;\
       $_count2=0;;\
     }\
   }\
}\
}\
{if ([GoogleAssistant_dummy:"^on$"] and defined $_on)\
    {if (++$_count2 == 2) {delete $_on}}\
}
init {$_count_off=0}

Mit einem neuen Counter $_count_off, der nach der Definition zunächst mit Null initialisiert wird init {$_count_off=0}, wird bei jedem off-Befehl dieser erhöht und abgefragt if (++$_count_off > 1 ) {... Ab der zweiten Abschaltung gibt es eine Meldung.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1037
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #52 am: 18 August 2021, 19:17:47 »
Ausgehend von meinem ursprünglichen Code:

defmod di_2 DOIF {if ([GoogleAssistant_dummy:running] eq "on" and \
  !get_Exec("timer")) {\
  set_Exec("timer",60,"");;\
  del_Exec("timer2");;\
  $_count=1;;\
} else {\
  if (++$_count > 2) {\
     fhem_set("GoogleAssistant_dummy off");;\
     if (++$_count_off > 1) {
        fhem_set("Telegram message \@Dieter_K. Hauswasserwerk Notabschaltung");
        $_count_off=0;
     }
     del_Exec("timer");;\
     if (!defined $_on) {\
       set_Exec("timer2",20,'fhem_set("GoogleAssistant_dummy on")');;\
       $_on=1;;\
       $_count2=0;;\
     }\
   }\
}\
}\
{if ([GoogleAssistant_dummy:"^on$"] and defined $_on)\
    {if (++$_count2 == 2) {delete $_on}}\
}
init {$_count_off=0}

Mit einem neuen Counter $_count_off, der nach der Definition zunächst mit Null initialisiert wird init {$_count_off=0}, wird bei jedem off-Befehl dieser erhöht und abgefragt if (++$_count_off > 1 ) {... Ab der zweiten Abschaltung gibt es eine Meldung.

Erneut vielen Dank.

Leider fehlt irgendwo eine Klammer.
Leider finde ich nicht wo.

di_2 DOIF: Perlblck: no right bracket: {if ([GoogleAssistant_dummy:running] eq "on" and
  !get_Exec("timer")) {
  set_Exec("timer",60,"");
  del_Exec("timer2");
  $hash->{var}{count}=1;
} else {
  if (++$hash->{var}{count} > 2) {
     fhem_set("GoogleAssistant_dummy off");
     if (++$hash->{var}{count_off} > 1) {

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1037
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #53 am: 18 August 2021, 19:28:07 »
ok, sieht nun so aus

{if ([GoogleAssistant_dummy:running] eq "on" and
  !get_Exec("timer")) {
  set_Exec("timer",60,"");
  del_Exec("timer2");
  $_count=1;
} else {
  if (++$_count > 2) {
     fhem_set("GoogleAssistant_dummy off");
     if (++$_count_off > 1) {
        fhem_set("Telegram message \@Dieter_K. Hauswasserwerk Notabschaltung");
        $_count_off=0;
     }
     del_Exec("timer");
     if (!defined $_on) {
       set_Exec("timer2",20,'fhem_set("GoogleAssistant_dummy on")');
       $_on=1;
       $_count2=0;
     }
   }
}
}
{if ([GoogleAssistant_dummy:"^on$"] and defined $_on)
    {if (++$_count2 == 2) {delete $_on}}
}
init {$_count_off=0}

Meldung kommt aber beim Ersten Abschalten.

Edit: Es wird wohl auch wieder das off von running mitgezählt.

Edit2: Es funktioniert nach dem modify des DOIF genau 1 mal.
          Bei einem weiteren Durchlauf wird nach dem 1. automatischen Abschalten auch eine Meldung versendet, wenn running auf off geht.
« Letzte Änderung: 18 August 2021, 19:57:21 von dk3572 »

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8805
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #54 am: 18 August 2021, 21:14:59 »
ok, sieht nun so aus

{if ([GoogleAssistant_dummy:running] eq "on" and
  !get_Exec("timer")) {
  set_Exec("timer",60,"");
  del_Exec("timer2");
  $_count=1;
} else {
  if (++$_count > 2) {
     fhem_set("GoogleAssistant_dummy off");
     if (++$_count_off > 1) {
        fhem_set("Telegram message \@Dieter_K. Hauswasserwerk Notabschaltung");
        $_count_off=0;
     }
     del_Exec("timer");
     if (!defined $_on) {
       set_Exec("timer2",20,'fhem_set("GoogleAssistant_dummy on")');
       $_on=1;
       $_count2=0;
     }
   }
}
}
{if ([GoogleAssistant_dummy:"^on$"] and defined $_on)
    {if (++$_count2 == 2) {delete $_on}}
}
init {$_count_off=0}

Meldung kommt aber beim Ersten Abschalten.

Edit: Es wird wohl auch wieder das off von running mitgezählt.

Edit2: Es funktioniert nach dem modify des DOIF genau 1 mal.
          Bei einem weiteren Durchlauf wird nach dem 1. automatischen Abschalten auch eine Meldung versendet, wenn running auf off geht.

Es wird genau dann gezählt, wenn fhem_set("GoogleAssistant_dummy off"); ausgeführt wird. Was das für running oder state bei deinem Device bedeutet, weiß ich nicht - es werden aber für das Hochzählen keine Trigger ausgewertet, nach der Meldung wird der Counter auf Null gesetzt, siehe code.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline dk3572

  • Hero Member
  • *****
  • Beiträge: 1037
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #55 am: 19 August 2021, 15:15:52 »
Es wird genau dann gezählt, wenn fhem_set("GoogleAssistant_dummy off"); ausgeführt wird. Was das für running oder state bei deinem Device bedeutet, weiß ich nicht - es werden aber für das Hochzählen keine Trigger ausgewertet, nach der Meldung wird der Counter auf Null gesetzt, siehe code.

Wie die Anforderungen sind habe ich ja jetzt schon beschrieben.
Es ist eine Schaltsteckdose mit Leistungsmessung.
Der habe ich ein Reading "running" verpasst das on ist, wenn Leistung bezogen wird und off, wenn keine Leistung mehr bezogen wird.
Diese Steckdose soll ausgeschaltet werden, wenn das running innerhalb der 60 sec 2 mal on ist.
Nach 20 sec soll sie automatisch eingeschaltet werden und wieder die 60 sec überwachen.
Wenn jetzt wieder ausgeschaltet wird, soll sie aus bleiben und die Meldung abgesetzt werden.

Zum Testen verwende ich den besagten Dummy.

Tatsächlich reagiert das DOIF aber wie folgt:
2 x Dummy running set on - Dummy state wird ausgeschaltet.
Schalte ich jetzt running auf off, was ja bei der Steckdose der Fall wäre, kommt bereits die Meldung.

Ich hoffe es ist verständlich genug erklärt und du kannst helfen.

Danke dir schon mal.

Internals:
   FUUID      5ff9f0b6-f33f-cd72-1fbc-2697b25823d55d15
   FVERSION   98_dummy.pm:0.206650/2019-12-06
   NAME       GoogleAssistant_dummy
   NR         455
   STATE      off
   TYPE       dummy
   READINGS:
     2021-08-19 14:58:58   running         off
     2021-08-19 14:58:58   state           off
Attributes:
   DbLogExclude .*
   alias      Testlight
   appOptions {"template": "switch"}
   genericDeviceType audio_video_receiver
   readingList state running
   room       Google
   setList    state:on,off running:on,off
   webCmd     state:running
   webCmdLabel state:running

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8805
Antw:[Gelöst] Reading innerhalb einer Zeitspanne
« Antwort #56 am: 19 August 2021, 16:39:12 »
Ich habe mich an dieser zusätzlichen Anforderung orientiert:
Zitat
Ich möchte nun noch eine Meldung wenn das DOIF die Anlage das 2. mal abschaltet.

Und genau das passiert bei mir.

Wenn DOIF das zweite Mal fhem_set("GoogleAssistant_dummy off") absetzt, wird fhem_set("Telegram message \@Dieter_K. Hauswasserwerk Notabschaltung"); ausgeführt.

Alles andere hat sich nicht verändert.

Da du nicht spezifiziert hast, was danach passieren soll, habe ich den $_counter_off auf Null gesetzt, sodass wieder nach dem zweiten Abschalten die Meldung kommt.

Da die bisherige Programmierung funktionierte, habe daran nichts geändert, es kommt wie beschrieben zustäzlich die Meldung, wenn DOIF das zweite Mal abschaltet und es ist egal ob irgend jemand etwas auf on oder off schaltet, weil die Meldung nicht von Events beeinflusst wird.

Mit dem Code habe ich getestet:

statt fhem_set("Telegram message \@Dieter_K. Hauswasserwerk Notabschaltung") wird hier ein Reading im DOIF-Modul gesetzt set_Reading("Abschaltung","Hauswasserwerk Notabschaltung")

defmod di_2 DOIF {if ([GoogleAssistant_dummy:running] eq "on" and \
  !get_Exec("timer")) {\
  set_Exec("timer",60,"");;\
  del_Exec("timer2");;\
  $_count=1;;\
} else {\
  if (++$_count > 2) {\
     fhem_set("GoogleAssistant_dummy off");;\
     if (++$_count_off > 1) {\
        set_Reading("Abschaltung","Hauswasserwerk Notabschaltung");;\
        $_count_off=0;;\
     }\
     del_Exec("timer");;\
     if (!defined $_on) {\
       set_Exec("timer2",20,'fhem_set("GoogleAssistant_dummy on")');;\
       $_on=1;;\
       $_count2=0;;\
     }\
   }\
}\
}\
{if ([GoogleAssistant_dummy:"^on$"] and defined $_on)\
    {if (++$_count2 == 2) {delete $_on}}\
}\
\
init {$_count_off=0}
attr di_2 room test

setstate di_2 initialized
setstate di_2 2021-08-19 16:26:16 Abschaltung Hauswasserwerk Notabschaltung
setstate di_2 2021-08-19 16:26:16 Device GoogleAssistant_dummy
setstate di_2 2021-08-19 16:26:16 block_01 executed
setstate di_2 2021-08-19 16:26:16 block_02 executed
setstate di_2 2021-08-19 16:11:42 block_init executed
setstate di_2 2021-08-19 16:26:16 e_GoogleAssistant_dummy_events running: on
setstate di_2 2021-08-19 16:26:16 e_GoogleAssistant_dummy_running on
setstate di_2 2021-08-19 16:11:42 mode enabled
setstate di_2 2021-08-19 16:11:42 state initialized

Man kann sehen, dass das Reading beim zweiten off-Schalten gesetzt wird: setstate di_2 2021-08-19 16:26:16 Abschaltung Hauswasserwerk Notabschaltung


Edit: Zum Testen habe ich immer nur mehrfach setreading GoogleAssistant_dummy running on ausgeführt, damit fhem_set("GoogleAssistant_dummy off") ausgeführt wurde.


 
« Letzte Änderung: 19 August 2021, 16:50:28 von Damian »
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

 

decade-submarginal