HM-OU-LED16 kein state mehr nach update

Begonnen von Rampler, 29 August 2015, 08:47:28

Vorheriges Thema - Nächstes Thema

Rampler

Hallo zusammen,
nach heutigem update funktioniert meine 16 fach LED Anzeige nicht mehr. Kann keine Leds mehr ansprechen, auch der Status fehlt...
Guckst Du:
Internals:
   DEF        1B254C10
   NAME       FL.EG.anzeige.led16
   NR         287
   NTFY_ORDER 50-FL.EG.anzeige.led16
   STATE      unknown
   TYPE       CUL_HM
   chanNo     10
   device     FL.EG.anzeige
   Readings:
     2015-08-29 08:11:43   CommandAccepted yes
     2015-07-03 08:58:41   R-sign          off
     2015-07-06 00:44:10   RegL_01:        08:00 00:00
     2015-08-29 08:11:43   color           unknown
     2015-08-29 08:11:43   recentStateType ack
     2015-08-29 08:11:43   state           unknown
   Helper:
     Role:
       chn        1
Attributes:
   alias      Adapter unten
   devStateIcon orange:light_led@orange red:light_led@red green:light_led@green off:light_led@grey
   group      Display
   icon       icoLicht
   model      HM-OU-LED16
   peerIDs    00000000,
   room       Flur
   sortby     16
   verbose    2
   webCmd     led red:led green:led orange:led off



3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Rampler

Nur zum Verständnis, die Anzeige funktioniert (setzten der leds, via notifys), lediglich die Anzeige in FHEM funktioniert nicht.
Kann das jemand bestätigen ?
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

RadioJames

Nein, kann ich nicht betätigen. Sowohl das Gerät selbst als auch die Darstellung im Web Frontend funktionieren nach einem Update heute morgen.
There are 10 kind of people. Those who understand binary and those who don't.

Rampler

Zitat von: RadioJames am 29 August 2015, 14:48:00
Nein, kann ich nicht betätigen. Sowohl das Gerät selbst als auch die Darstellung im Web Frontend funktionieren nach einem Update heute morgen.

DANKE, dann werde ich mal testhalber neu pairen ...
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Rampler

Hab nun mal neu gepairt, leider ohne Erfolg..
Sieht der Profi da mehr ?
2015.08.29 15:54:36 5: CUL_HM FL.EG.anzeige protEvent:CMDs_pending pending:1
2015.08.29 15:54:36 5: Triggering FL.EG.anzeige.led12 (1 changes)
2015.08.29 15:54:36 5: Notify loop for FL.EG.anzeige.led12 set_led orange
2015.08.29 15:54:36 5: HMLAN_Send:  HMLAN1 S:S79BD0C60 stat:  00 t:00000000 d:01 r:79BD0C60 m:2C A011 29A083 1B254C 800C03
2015.08.29 15:54:36 5: CUL_HM FL.EG.anzeige protEvent:CMDs_processing... pending:0
2015.08.29 15:54:36 5: HMLAN/RAW: /E29A083,0000,33235CE4,FF,FFAF,2CA01129A0831B254C800C03

2015.08.29 15:54:36 5: HMLAN_Parse: HMLAN2 R:E29A083   stat:0000 t:33235CE4 d:FF r:FFAF     m:2C A011 29A083 1B254C 800C03
2015.08.29 15:54:36 5: HMLAN2 dispatch A0C2CA01129A0831B254C800C03::-81:HMLAN2
2015.08.29 15:54:36 4: HTTP FHEMWEB:192.168.1.22:49709 GET /fhem?detail=FL.EG.anzeige.led12
2015.08.29 15:54:36 4: 12291:FHEMWEB:192.168.1.22:49709: /fhem?detail=FL.EG.anzeige.led12 / RL:5091 / text/html; charset=UTF-8 / Content-Encoding: gzip
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Rampler

#5
Also ein set xxx led off funktioniert...
Auch ein set xxx led red funktioniert ...

set xxx led green oder orange funktionieren nicht ...

Die Anzeige selbst (also die Hardware zeigt die Led's korrekt an, lediglich die Anzeige im FHEM zeigt State unkown)

Habe vor langer Zeit mal die RAW Messages aufgezeichnet, weiß nun nicht mehr wie das geht, finde auch nichts..
Kann mir jemand mal kurz auf die Sprünge helfen .. ?

@RadioJames
Was hast Du denn für eine Firmware, evtl. ist das die Ursache .. ?
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Rampler

evtl. helfen auch diese Fehlermeldungen:
PERL WARNING: Use of uninitialized value $regReq in string eq at ./FHEM/10_CUL_HM.pm line 3354.
2015.08.29 16:31:25 1: PERL WARNING: Use of uninitialized value $regName in hash element at ./FHEM/10_CUL_HM.pm line 6707.
2015.08.29 16:31:25 1: PERL WARNING: Use of uninitialized value $addr in numeric lt (<) at ./FHEM/10_CUL_HM.pm line 6720.
2015.08.29 16:31:32 1: PERL WARNING: Argument "state" isn't numeric in numeric lt (<) at ./FHEM/10_CUL_HM.pm line 6720.
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

martinp876

machst du ein get ... reg oder regVal ohne Parameter?

Rampler

#8
Zitat von: martinp876 am 29 August 2015, 19:27:26
machst du ein get ... reg oder regVal ohne Parameter?

In beiden Fällen sagt FHEM: Value not captured  (was aber IMHO normal ist)

PS: Antwort #5 umschreibt das Problem am besten ;)
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Rampler

@Martin,
brauchst du noch irgendwelche Daten zur Fehleranalyse ?
3 HMUART (2 via ESP8266), 1 DUOFERN, 12 ESP8266, SolvisBen, GoodWE WR, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

martinp876

ich denke es ist ein Problem unterschiedlicher Perl versionen.
ich habe eine Abfrage etwas "genauer" gemacht. Probier einmal

MEitelwein


MEitelwein

Habe jetzt mal den code durchsucht und festgestellt, dass in 10_CUL_HM.pl (v9168) im Code ab Zeile 2284:

      if ($mh{md} eq "HM-OU-LED16") {
        #special: all LEDs map to device state
        my $devState = ReadingsVal($mh{devN},"color","00000000");
        if($parse eq "powerOn"){# reset LEDs after power on
          CUL_HM_PushCmdStack($mh{devH},'++A011'.$ioId.$mh{src}."8100".$devState);
          CUL_HM_ProcessCmdStack($mh{devH});
          # no event necessary, all the same as before
        }
        else {# just update datafields in storage
          my %colTbl=("00"=>"off","01"=>"red","10"=>"green","11"=>"orange");
          if (@mI > 8){#status for all channel included
            # open to decode byte $mI[4] - related to backlight? seen 20 and 21
            my $lStat = join("",@mI[5..8]); # all LED status in one long
            my @leds = reverse(unpack('(A2)*',sprintf("%032b",hex($lStat))));
            $_ = $colTbl{$_} foreach (@leds);
            for(my $cCnt = 0;$cCnt<16;$cCnt++){# go for all channels
              my $cH = $modules{CUL_HM}{defptr}{$mh{src}.sprintf("%02X",$cCnt+1)};
              next if (!$cH);
              if (ReadingsVal($cH->{NAME},"state","") ne $leds[$cCnt]) {
                push @evtEt,[$cH,1,"color:$leds[$cCnt]"];
                push @evtEt,[$cH,1,"state:$leds[$cCnt]"];
              }
            }
            push @evtEt,[$mh{devH},1,"color:$lStat"];
            push @evtEt,[$mh{devH},1,"state:$lStat"];
          }
          else{# branch can be removed if message is always that long
            my $bitLoc = ($mh{chn}-1)*2;#calculate bit location
            my $mask = 3<<$bitLoc;
            my $value = sprintf("%08X",(hex($devState) &~$mask)|($msgState<<$bitLoc));
            push @evtEt,[$mh{devH},1,"color:$value"];
            push @evtEt,[$mh{devH},1,"state:$value"];
            if (!$mh{cHash}{helper}{role}{dev}){
              my $actColor = $colTbl{$msgState};
              $actColor = "unknown" if(!$actColor);
              push @evtEt,[$mh{cHash},1,"color:$actColor"];
              push @evtEt,[$mh{cHash},1,"state:$actColor"];
            }
           }
        }


heute folgende Farbtabelle drinsteht:
my %colTbl=("00"=>"off","01"=>"red","10"=>"green","11"=>"orange");

In alten (funktionierenden) Releases stand hier noch eine zweite Farbtabelle im unteren Teil der Abfrage, die eine andere Farbcodierung hatte:

          else{# branch can be removed if message is always that long
            my $bitLoc = ($msgChn-1)*2;#calculate bit location
            my $mask = 3<<$bitLoc;
            my $value = sprintf("%08X",(hex($devState) &~$mask)|($msgState<<$bitLoc));
            push @evtEt,[$mh{shash},1,,"color:$value"];
            push @evtEt,[$mh{shash},1, "state:$value"];
            if ($chnHash){
               $mh{shash} = $chnHash;
               my %colorTable=("00"=>"off","01"=>"red","02"=>"green","03"=>"orange");
               my $actColor = $colorTable{$msgState};
               $actColor = "unknown" if(!$actColor);
              push @evtEt,[$mh{shash},1,"color:$actColor"];
              push @evtEt,[$mh{shash},1,"state:$actColor"];
            }
           }


Wenn ich den Code nun folgendermaßen abändere, wird der LED state auch für Grün oder Orange wieder richtig gesetzt:

          else{# branch can be removed if message is always that long
            my $bitLoc = ($mh{chn}-1)*2;#calculate bit location
            my $mask = 3<<$bitLoc;
            my $value = sprintf("%08X",(hex($devState) &~$mask)|($msgState<<$bitLoc));
            push @evtEt,[$mh{devH},1,"color:$value"];
            push @evtEt,[$mh{devH},1,"state:$value"];
            if (!$mh{cHash}{helper}{role}{dev}){
              my %colTbl2=("00"=>"off","01"=>"red","02"=>"green","03"=>"orange");
              my $actColor = $colTbl2{$msgState};
              $actColor = "unknown" if(!$actColor);
              push @evtEt,[$mh{cHash},1,"color:$actColor"];
              push @evtEt,[$mh{cHash},1,"state:$actColor"];
            }
           }
        }


Allerdings taucht jetzt wieder die Meldung

2015.08.30 16:47:07.306 2: CUL_HM protstate undeviced hash to set CMDs_done

auf.

Ich verstehe nicht, warum 2 unterschiedliche Farbkodierungen verwendet werden. Setze ich auch die obere Tabelle neu mit "02"=>"green", usw., verschwindet der Hash Fehler im Log und ich kann keine weitere Fehlfunktion beobachten. Allerdings sind im Code schon seit langer Zeit 2 Farbkodierungen enthalten - Martin, kannst Du das bitte mal prüfen?

martinp876

probiere noch einmal mit der  heutigen Version

MEitelwein

Mit der v9171 sind die LED states wieder korrekt. Allerdings tauchte wieder das

2015.08.30 17:38:57.883 2: CUL_HM protstate undeviced hash to set CMDs_done

auf. Ich kann nicht sagen ob es miteinander zusammenhängt.