Notify triggert obwohl state inactive - shutdown restart

Begonnen von riker1, 15 Oktober 2018, 07:36:48

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: riker1 am 15 Oktober 2018, 10:43:20
Aber warum wird der state beeinflusst, egal wie ich editiere?

weil der state FHEM gehört und nicht dem Anwender.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CoolTux

Zitat von: betateilchen am 15 Oktober 2018, 10:33:29
Wie setzt Du denn das device auf inactive?

Wenn Du das per Attribut disable machst, wird dieser Zustand definitiv nach einem "shutdown restart" auch wiederhergestellt. Wenn Du das mit "set ... inactive" machst, wäre ich mir da nicht sicher. Die readings werden zwar nach einem shutdown restart wieder auf den vorherigen Wert gesetzt, das hat aber nicht zwingend auch Auswirkungen auf das Verhalten selbst.

Die empfohlene Vorgehensweise ist die Verwendung des Attributes, das dieses bis zu seiner nächsten Änderung persistent ist.

Also laut der Funktion IsDisabled im Notify und dem dazugehörigen Code der Funktion in fhem.pl wird einfach nur das state Reading ausgelesen. Und wenn da drin steht inactive das sollte das auch beachtet werden.
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

betateilchen

das reading state gehört aber FHEM und kann sich deshalb - gerade bei einem FHEM Neustart - durchaus noch ändern, nachdem es aus dem statefile verarbeitet wurde.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

riker1

Zitat von: betateilchen am 15 Oktober 2018, 11:34:11
Das geht auch bulk per Attribut.

attr device.* disable 1

ok, danke

trotzdem plädiere ich dafür, dass der state, egal wie entstanden, als state inactive / active interpretiert und behandelt wird.

Aus meiner Sicht ist das ein Bug. , oder?

FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

riker1

Zitat von: betateilchen am 15 Oktober 2018, 12:04:46
das reading state gehört aber FHEM und kann sich deshalb - gerade bei einem FHEM Neustart - durchaus noch ändern, nachdem es aus dem statefile verarbeitet wurde.

wenn es FHEM gehört, dann darf man es auch nicht über das set ändern können, oder?

und state ist state aus meiner Sicht, ist ein Reading oder nicht.

FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

CoolTux

Zitat von: betateilchen am 15 Oktober 2018, 12:04:46
das reading state gehört aber FHEM und kann sich deshalb - gerade bei einem FHEM Neustart - durchaus noch ändern, nachdem es aus dem statefile verarbeitet wurde.

Aber wenn sich das Reading ändert dann sieht man die Änderung ja im state Reading. Wenn aber im state Reading inaktive steht dann sollte das auch beachtet werden. Ich schaue mir den Code noch mal genau an.
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

riker1

Zitat von: CoolTux am 15 Oktober 2018, 12:38:57
Aber wenn sich das Reading ändert dann sieht man die Änderung ja im state Reading. Wenn aber im state Reading inaktive steht dann sollte das auch beachtet werden. Ich schaue mir den Code noch mal genau an.

Ja danke,

definitiv war dar state im reading und im safe file inactive und es triggerte.

Danke
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

CoolTux

Kann da jetzt so nichts weiter finden. Gib mir mal bitte eine raw definition von allen beteiligten Devices. Also die vo das NT triggern soll. Die der NT schaltet kann ich einfach so nachbilden.
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

riker1

ok
damit ich alle kriege, es gibt doch diesen devexport, hatte ich mal gelesen, weiss aber nicht wie es geht.

weisst du das?
Danke
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

CoolTux

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

riker1

Hi

danke

habe es nun nochmal eingeschränkt.

also ich setze state inactive und es triggert. nur noch ein notify aus einem dummy

define N_KH_HZ_Mode_create_status_Test_inactive notify DEBUG_TR.* \
\
{\
\
\
##################################################################################################\
#--------------------------------------------------------\
my $debug = Value("DEBUG_TR_GLOBAL");;\
#;;\
#-----------------------------------                           initiale Variablen-\
my $so_feiertag = 0;;\
my $WOEND = ($we);;\
#----------------------------------wird immer angehaengt\
my $debug_subset = ":DL$debug:$hms:WD:$wday:SD:$so_feiertag";;\
#\
my $case ="";;    # test track case , setzen je elsif und am ende ausführen!!!\
#-------------------------------------------------------------------------DEBUG SEttings\
if ($debug >= 1) \
   {$hour = Value("DEBUG_TR_KH_Test_hors");;\
    $we = Value("DEBUG_TR_WE");;\
    $WOEND = ($we);;\
    $wday = Value("DEBUG_TR_WDAY");;\
#\
   # $so_feiertag = Value("DEBUG_TR_WE");;#   ---> nun neuevariable eingebaut DEBUG_TR_WDAY\
     # 0=Sonntag -----für debug genutzt $we ( da we wday 6 und 0 !!!   ;;\
          #nur zum testen da ich aktuell nur Sonntag will und Sa noch nicht , muss noch getrennt werden\
#\
     Log 1,'DEBUGGING  im debugzweig >1: so<=debugtrwe '.Value('Value(DEBUG_TR_WE').'  so_feier>$so_feiertag <<--woend>$WOEND<';;\
     \
    if ($debug >= 3)  {$debug_subset = $debug_subset.":$hms:we:$WOEND:"};;\
    if ($debug >= 4)  {$debug_subset = $debug_subset.":E:$EVENT"};;\
    if ($debug >= 5)  {$debug_subset = $debug_subset.":N:$NAME"};;\
    if ($debug >= 6)  {$debug_subset = $debug_subset.":S:$SELF"};;\
if ($debug == 2)  {fhem("set KH_Temp_Status DEBUGGING")};;# wenn clear das feld\
   };;\
Log 1,'DEBUGGING -TRIGGER  MODE:--SELF>$SELF<';;\
Log 1,'DEBUGGING S:>$SELF<N:>$NAME:debug_subset >$debug_subset<';;\
Log 1,'DEBUGGING -TRIGGER  S:>$SELF<N:>$NAME<<--Event>$EVENT<';;\
Log 1,'DEBUGGING -TRIGGER  so_feier>$so_feiertag <<--woend>$WOEND<';;\
#\
#-------------------------------------------------------------------------DEBUG SEttings\
\
# ------so_feiertag setzen        wird dann entsprechend gesetzt wenn feiertag dazukommt ;;\
if  ($wday == 0) { $so_feiertag  =1};;    #wday 0 ist So!\
\
#--------------------------------------------------------------------start cases!!!!\
\
if   #Urlaub !!\
       (    Value("Heizung_Control") eq"Urlaub") \
       {;;\
        $case = "Urlaub";;\
  #      fhem("set KH_HZ_Mode_TagNachtAbsenk Urlaub".$debug_subset);;\
   #     fhem("setreading  KH_HZ_Mode_TagNachtAbsenk 0_$SELF Urlaub".$debug_subset);;\
      }\
\
#---------------\
    elsif  #WE-Sonntag !!\
            # tagsueber keine Absenkung -> hier geregelt da temp änderung das hier triggert\
            #  \
           (    $so_feiertag == 1   #morgens absenkung muss ueber Temp modul gesteuert werden \
              &&      $hour  <=  Value("KH_Desired_Sonntag_Absenkung_End")   #und hour variable \
            )\
              {;;\
               $case ="1Nachts-NachtAbsenkung";;\
#              fhem("set KH_HZ_Mode_TagNachtAbsenk 1Nachts-NachtAbsenkung".$debug_subset);;\
  #             \
}\
#--------------------\
\
elsif          # sonntag bis abends \
               (        $so_feiertag == 1 \
                    &&  $hour  >  Value("KH_Desired_Sonntag_Absenkung_End")\
                    &&  $hour <  Value("KH_Desired_Nacht_Start")\
               )\
               { ;;\
               $case ="SonnFeiertagKeinAbsenk";;\
#                fhem("set KH_HZ_Mode_TagNachtAbsenk SonnFeiertagKeinAbsenk".$debug_subset);;\
                  Log 1,"DEBUGGING Sonntag  so_feier>$so_feiertag <<--woend>$WOEND<";;\
               }\
#------------\
\
     elsif     ( #Nachts  Variable !!\
       (    $hour >= Value("KH_Desired_Nacht_Start")\
         || $hour <= Value("KH_Desired_Nacht_End") \
       )\
    ) {;;\
               $case ="1Nachts-NachtAbsenkung";;\
        #  fhem("set KH_HZ_Mode_TagNachtAbsenk ".$case.$debug_subset);;\
}\
   \
      elsif ( #Tag-Morgens   zwischen \
                  $hour >  Value("KH_Desired_Nacht_End")\
             &&   $hour < Value("KH_Desired_Tag_Absenkung_Start") \
            )  {;;\
               $case ="2Morgens_vor_Absenkung";;\
            #    fhem("set KH_HZ_Mode_TagNachtAbsenk 2Morgens_vor_Absenkung".$debug_subset);;\
               }\
  \
     elsif (   #Absenkung!\
                  $hour >= Value("KH_Desired_Tag_Absenkung_Start")\
             &&   $hour <= Value("KH_Desired_Tag_Absenkung_End") \
            ){;;\
               $case ="3Absenkung-Mittags";;\
          #     fhem("set KH_HZ_Mode_TagNachtAbsenk 3Absenkung-Mittags".$debug_subset);;\
            }\
\
     elsif (   #Tag-MittagAbend\
                  $hour > Value("KH_Desired_Tag_Absenkung_End")\
             &&   $hour < Value("KH_Desired_Nacht_Start") \
            ) {;;\
               $case ="4Tag-MittagAbend";;\
    #           fhem("set KH_HZ_Mode_TagNachtAbsenk 4Tag-MittagAbend".$debug_subset);;\
              }\
           \
    else \
            {;;\
               $case ="5else->";;\
   #            fhem("set KH_HZ_Mode_TagNachtAbsenk 5else".$debug_subset);;\
              };;\
\
fhem("set KH_HZ_Mode_TagNachtAbsenk ".$case.$debug_subset);;\
fhem("setreading KH_HZ_Mode_TagNachtAbsenk 0".$case."-".$hms);;\
fhem("setreading KH_HZ_Mode_TagNachtAbsenk 0_CK1_prod ".$case.$debug_subset);;\
#das entspricht oben und wird oben rausgenommen\
fhem("setreading KH_HZ_Mode_TagNachtAbsenk 0_CK_0 ".$case."-".$hms);;\
\
}

setstate N_KH_HZ_Mode_create_status_Test_inactive inactive
setstate N_KH_HZ_Mode_create_status_Test_inactive 2018-10-15 15:58:11 state inactive



notiify device:
defmod DEBUG_TR_GLOBAL dummy
attr DEBUG_TR_GLOBAL alias 1_DEB_TR_GLOBAL
attr DEBUG_TR_GLOBAL room 01_Stromstatus,T_Testlab,Z_Control,debug
attr DEBUG_TR_GLOBAL webCmd 0:1:2:3:4:5:6:7

setstate DEBUG_TR_GLOBAL 4
setstate DEBUG_TR_GLOBAL 2018-10-15 15:31:48 state 4



ps list -r hat nur das device geliefert nicht das trigger device


FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

CoolTux

Zitat von: riker1 am 15 Oktober 2018, 16:05:46
Hi

danke

habe es nun nochmal eingeschränkt.

also ich setze state inactive und es triggert. nur noch ein notify aus einem dummy

define N_KH_HZ_Mode_create_status_Test_inactive notify DEBUG_TR.* \
\
{\
\
\
##################################################################################################\
#--------------------------------------------------------\
my $debug = Value("DEBUG_TR_GLOBAL");;\
#;;\
#-----------------------------------                           initiale Variablen-\
my $so_feiertag = 0;;\
my $WOEND = ($we);;\
#----------------------------------wird immer angehaengt\
my $debug_subset = ":DL$debug:$hms:WD:$wday:SD:$so_feiertag";;\
#\
my $case ="";;    # test track case , setzen je elsif und am ende ausführen!!!\
#-------------------------------------------------------------------------DEBUG SEttings\
if ($debug >= 1) \
   {$hour = Value("DEBUG_TR_KH_Test_hors");;\
    $we = Value("DEBUG_TR_WE");;\
    $WOEND = ($we);;\
    $wday = Value("DEBUG_TR_WDAY");;\
#\
   # $so_feiertag = Value("DEBUG_TR_WE");;#   ---> nun neuevariable eingebaut DEBUG_TR_WDAY\
     # 0=Sonntag -----für debug genutzt $we ( da we wday 6 und 0 !!!   ;;\
          #nur zum testen da ich aktuell nur Sonntag will und Sa noch nicht , muss noch getrennt werden\
#\
     Log 1,'DEBUGGING  im debugzweig >1: so<=debugtrwe '.Value('Value(DEBUG_TR_WE').'  so_feier>$so_feiertag <<--woend>$WOEND<';;\
     \
    if ($debug >= 3)  {$debug_subset = $debug_subset.":$hms:we:$WOEND:"};;\
    if ($debug >= 4)  {$debug_subset = $debug_subset.":E:$EVENT"};;\
    if ($debug >= 5)  {$debug_subset = $debug_subset.":N:$NAME"};;\
    if ($debug >= 6)  {$debug_subset = $debug_subset.":S:$SELF"};;\
if ($debug == 2)  {fhem("set KH_Temp_Status DEBUGGING")};;# wenn clear das feld\
   };;\
Log 1,'DEBUGGING -TRIGGER  MODE:--SELF>$SELF<';;\
Log 1,'DEBUGGING S:>$SELF<N:>$NAME:debug_subset >$debug_subset<';;\
Log 1,'DEBUGGING -TRIGGER  S:>$SELF<N:>$NAME<<--Event>$EVENT<';;\
Log 1,'DEBUGGING -TRIGGER  so_feier>$so_feiertag <<--woend>$WOEND<';;\
#\
#-------------------------------------------------------------------------DEBUG SEttings\
\
# ------so_feiertag setzen        wird dann entsprechend gesetzt wenn feiertag dazukommt ;;\
if  ($wday == 0) { $so_feiertag  =1};;    #wday 0 ist So!\
\
#--------------------------------------------------------------------start cases!!!!\
\
if   #Urlaub !!\
       (    Value("Heizung_Control") eq"Urlaub") \
       {;;\
        $case = "Urlaub";;\
  #      fhem("set KH_HZ_Mode_TagNachtAbsenk Urlaub".$debug_subset);;\
   #     fhem("setreading  KH_HZ_Mode_TagNachtAbsenk 0_$SELF Urlaub".$debug_subset);;\
      }\
\
#---------------\
    elsif  #WE-Sonntag !!\
            # tagsueber keine Absenkung -> hier geregelt da temp änderung das hier triggert\
            #  \
           (    $so_feiertag == 1   #morgens absenkung muss ueber Temp modul gesteuert werden \
              &&      $hour  <=  Value("KH_Desired_Sonntag_Absenkung_End")   #und hour variable \
            )\
              {;;\
               $case ="1Nachts-NachtAbsenkung";;\
#              fhem("set KH_HZ_Mode_TagNachtAbsenk 1Nachts-NachtAbsenkung".$debug_subset);;\
  #             \
}\
#--------------------\
\
elsif          # sonntag bis abends \
               (        $so_feiertag == 1 \
                    &&  $hour  >  Value("KH_Desired_Sonntag_Absenkung_End")\
                    &&  $hour <  Value("KH_Desired_Nacht_Start")\
               )\
               { ;;\
               $case ="SonnFeiertagKeinAbsenk";;\
#                fhem("set KH_HZ_Mode_TagNachtAbsenk SonnFeiertagKeinAbsenk".$debug_subset);;\
                  Log 1,"DEBUGGING Sonntag  so_feier>$so_feiertag <<--woend>$WOEND<";;\
               }\
#------------\
\
     elsif     ( #Nachts  Variable !!\
       (    $hour >= Value("KH_Desired_Nacht_Start")\
         || $hour <= Value("KH_Desired_Nacht_End") \
       )\
    ) {;;\
               $case ="1Nachts-NachtAbsenkung";;\
        #  fhem("set KH_HZ_Mode_TagNachtAbsenk ".$case.$debug_subset);;\
}\
   \
      elsif ( #Tag-Morgens   zwischen \
                  $hour >  Value("KH_Desired_Nacht_End")\
             &&   $hour < Value("KH_Desired_Tag_Absenkung_Start") \
            )  {;;\
               $case ="2Morgens_vor_Absenkung";;\
            #    fhem("set KH_HZ_Mode_TagNachtAbsenk 2Morgens_vor_Absenkung".$debug_subset);;\
               }\
  \
     elsif (   #Absenkung!\
                  $hour >= Value("KH_Desired_Tag_Absenkung_Start")\
             &&   $hour <= Value("KH_Desired_Tag_Absenkung_End") \
            ){;;\
               $case ="3Absenkung-Mittags";;\
          #     fhem("set KH_HZ_Mode_TagNachtAbsenk 3Absenkung-Mittags".$debug_subset);;\
            }\
\
     elsif (   #Tag-MittagAbend\
                  $hour > Value("KH_Desired_Tag_Absenkung_End")\
             &&   $hour < Value("KH_Desired_Nacht_Start") \
            ) {;;\
               $case ="4Tag-MittagAbend";;\
    #           fhem("set KH_HZ_Mode_TagNachtAbsenk 4Tag-MittagAbend".$debug_subset);;\
              }\
           \
    else \
            {;;\
               $case ="5else->";;\
   #            fhem("set KH_HZ_Mode_TagNachtAbsenk 5else".$debug_subset);;\
              };;\
\
fhem("set KH_HZ_Mode_TagNachtAbsenk ".$case.$debug_subset);;\
fhem("setreading KH_HZ_Mode_TagNachtAbsenk 0".$case."-".$hms);;\
fhem("setreading KH_HZ_Mode_TagNachtAbsenk 0_CK1_prod ".$case.$debug_subset);;\
#das entspricht oben und wird oben rausgenommen\
fhem("setreading KH_HZ_Mode_TagNachtAbsenk 0_CK_0 ".$case."-".$hms);;\
\
}

setstate N_KH_HZ_Mode_create_status_Test_inactive inactive
setstate N_KH_HZ_Mode_create_status_Test_inactive 2018-10-15 15:58:11 state inactive



notiify device:
defmod DEBUG_TR_GLOBAL dummy
attr DEBUG_TR_GLOBAL alias 1_DEB_TR_GLOBAL
attr DEBUG_TR_GLOBAL room 01_Stromstatus,T_Testlab,Z_Control,debug
attr DEBUG_TR_GLOBAL webCmd 0:1:2:3:4:5:6:7

setstate DEBUG_TR_GLOBAL 4
setstate DEBUG_TR_GLOBAL 2018-10-15 15:31:48 state 4



ps list -r hat nur das device geliefert nicht das trigger device

Das bringt mir nichts. Ich brauche die RAW Definition
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

riker1

Hi Cooltux,
habe versucht es nochmal nachzustellen.

schritte:
inactive mal mit set befehl mal mit dem dialog set xxxx inactive.

trigger auslösen. state bleibt bei inactive.

dann shut down +restart

trigger ausgelöst, state war immer noch inactive aber es wurde das notify getriggert.

dann das ganze nochmal über start stop des service.

gleiches resultat:

siehe eintrage am device:

setstate N_KH_HZ_Mode_create_status_Test_inactive 2018-10-15 16:19:20
setstate N_KH_HZ_Mode_create_status_Test_inactive 2018-10-15 16:17:35 state inactive


16:17 inactive, und um 16:19 wurde getriggert

Hoffe das hilft.

Danke Thomas

FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

CoolTux

Hallo Thomas,

Leider kommen wir so nicht zusammen. Bei Dir geht es nicht. Bei mir geht es. Wer macht jetzt also was falsch oder anders?
So lange ich keine das Definition von deinen Devices habe kann und werde ich da nichts machen können
Tut mir leid.


Grüße
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

riker1

Zitat von: CoolTux am 15 Oktober 2018, 16:07:40
Das bringt mir nichts. Ich brauche die RAW Definition

Hi
das sind doch die RAW Daten, oder was fehlt ?.

Ein einfaches Device und ein Dummy als Trigger.Triggere manuell mit dem webcmd des dummys
mehr ist es nicht mehr.

Habe versucht das einzuschränken und kann es bei mir damit nachstellen

FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox