Zigbee Gateways Conbee und Raspbee mit deConz und Phoscon in Fhem einbinden

Begonnen von maddinthebrain, 04 Januar 2019, 10:41:24

Vorheriges Thema - Nächstes Thema

P.A.Trick

Nein das reading habe ich auch nicht. Zum reachable: viel zu ungenau um es wirklich einzusetzen! Vielleicht muss Andre da noch etwas ins Modul einbauen, damit das reading angezeigt wird!?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

popy

Danke für die Info.
@justme1968 Andre sollte das neue reading auftauchen oder gibt es da noch ein Todo?

Danke pOpY

sunrise

Hallo zusammen!

Wie sieht bei Euch dies grafische Oberfläche zu Eurem in fhem eingebundenen zigbee-Netzwerk eigentlich aus? Habt Ihr Euch dazu etwas Schickes gestrickt, was Ihr hier einmal zeigen könntet? Gibt es evtl. Vorlagen dazu? Die Oberfläche von phiscon finde ich zwar gut, aber um das ganze Haus mit anderen Dingen neben zigbee "darzustellen", ist fhem natürlich besser geeignet. ;) Danke für Eure Rückmeldungen.
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

justme1968

neue readings tauchen nicht automatisch auf.

seit letzter woche gibt es zwar readingsList attribut für sensoren mit dem man zusätzliche readings konfigurieren kann ohne das ich code ändern muss. aber...

das gibt es erstmal nur für sensoren und leider wurde der lastseen wert nicht in state gesteckt sondern direkt in den device knoten. und readingsList würde nicht helfen.

leider machen die deConz leute immer mehr ihr eigenes ding und folgen nicht mehr unbedingt den ideen aus dem hue api. ja, manchmal ist das nötig um das ganze voran zu bringen... das geht aber auch kompatibler.

wie auch immer... ab morgen gibt sollte es lastseen als reading und lastannounced als internal geben.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

popy


popy

Update gemacht jetzt gerade und bei einem HUE Dimmer mal drauf gedruckt.
Leider kein lastseen dazugekommen.

Wenn ich den Abfrage per curl kommt ein last seen:


{
   "config": {
      "battery": 100,
      "group": "21259",
      "on": true,
      "reachable": true
   },
   "ep": 2,
   "etag": "xxxxxxxxxx",
   "lastseen": "2020-10-08T19:18Z",
   "manufacturername": "Philips",
   "mode": 1,
   "modelid": "RWL021",
   "name": "Dimmschalter Wohnzimmer Küche",
   "state": {
      "buttonevent": 1002,
      "eventduration": 1,
      "lastupdated": "2020-10-08T19:17:43.115"
   },
   "swversion": "6.1.1.28573",
   "type": "ZHASwitch",
   "uniqueid": "xxxxxxxxxxxxxxxxxxxxx"
}


Mache ich was falsch?

Danke

justme1968

sorry. hatte blödsinn eingecheckt. ab morgen sollte es wirklich gehen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

popy

Zitat von: justme1968 am 09 Oktober 2020, 13:12:51
sorry. hatte blödsinn eingecheckt. ab morgen sollte es wirklich gehen.

Danke!
Bei den Ikea Rollos tauchte nun das lastseen auf, nicht aber bei den Dimmern.

Nun ist lastupdated & lastupdated_local leer!?
Es passiert so:


  • F5, Hue dimmer drücken -> lastupdated & _local sind korrekt gefüllt
  • warten bis battery message kommt -> dann sind die leer

hier mit verbose 5:


2020.10.10 14:22:35 4: parse status message for DIM_WZ_Dimmer_Eingang_Kueche
2020.10.10 14:22:35 4: DIM_WZ_Dimmer_Eingang_Kueche: use offsetUTC 7200 from bridge
2020.10.10 14:22:35 4: DIM_WZ_Dimmer_Eingang_Kueche: lastupdated: 2020-10-10 12:22:35, hash->{lastupdated}:  2020-10-10 12:20:39, lastupdated_local: 2020-10-10 14:22:35, offsetUTC: 7200
2020.10.10 14:22:35 4: parse status message for DIM_WZ_Dimmer_Eingang_Kueche
2020.10.10 14:22:35 4: DIM_WZ_Dimmer_Eingang_Kueche: use offsetUTC 7200 from bridge
2020.10.10 14:22:35 4: DIM_WZ_Dimmer_Eingang_Kueche: lastupdated: 2020-10-10 12:22:35, hash->{lastupdated}:  2020-10-10 12:22:35, lastupdated_local: 2020-10-10 14:22:35, offsetUTC: 7200
2020.10.10 14:24:02 4: parse status message for DIM_WZ_Dimmer_Eingang_Kueche
2020.10.10 14:24:02 4: DIM_WZ_Dimmer_Eingang_Kueche: use offsetUTC 7200 from bridge
2020.10.10 14:24:04 4: parse status message for DIM_WZ_Dimmer_Eingang_Kueche
2020.10.10 14:24:04 4: DIM_WZ_Dimmer_Eingang_Kueche: use offsetUTC 7200 from bridge
2020.10.10 14:24:18 4: parse status message for DIM_WZ_Dimmer_Eingang_Kueche
2020.10.10 14:24:18 4: DIM_WZ_Dimmer_Eingang_Kueche: use offsetUTC 7200 from bridge
2020.10.10 14:26:36 4: parse status message for DIM_WZ_Dimmer_Eingang_Kueche
2020.10.10 14:26:36 4: DIM_WZ_Dimmer_Eingang_Kueche: lastupdated: , hash->{lastupdated}:  2020-10-10 12:22:35, lastupdated_local: , offsetUTC: 0


Hier mit verbose 5 auch bei der Bridge:


2020.10.10 14:31:28 5: deCONZ: websocket data: $VAR1 = {
          'id' => '35',
          'uniqueid' => 'xxxxxxxx',
          'r' => 'sensors',
          'config' => {
                        'on' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                        'battery' => 100,
                        'group' => '21259',
                        'reachable' => $VAR1->{'config'}{'on'}
                      },
          'e' => 'changed',
          't' => 'event'
        };

2020.10.10 14:31:28 4: parse status message for DIM_WZ_Dimmer_Eingang_Kueche
2020.10.10 14:31:28 4: DIM_WZ_Dimmer_Eingang_Kueche: lastupdated: , hash->{lastupdated}:  2020-10-10 12:31:24, lastupdated_local: , offsetUTC: 0
2020.10.10 14:31:34 5: deCONZ: websocket data: $VAR1 = {
          't' => 'event',
          'e' => 'changed',
          'state' => {
                       'status' => 0,
                       'lastupdated' => '2020-10-10T12:31:34.670'
                     },
          'r' => 'sensors',
          'uniqueid' => 'xxxx ganz was komisches, eher ein string als eine MAC',
          'id' => '37'
        };


Nach der battery Meldung sind die Lastupdated & _local Einträge des Dimmers weg.
Bin mal auf einer früheren Revision (# $Id: 31_HUEDevice.pm 21837 2020-05-02 08:59:46Z justme1968 $) zurück.
Auch hier ist nach der Battery Meldung das lastupdated & _local leer!? (dürfte ein anderer Bug sein, ev fehlt einfach ein, wenn lastupdated leer -> ignorieren?).


Brauchst du noch Logs um das zu finden?

pOpY

popy

Durch den Bug werden die letzten Tastendrücke eines Dimmers nach einem fhem Neustart wieder getriggert  :(
Genau das habe ich mal mit dem lastupdated_local behoben.

Hast du eine Idee?
Vermute dass wirklich einfach ein if fehlt?

Danke

justme1968

an lastupdated sollte sich eigentlich nichts geändert haben. ich sehe auch auf den ersten blick kein problem.

da ich keine hue fernbedienung/taster in fhem habe und der patch von dir war findest du das vermutlich eher als ich.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

popy

Zitat von: justme1968 am 10 Oktober 2020, 16:49:56
an lastupdated sollte sich eigentlich nichts geändert haben. ich sehe auch auf den ersten blick kein problem.

da ich keine hue fernbedienung/taster in fhem habe und der patch von dir war findest du das vermutlich eher als ich.

Hmm, mein Problem ist dass sich meine Perl Kentnisse sehr in Grenzen halten und du viel mehr Erfahrung hast als ich  :o

Es schaut so aus also genau bei der Message:


2020.10.10 14:31:28 5: deCONZ: websocket data: $VAR1 = {
          'id' => '35',
          'uniqueid' => 'xxxxxxxx',
          'r' => 'sensors',
          'config' => {
                        'on' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
                        'battery' => 100,
                        'group' => '21259',
                        'reachable' => $VAR1->{'config'}{'on'}
                      },
          'e' => 'changed',
          't' => 'event'
        };

2020.10.10 14:31:28 4: parse status message for DIM_WZ_Dimmer_Eingang_Kueche
2020.10.10 14:31:28 4: DIM_WZ_Dimmer_Eingang_Kueche: lastupdated: , hash->{lastupdated}:  2020-10-10 12:31:24, lastupdated_local: , offsetUTC: 0


das Problem Aufttritt.

Kannst du im Code was erkennen warum lastupdated & lastupdated_local geleert werden könnten?

Danke

popy

Habs gefunden, weiß nur nicht wie ich es lösen soll.

Hier der Code mit Debugs und wo es passiert:


   my $lastupdated = '';
    my $lastupdated_local = '';
    my $offset = 0;
    Log3 $name, 4, "$name: T0 lastupdated: $lastupdated";
    if( my $state = $result->{state} ) {
      $lastupdated = $state->{lastupdated};
      Log3 $name, 4, "$name: T1 lastupdated: $lastupdated";
      ...
    }

    ...
    Log3 $name, 4, "$name: lastupdated: $lastupdated, hash->{lastupdated}:  $hash->{lastupdated}, lastupdated_local: $lastupdated_local, offsetUTC: $offset";
    #Log3 $name, 5, "$name: ". Dumper $result if($HUEDevice_hasDataDumper);

    $hash->{lastupdated} = $lastupdated;
    Log3 $name, 4, "$name: T99 lastupdated: $lastupdated";
    $hash->{lastupdated_local} = $lastupdated_local;


Problem ist dass er gar nicht in das "state" if kommt, da in diesem event kein "state" enthalten ist:

if( my $state = $result->{state} ) {

Dadurch ist $lastupdated = '' und das wird dann auch so gesetzt.

Hier das Log:


2020.10.10 17:41:33 4: parse status message for DIM_WZ_Dimmer_Eingang_Kueche
2020.10.10 17:41:33 4: DIM_WZ_Dimmer_Eingang_Kueche: T0 lastupdated:
2020.10.10 17:41:33 4: DIM_WZ_Dimmer_Eingang_Kueche: lastupdated: , hash->{lastupdated}:  2020-10-10 15:38:09, lastupdated_local: , offsetUTC: 0
2020.10.10 17:41:33 4: DIM_WZ_Dimmer_Eingang_Kueche: T99 lastupdated:


Mein Fix damals war noch mit der HUE Bridge und hat damit nichts zu tun, er kommt ja gar nicht zu dem code.

Meiner Meinung nach sollte geprüft werden ob $lastupdated gesetzt ist (einfach ins if von state schieben?) und sonst nicht setzen oder das if verändern was den state prüft.
Du kennst das Modul besser, ist es per design gewollt dass diese "config" Blöcke ignoriert werden udn nur bei state aktualisiert wird?

pOpY


popy

@justme1968 / Andre:
Habs gefixt, aus:


    $hash->{lastupdated} = $lastupdated;
    $hash->{lastupdated_local} = $lastupdated_local;


Mache:


    $hash->{lastupdated} = $lastupdated if( $lastupdated ne '' );
    $hash->{lastupdated_local} = $lastupdated_local  if( $lastupdated_local ne '' );


Dann wirds nicht mehr gelöscht  ;)
keine Ahnung ob das korrekt ist!?

pOpY

FunkOdyssey

Ich begrüße es, dass man den Status in lastseen nun sehen kann, aber ich bin gar nicht davon begeistert, dass sich nun sämtliche HUEDEVICE-Logs damit im Minutentakt füllen.

Kann man da noch etwas machen? Ich will ungern alle Filelogs explizit auf erlaubte Readings umstellen.

popy

Zitat von: FunkOdyssey am 12 Oktober 2020, 17:12:39
Ich begrüße es, dass man den Status in lastseen nun sehen kann, aber ich bin gar nicht davon begeistert, dass sich nun sämtliche HUEDEVICE-Logs damit im Minutentakt füllen.

Kann man da noch etwas machen? Ich will ungern alle Filelogs explizit auf erlaubte Readings umstellen.

verbose 0 -> solved  8) ;D