Läuft: zigbee2mqtt mit MQTT2_SERVER und MQTT2_DEVICE

Begonnen von supernova1963, 23 September 2018, 19:17:21

Vorheriges Thema - Nächstes Thema

Beta-User

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Neuhier

OK, kommt wieder offline im Log, alle 5 sek.
Also kein Unterschied zu /dev/ttyACM1.

Beta-User

Gut. Und was ist usb-mäßig auf der fhem-Seite eingestellt?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Neuhier

#93
Der Stick, 2 Sduino.
Oder wie meinst Du das?
Der Stick ist per by-id eingerichtet und auch nach dem Reboot Alles beim Alten.

Stunden und Tage später........
Hatte ja das in der Yaml: include_device_information: true
Auskommentiert, rebootet und ....
Rennt wie Tier !

Danke nochmals an Alle, die mir dabei geholfen haben. (Y)


Beta-User

#95
Der link ersetzt aber nicht die drei Liste, um die Behauptung zu belegen, dass fälschlicherweise bei mehreren aquara nur die Daten von einem ankommen, und zwar bei allen...

Dann wäre noch eine info hilfreich, wie die devices angelegt worden sind (copy?) und ob fhem dazwischen neu gestartet wurde. (Dazu gab es hier schon Hinweise, dass dieses Verhalten nach einem reload des -device-Moduls bzw Neustart von fhem dann OK ist und man die clone mit raw anlegen sollte, um es von vornherein zu vermeiden...)

Aber wie immer gilt: ohne qualifizierte Info kann man schlecht helfen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Neuhier

Welche Listen genau brauchst Du?
configuration.yaml
homeassistant: false
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://localhost'
  client_id: zigbee_pi
  user: xxx
  password: xxxxxxxx
  lwm: online
serial:
  port: >-
    /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124xxxx2022DF5-if00
devices:
  '0x00158d0001d38978':
    friendly_name: '0x00158d0001d38978'
    retain: false
  '0x00158d0001d6bdd2':
    friendly_name: '0x00158d0001d6bdd2'
    retain: false
  '0x00158d0001d6d089':
    friendly_name: '0x00158d0001d6d089'
    retain: false
  '0x00158d0001d3887b':
    friendly_name: '0x00158d0001d3887b'
    retain: false


List mqtt2_fhem_server
Internals:
   CONNECTS   3
   DEF        1883 global
   FD         46
   NAME       mqtt2_fhem_server
   NR         257
   PORT       1883
   STATE      Initialized
   TYPE       MQTT2_SERVER
   READINGS:
     2018-11-04 23:38:26   RETAIN          {"zigbee2mqtt/bridge/state":"online"}
     2018-11-04 23:38:26   nrclients       1
     2018-11-04 22:01:15   state           Initialized
   clients:
     mqtt2_fhem_server_127.0.0.1_55064 1
   retain:
     zigbee2mqtt/bridge/state:
       ts         1541371106.67213
       val        online
Attributes:
   autocreate 1
   room       MQTT2


List mqtt2_fhem_server_127.0.0.1_55064
Internals:
   AuthenticatedBy allowed_WEB
   AuthenticatedUser xxx
   BUF       
   FD         43
   NAME       mqtt2_fhem_server_127.0.0.1_55064
   NR         522
   PEER       127.0.0.1
   PORT       55064
   SNAME      mqtt2_fhem_server
   SSL       
   STATE      Connected
   TEMPORARY  1
   TYPE       MQTT2_SERVER
   WBCallback
   cflags     230
   cid        zigbee_pi
   keepalive  60
   lastMsgTime 1541403020.59488
   lwt        zigbee2mqtt/bridge/state:offline
   protoNum   4
   protoTxt   MQTT
   usr        xxx
   READINGS:
     2018-11-04 23:38:26   state           Connected
   subscriptions:
     zigbee2mqtt/+/+/set 1541371106.69976
     zigbee2mqtt/+/set 1541371106.69926
     zigbee2mqtt/bridge/config/+ 1541371106.70002
     zigbee2mqtt/bridge/networkmap 1541371106.70044
Attributes:
   room       hidden


List mqtt2_device ( nur 1 Sensor rausgesucht):
Internals:
   DEVICETOPIC 0x00158d0001d6bdd2
   IODev      mqtt2_fhem_server
   LASTInputDev mqtt2_fhem_server
   MSGCNT     75
   NAME       0x00158d0001d6bdd2
   NR         261
   STATE      ???
   TYPE       MQTT2_DEVICE
   mqtt2_fhem_server_MSGCNT 75
   mqtt2_fhem_server_TIME 2018-11-05 08:14:04
   READINGS:
     2018-11-05 08:14:03   battery         23.00
     2018-11-05 08:14:03   device_friendlyName 0x00158d0001d6bdd2
     2018-11-05 08:14:03   device_ieeeAddr 0x00158d0001d6bdd2
     2018-11-05 08:14:03   device_manufId  4151
     2018-11-05 08:14:03   device_manufName LUMI
     2018-11-05 08:14:03   device_modelId  lumi.weather
     2018-11-05 08:14:03   device_nwkAddr  15003
     2018-11-05 08:14:03   device_powerSource Battery
     2018-11-05 08:14:03   device_status   online
     2018-11-05 08:14:03   device_type     EndDevice
     2018-11-05 08:14:03   humidity        50.06
     2018-11-05 08:14:03   linkquality     76
     2018-11-05 08:14:03   pressure        991.1
     2018-11-05 08:14:03   temperature     21.88
     2018-11-05 08:14:03   voltage         2945
Attributes:
   IODev      mqtt2_fhem_server
   alias      AqaraK
   event-min-interval 300
   model      WSDCGQ11LM
   readingList zigbee_pi:zigbee2mqtt/0x00158d0001d6bdd2:.* { json2nameValue($EVENT) }
   room       MQTT2


List zigbee_pi
Internals:
   CID        zigbee_pi
   DEF        zigbee_pi
   DEVICETOPIC zigbee_pi
   IODev      mqtt2_fhem_server
   LASTInputDev mqtt2_fhem_server
   MSGCNT     326
   NAME       zigbee_pi
   NR         258
   STATE      online
   TYPE       MQTT2_DEVICE
   mqtt2_fhem_server_MSGCNT 326
   mqtt2_fhem_server_TIME 2018-11-05 08:33:45
   READINGS:
     2018-11-05 08:33:45   battery         42.00
     2018-11-05 08:33:45   device_friendlyName 0x00158d0001d38978
     2018-11-05 08:33:45   device_ieeeAddr 0x00158d0001d38978
     2018-11-05 08:33:45   device_manufId  4151
     2018-11-05 08:33:45   device_manufName LUMI
     2018-11-05 08:33:45   device_modelId  lumi.weather
     2018-11-05 08:33:45   device_nwkAddr  9284
     2018-11-05 08:33:45   device_powerSource Battery
     2018-11-05 08:33:45   device_status   online
     2018-11-05 08:33:45   device_type     EndDevice
     2018-11-05 08:33:45   humidity        47.36
     2018-11-05 08:33:45   linkquality     44
     2018-11-04 22:00:31   message         device incoming
     2018-11-04 21:40:40   message_1_friendly_name 0x00158d0001d38978
     2018-11-04 21:40:40   message_1_ieeeAddr 0x00158d0001d38978
     2018-11-04 21:40:40   message_1_model WSDCGQ11LM
     2018-11-04 21:40:40   message_1_type  EndDevice
     2018-11-04 21:40:40   message_2_friendly_name 0x00158d0001d6d089
     2018-11-04 21:40:40   message_2_ieeeAddr 0x00158d0001d6d089
     2018-11-04 21:40:40   message_2_model WSDCGQ11LM
     2018-11-04 21:40:40   message_2_type  EndDevice
     2018-11-04 21:40:40   message_3_friendly_name 0x00158d0001d6bdd2
     2018-11-04 21:40:40   message_3_ieeeAddr 0x00158d0001d6bdd2
     2018-11-04 21:40:40   message_3_model WSDCGQ11LM
     2018-11-04 21:40:40   message_3_type  EndDevice
     2018-11-04 21:40:40   message_4_friendly_name 0x00158d0001d3887b
     2018-11-04 21:40:40   message_4_ieeeAddr 0x00158d0001d3887b
     2018-11-04 21:40:40   message_4_model WSDCGQ11LM
     2018-11-04 21:40:40   message_4_type  EndDevice
     2018-11-05 08:33:45   pressure        991
     2018-11-04 23:38:26   state           online
     2018-11-05 08:33:45   temperature     23.97
     2018-11-04 22:00:31   type            pairing
     2018-11-05 08:33:45   voltage         2985
Attributes:
   IODev      mqtt2_fhem_server
   event-min-interval 300
   model      CC2531
   readingList zigbee_pi:zigbee2mqtt/bridge/state:.* state
zigbee_pi:zigbee2mqtt/0x00158d0001d38978:.* { json2nameValue($EVENT) }
zigbee_pi:zigbee2mqtt/0x00158d0001d6d089:.* { json2nameValue($EVENT) }
zigbee_pi:zigbee2mqtt/0x00158d0001d6bdd2:.* { json2nameValue($EVENT) }
zigbee_pi:zigbee2mqtt/0x00158d0001d3887b:.* { json2nameValue($EVENT) }
zigbee_pi:zigbee2mqtt/bridge/log:.* { json2nameValue($EVENT) }
   room       MQTT2
   setList    permit_join:true,false zigbee2mqtt/bridge/config/permit_join $EVTPART1
remove:textField zigbee2mqtt/bridge/config/remove $EVTPART1
log_level:debug,info,warn,error zigbee2mqtt/bridge/config/log_level $EVTPART1
rename:textField zigbee2mqtt/bridge/config/rename  {"old":"$EVTPART1","new":"$EVTPART2"}
network_map:raw,graphviz zigbee2mqtt/bridge/networkmap  $EVTPART1
devicelist:noArg zigbee2mqtt/bridge/config/devices


Man sieht am 2018-11-04 21:40:40 alle Devices, die zu dem Zeitpunkt eingelesen wurden.
Aber die Werte mit aktuellerem Timestamp, sind die von dem
2018-11-05 08:33:45   device_friendlyName 0x00158d0001d38978


Beta-User

Es ging um die lists von den einzelnen Sensoren. Da müssen eben die 4 verschiedenen Id's drin stehen, aber eben jeweils nur eine.

Dass in dem Groß-Device immer nur z.B. eine Temperatur drin steht (jeweils die letzte übermittelte) ist klar - dafür ist das Device, das bei dir zigbee_pi heißt nicht da, das benötigt man nur für admin-Aufgaben an der java-Komponente (wie allow-new oder rename).

Hättest du die Einzeldevices über raw oder mit copy erstellt? Wenn copy: reload durchgeführt?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

Ich habe ein bridgeRegexp Attribut eingebaut, um automatisch abgeleitete MQTT2_DEVICE Instanzen zu erzeugen.
Da ich kein zigbee2mqtt zum testen habe, bin ich ueber Feedback dankbar.

Commandref Eintrag
ZitatbridgeRegexp <regexp> newClientId ...
      Used to automatically redirect some types of topics to different
      MQTT2_DEVICE instances. The regexp is checked against the
      clientid:topic:message and topic:message. The newClientId is a perl
      expression!. Example:
        attr zigbee2mqtt bridgeRegexp zigbee2mqtt/0x00158d0001([^:]*):.* "zigbee_$1"
      will create different MQTT2_DEVICE instances for different hex numbers in
      the topic. Note: the newClientId is enclosed in "", as it is a perl
      expression, should be unique, and the automatically created device will
     be created also with this name.

      Multiple tuples of <regexp> newClientId are separated by newline.

Beta-User

Super Sache!

Habe mich nicht recht getraut, danach zu fragen, das ist aber eine sehr hilfreiche Sache (IMO)!

Kann leider grade nicht testen, aber das mach ich dann gerne und date auch das wiki dann ab (es sei denn, es findet sich schneller ein Freiwilliger :D ).

Danke!

Bzw: zum testen würde genauso gut ein esp8266 mit sidoh-bridge gehen (ohne physische MiLight-Bulbs). Da passiert im Prinzip dasselbe...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

Ich will auch noch ein Template-Mechanismus einbauen, was je nach "set device model XXX" einen Satz an setLists (und evtl. Attribute) erzeugt, dafuer brauche ich aber Hilfe, indem jemand mir von unterschiedlichen Modellen eine funktionierende Konfiguration zeigt.

Beta-User

Finde ich gut mit dem teplate. Dürfte v.a. für Kaufdevices (zigbee) hilfreich sein.
Für die nur dimmbaren steht es im wiki. Gut wäre noch eines mit colortemp und die Luxusvariante mit hue.

Für reine Sensoren bin ich unschlüssig, aber da gibt es auch einige Modelle, bei denen das xiaomimqtt-Modul wohl manches an Attributen bereitstellt.

Für z.b. die Sidoh-Bridge eher schwierig, da man da auch die Bridge passend konfigurieren muss (die zurückzumeldenden Infos wie level statt brightness).

In dem java-code von kkoenk ist auch einiges an infos,.was welches zigbee-Device an Daten mag bzw. liefert.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

akr1983

Hiho,

erstmal Hut ab. Funktioniert wirklich super und deutlich besser als mit dem Modul von Oskar.

Einziges Problem scheint momentan zu sein, dass die Lampen mit Farbwechsel die Farben entweder als hash mit r: xx, g: xx, y:xx oder aber als color-x: xx color-y: xx benötigen. Und dementsprechend muss noch konvertiert werden, da mit dem einfachen übergeben vom RGB Wert aus FHEM nicht viel los ist. Ich hab mir das damals ins Modul von Oskar selber eingebaut, keine Ahnung, ob das Anpassbar ist... :-/ Vielleicht hilft es ja. Hier meine entsprechende Anpassung vom Modul von Oskar:


if( $command eq "rgb" && $value =~ m/^(..)(..)(..)/) {
                my( $r, $g, $b ) = (hex($1)/255.0, hex($2)/255.0, hex($3)/255.0);

                my %color_hash = (r => $r, g => $g, b => $b);
                my %set_hash = ('transition' => 3, 'color' => \%color_hash);

                send_publish($hash->{IODev}, topic => XiaomiMQTT::DEVICE::GetTopicFor($hash) . "/set", message => encode_json({"state" => "ON"}), qos => $qos, retain => $retain) if($command eq "brightness");
                $msgid = send_publish($hash->{IODev}, topic => XiaomiMQTT::DEVICE::GetTopicFor($hash) . "/set", message => encode_json(\%set_hash), qos => $qos, retain => $retain);
        }


Könnte man nicht die Eigenschaften eines Geräts als attribute hinterlegen wenn Typ der Bridge zigbee2mqtt ist? Sowas wie dimmable, color, color_temp capable etc?

Nur ne naive Idee... Bin gerne bereit zum testen, aber halt kein Perl Guru... Hab mich mit der Anpassung von Oskars Modul auch ne Weile rum geplagt, bis es soweit war, wie es jetzt ist...

Lg
Arne

Beta-User

Das sollte m.E. recht einfach zu implementieren sein: jedenfalls in den vorhergehenden Tests war hinten Perlcode, und ein RGB-colorpicker würde auch einen RGB-Wert als $EVTPART1 (?) liefern. Die Berechnung in eine myUtils-sub und der zurückgelieferte Json-Code sollte versendet werden. Als userReading noch einen RGB-Wert abgeleitet, und fertig ist die Laube...

Sicherheitshalber: hue-Wert direkt geht nicht?

Ansonsten würde es mich nicht wundern, wenn es bald eine entsprechende Erweiterung für color gäbe... (Meine sidoh-Bridge liefert auch nur diese doofen gesplitteten rgb-Werte zurück...)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

akr1983

Zitat von: Beta-User am 11 November 2018, 22:46:23
Das sollte m.E. recht einfach zu implementieren sein: jedenfalls in den vorhergehenden Tests war hinten Perlcode, und ein RGB-colorpicker würde auch einen RGB-Wert als $EVTPART1 (?) liefern. Die Berechnung in eine myUtils-sub und der zurückgelieferte Json-Code sollte versendet werden. Als userReading noch einen RGB-Wert abgeleitet, und fertig ist die Laube...

Sicherheitshalber: hue-Wert direkt geht nicht?

Ansonsten würde es mich nicht wundern, wenn es bald eine entsprechende Erweiterung für color gäbe... (Meine sidoh-Bridge liefert auch nur diese doofen gesplitteten rgb-Werte zurück...)

Huch, das ging aber schnell... Wie würde ich denn einen hue Wert übergeben bzw. bekomme ihn aus FHEM raus? Dann teste ich das gleich...