Hauptmenü

Erweiterung eines PERL DOIFs

Begonnen von der-Lolo, 18 März 2022, 10:15:41

Vorheriges Thema - Nächstes Thema

der-Lolo

Hallo Leute,
jetzt, wo tagsüber die Aussentemperatur größer ist als die Temperatur in unserem Gartenhaus möchte ich gerne mein bestehendes DOIF zum versenden einer Nachricht erweitern, sodass ich in der Lage bin die Fenster des Gartenhauses im richtigem moment zu schliessen.

Leider kommt es zu einem warning innerhalb des Devices condition c02: Use of uninitialized value $seconds in numeric gt (>) at ./FHEM/98_DOIF.pm line 4137.
Ich verstehe nicht warum...

Funktion ist auch noch nicht gegeben - aus block02 heraus habe ich noch keine Nachricht bekommen.

Hat jemand eine Idee was hier schief läuft..?


Internals:
   DEF        subs {
  sub pushGardenhouse {
    my ($message,$status)=@_;
    fhem ("msg push \@Eichenheim $message");
#fhem_set ("WPhistory add $status");
#fhem_set ("WPhistory add $message");
    set_State "$status";
  }
}
{ if ([06:00-22:00] and [$SELF:TempLow] and ([$SELF:state] ne "critical Alarm GH sent" )) {
set_Exec ("Timer",600,'pushGardenhouse ("Die Temperatur im Gartenhaus ist gerade unter 5°C gefallen","critical Alarm GH sent")');
}
{ if (not [$SELF:TempLow] and ([$SELF:state] eq "critical Alarm GH sent" )) {
set_State "armed";
}

}
}
{ if ([$SELF:TempFalling] and ([$SELF:state] ne "close Windows GH sent" )) {set_Exec ('pushGardenhouse ("Die Temperatur im Gartenhaus ist gerade unter die Aussentemperatur gefallen - Fenster schliessen!","close Windows GH sent"');}

}

   FUUID      5c447100-f33f-68f5-e57f-dd18d47767476a17
   MODEL      Perl
   NAME       GHmsgAdjust
   NOTIFYDEV  global,WH2600,GHmsgAdjust
   NR         161
   NTFY_ORDER 50-GHmsgAdjust
   STATE      initialized
   TYPE       DOIF
   VERSION    25720 2022-02-20 21:38:26
   DOIF_Readings:
     TempFalling (::ReadingValDoIf($hash,'WH2600','indoorTemperature','','d') > ::ReadingValDoIf($hash,'WH2600','temperature','','d'))
     TempLow    (::ReadingValDoIf($hash,'WH2600','indoorTemperature','','d') < 6)
   READINGS:
     2022-03-18 10:09:36   TempFalling     1
     2022-02-04 14:03:02   TempLow         
     2022-03-18 10:09:15   block_01        executed
     2022-03-18 10:09:36   block_02        executed
     2022-03-18 10:09:36   e_GHmsgAdjust_TempFalling 1
     2022-03-18 10:06:20   mode            enabled
     2022-03-18 10:06:11   state           initialized
     2022-03-18 10:06:11   timer_01_c01    19.03.2022 06:00:00
     2022-03-18 10:06:11   timer_02_c01    18.03.2022 22:00:00
     2022-03-18 10:09:36   warning         condition c02: Use of uninitialized value $seconds in numeric gt (>) at ./FHEM/98_DOIF.pm line 4137.

   Regex:
     DOIF_Readings:
       WH2600:
         TempFalling:
           indoorTemperature ^WH2600$:^indoorTemperature:
           temperature ^WH2600$:^temperature:
         TempLow:
           indoorTemperature ^WH2600$:^indoorTemperature:
     accu:
     collect:
     cond:
       GHmsgAdjust:
         0:
           TempLow    ^GHmsgAdjust$:^TempLow:
           state      ^GHmsgAdjust$:^state:
         1:
           TempFalling ^GHmsgAdjust$:^TempFalling:
           state      ^GHmsgAdjust$:^state:
   condition:
     0           if (::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'GHmsgAdjust','TempLow') and (::ReadingValDoIf($hash,'GHmsgAdjust','state') ne "critical Alarm GH sent" )) {
set_Exec ("Timer",600,'pushGardenhouse ("Die Temperatur im Gartenhaus ist gerade unter 5°C gefallen","critical Alarm GH sent")');
}
{ if (not ::ReadingValDoIf($hash,'GHmsgAdjust','TempLow') and (::ReadingValDoIf($hash,'GHmsgAdjust','state') eq "critical Alarm GH sent" )) {
set_State "armed";
}

}

     1           if (::ReadingValDoIf($hash,'GHmsgAdjust','TempFalling') and (::ReadingValDoIf($hash,'GHmsgAdjust','state') ne "close Windows GH sent" )) {set_Exec ('pushGardenhouse ("Die Temperatur im Gartenhaus ist gerade unter die Aussentemperatur gefallen - Fenster schliessen!","close Windows GH sent"');}


   days:
   helper:
     NOTIFYDEV  global,WH2600,GHmsgAdjust
     event      TempFalling: 1
     globalinit 1
     last_timer 2
     sleeptimer -1
     triggerDev GHmsgAdjust
     triggerEvents:
       TempFalling: 1
       e_GHmsgAdjust_TempFalling: 1
     triggerEventsState:
       TempFalling: 1
   internals:
   interval:
     0          -1
     1          0
   intervalfunc:
   localtime:
     0          1647666000
     1          1647637200
   perlblock:
     0          block_01
     1          block_02
   ptimer:
     pushGardenhouse ("Die Temperatur im Gartenhaus ist gerade unter die Aussentemperatur gefallen - Fenster schliessen!","close Windows GH sent":
       count      0
       name       pushGardenhouse ("Die Temperatur im Gartenhaus ist gerade unter die Aussentemperatur gefallen - Fenster schliessen!","close Windows GH sent"
       sec       
       subname   
       time       1647594576.46944
       hash:
   readings:
     all         GHmsgAdjust:TempLow GHmsgAdjust:state GHmsgAdjust:TempFalling
   realtime:
     0          06:00:00
     1          22:00:00
   time:
     0          06:00:00
     1          22:00:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   trigger:
   triggertime:
     1647637200:
       localtime  1647637200
       hash:
     1647666000:
       localtime  1647666000
       hash:
   uiState:
   uiTable:
Attributes:
   DOIF_Readings TempLow:([WH2600:indoorTemperature:d] < 6), TempFalling:([WH2600:indoorTemperature:d] > [WH2600:temperature:d])
   DbLogExclude .*
   comment    [WH2600:indoorTemperature:d] < [WH2600:temperature:d]
   event-on-change-reading .*
   group      msg-adjust
   room       13-Gartenhaus,97-Helper

Damian

Zitat{set_Exec ('pushGardenhouse ("Die Temperatur im Gartenhaus ist gerade unter die Aussentemperatur gefallen - Fenster schliessen!","close Windows GH sent"');}

set_Exec hat andere Parameter, siehe dein erster set_Exec-Aufruf
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

der-Lolo

Du hast natürlich recht Damian...
Danke, ich dachte ich komme ohne Timer aus ;)