[Modul] Zigbee2MQTT

Moin Kai,
ich wollt die Spielerei Cube von Aqara als universellen Lautstärkeregler benutzen. Ich wollte über Aktion ‚rotate_right‘ und ‚rotate_left‘ die Lautstärke erhöhen/verringern abhängig vom Winkel.

Problem ist das die Objekt-ID vom Winkel (Angel) immer gelöscht und neu angelegt wird und somit gibt es keine ID wo ich den Winkel ablesen kann.

Ralf

Schaue ich mir an, vielen Dank für den Hinweis.

Grüße,
Kai

Hi,
es steht zweimal


                if (property_exists($Payload, 'angle')) {
                    $this->RegisterVariableFloat('Z2M_Angle', $this->Translate('Angle'), '');
                    SetValue($this->GetIDForIdent('Z2M_Angle'), $Payload->angle);
                }

im Device-Modul. Kann es das schon sein?

Ralf

Was für ein Wert steht in Angle?
Es wird versucht eine Float und eine Integer Variable anzulegen.

Grüße,
Kai

Hi,
Edit: Ich habe mir das Log von Zigbee2MQTT angesehen und es es blöder als gedacht.

Der Würfel liefert als payload „angle“ als float. Der Vibrationssensor liefert aber als payload „angle“ als int. Deswegen vermutlich das Problem. Wenn man nur float angibt sollte das Problem behoben sein oder?

Edit: Nur mit Float ist alles im Lot:-)

Ralf

Ich werde es anpassen.

Grüße,
Kai

Hi Kai,
danke.

Ralf

Die Version ist nun als Beta Version im Store vorhanden.
Wenn Symcon die Stable Version geprüft hat, ist die Version auch im Stable Kanal verfügbar.

Grüße,
Kai

Hi Kai

Könntest Du bitte gelegentlich Support für die „Availability“ Message im Modul einbauen?

Availability kann in der zigbee2mqtt configuration mit:
advanced:
availability_timeout: ‚60‘

aktiviert werden.

Danach werden Meldungen wie folgt in 60 Sekunden Abständen geschickt:

{"DataID":"{7F7632D9-FA40-4F38-8DEA-C83CD4325A32}","PacketType":3,"QualityOfService":0,"Retain":true,"Topic":"zigbee2mqtt/tradfri_rgb_1/availability","Payload":"online"}

Im Moment ist es so, dass Dein Modul Errors und Warnings ins Log schreibt:

11/2019 05:26:14 | 00000 | CUSTOM  | PHP                  | Error: Warning: First parameter must either be an object or the name of an existing class
   Error in Script C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.zigbee2mqtt\IPS-Z2MDevice\module.php on Line 52
  134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   37 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
      in IPSLogger_PhpErrorHandler
   52 in modules\.store\info.schnittcher.ips.zigbee2mqtt\IPS-Z2MDevice\module.php (call property_exists)
    3 in C:\Windows\System32\- (call ReceiveData)

Dank und Gruss!

Tom

Guten Morgen Tom,

also den Online Status des Gerätes willst dau damit überprüfen und in IPS darstellen?
Somit benötigt jedes Gerät eine „online“ Variable?

Grüße,
Kai

Hi Kai

Ja genau, eine generelle Info über die Erreichbarkeit.

„This allows zigbee2mqtt to mark individual devices as offline. E.g. when you switch a bulb off using the regular switch.“

Dank und Gruss!

Tom

Hi Kai

Habe gesehn, dass eine neue Version des Module online ist. Hab’s getestet. Alles läuft wie gewünscht!

Herzlichen Dank!

Tom

Hallo Kai ,

kannst du bitte noch die Position hinzufügen. E1757 - IKEA FYRTUR roller blind (EndDevice)
so sieht der payload aus, was empfangen wird.
Variable für Battery und Linkq. werden angelegt die Position fehlt.

payload ‚{„position“:46,„linkquality“:2,„battery“:45.5}‘

Danke Gruß Jens

Hallo Jens,

schau dir mal die neue beta Version an.
Dort habe ich die Variable Position hinzugefügt auch die Funktion setPosition($InstanceID, $Value) habe ich hinzugefügt.
Ob die funktioniert, kann ich dir nicht sagen, teste es doch mal bitte. :slight_smile:

Kannst du mal berichten, wie die Rollos von IKEA sind?

Grüße,
Kai

Guten Morgen Kai,

bin auf die Beta gewechselt.

Also Z2M_setPosition(xxxx, xxx); wird ausgeführt ,die Rückmeldung von der position wird aber nicht angelegt als Variable.
zigbee2mqtt/0x000d6ffffxxxxxxxx’, payload ‚{„position“:38,„linkquality“:89,„battery“:45}‘
zigbee2mqtt/0x000d6fxxxxxxxxxx’, payload '{„position“:35,„linkquality“:89,„battery“:45}

Allgemein zum Ikea Rollo ,habe ich nur ein Kurzeit Bericht .

Anlernen war tricky ,nach Anleitung von Ikea hat es sich nicht verbinden wollen. Erst nach einem reset des Rollos konnte ich das Rollo anmelden.

Mit zigbee-shepherd musste ich das Gerät noch in die Device Liste aufnehmen ,hatte aber keine Rückmeldung vom Rollo konnte nur Befehle senden.

Mit dem Update auf zigbee-herdsman. Problemlos erkannt und Rückmeldung geht auch.

Jetzt mal etwas länger testen ,was passiert wenn der Akku leer ist ,behält da Rollo die Endlagen usw…

Danke Jens

Guten Morgen Kai

In der Groups Doku von Zigbee2MQTT steht der Topic wie folgt:
„zigbee2mqtt/bridge/group/[GROUP_FRIENDLY_NAME]/add“

Wenn ich Deine Funktion ausführe steht im Debug:
zigbee2mqtt/bridge/WalkingCloset/add

Ich denke, da fehlt bei Deiner Implementation noch die „/group“

Wahrscheinlich sind die weiteren Group-Funktion auch betroffen

Dank und Gruss!

Tom

Teste es nochmal, die Variable sollte nun angelegt werden. Am besten die Instanz nochmal löschen.

@TomF, was genau meinst du mit den Gruppen, auf was ist das bezogen?

Grüße,
Kai

Hallo Kai

Mit Deiner Funktion Z2M_AddGroup(int $InstanceID, string $group_name, string $friendly_name) schickst Du „zigbee2mqtt/bridge/[GROUP_FRIENDLY_NAME]/add“ topic.
Gemäss der Doku von Zigbee2MQTT solle es aber „zigbee2mqtt/bridge/group/[GROUP_FRIENDLY_NAME]/add“ sein.
„group/“ fehlt in Deinem Topic.

Dank und Gruss!

Tom

Der Fehler war dann bei allen Groups Befehlen.
Ich habe es angepasst, in der aktuellen Beta Version sollte es nun funktionieren.

Kannst du es mal testen?

Grüße,
Kai

Hi Kai

Es funktioniert!

Aus meiner Sicht sind jedoch nicht alle Deine Funktionen in zigbee2mqtt realisiert. Nur diese Group Commands sind in der Doku:

zigbee2mqtt/bridge/group/[GROUP_FRIENDLY_NAME]/add
zigbee2mqtt/bridge/group/[GROUP_FRIENDLY_NAME]/remove
zigbee2mqtt/bridge/group/remove_all

Dank und Gruss!

Tom