[Modul] Zigbee2MQTT

Kannst du mir noch das Debug aus der Device Instanz schicken?

Grüße,
Kai

Kannst du das Debug mal aus der Device Instanz posten?

Grüße,
Kai

Hier ist der Dump aus der Device Instanz dump2.txt (12.8 KB)

lg

Moin Kai,

aktuell leider nicht. Ich hatte 5-6 Geräte mit vorhandenen Updates aber die habe ich mittlerweile alle aktualisiert und diese Meldungen kommen nur während eines aktiven Updatevorgangs. Ist auch nicht so wichtig da man es doch eher selten braucht. Mich hatte nur json interessiert. Mit einer einfachen json Struktur komme ich jetzt schon einigermaßen klar aber hier sieht es aus als wenn in json noch ein json verborgen war und das würde ich auch gerne verstehen. Bin halt neugierig.

Interessanter und wichtiger dürften die folgenden Informationen sein.

Aktuell liefert Zigbee2MQTT noch weiter interessante Informationen:
Bei vielen Geräten von Philips, Ikea, Innr und Osram (Ledvance) gibt es eine Updatemöglichkeit und die wird mit „update_available“ angekündigt. Mit


if (property_exists($Payload, 'update_available')) {
    $this->RegisterVariableBoolean('Z2M_Update', $this->Translate('Update'), '');
    SetValue($this->GetIDForIdent('Z2M_Update'), $Payload->update_available);
}

würde die Information in der Geräte-Instanz eingetragen.

Bewegungsmelder liefern auch teilweise weitere nützliche Informationen.

Philips Hue:
Bei diesen Bewegungsmelder kann man die Empfindlichkeit und Haltezeit einstellen. Mit ‚motion_sensitivity‘ und ‚occupancy_timeout‘ bekommt man sie übermittelt. Die Empfindlichkeit ist eher informativer Art aber die Haltezeit kann man benutzen um die Scripte so zu gestalten das Licht oder Aufnahmen möglichst unterbrechungsfrei sind.


if (property_exists($Payload, 'occupancy_timeout')) {
    $this->RegisterVariableInteger('Z2M_OccupancyTimeOut', $this->Translate('OccupancyTimeOut'), '');
    SetValue($this->GetIDForIdent('Z2M_OccupancyTimeOut'), $Payload->occupancy_timeout);
}
if (property_exists($Payload, 'motion_sensitivity')) {
    $this->RegisterVariableString('Z2M_MotionSensitivity', $this->Translate('MotionSensitivity'), '');
    SetValue($this->GetIDForIdent('Z2M_MotionSensitivity'), $Payload->motion_sensitivity);
}

Ikea:
Bei Ikea kann man zwar durch Software anscheinend nichts konfigurieren aber es gibt im Sensor 2 Potis mit dem man einen gewünschten Helligkeitswert für das Licht und einen Helligkeit für die Lampen angeben kann. Der Wert kommt mit ‚requested_brightness_level‘ und ‚requested_brightness_percent‘. Diese Werte könnte man benutzen um z.B. zu sagen wenn ‚requested_brightness_level‘ von einem anderen Lichtsensor kleiner als dieser Wert ist setze die Helligkeit von Lampen auf ‚requested_brightness_percent‘.


if (property_exists($Payload, 'requested_brightness_level')) {
    $this->RegisterVariableInteger('Z2M_RequestedBrightnessLevel', $this->Translate('RequestedBrightnessLevel'), '');
    SetValue($this->GetIDForIdent('Z2M_RequestedBrightnessLevel'), $Payload->requested_brightness_level);
}
if (property_exists($Payload, 'requested_brightness_percent')) {
    $this->RegisterVariableInteger('Z2M_RequestedBrightnessPercent', $this->Translate('RequestedBrightnessPercent'), '');
    SetValue($this->GetIDForIdent('Z2M_RequestedBrightnessPercent'), $Payload->requested_brightness_percent);
}

Nochmal vielen Dank für das Modul und das der Code so schön strukturiert ist:-)

Ralf

Hi,
ich schon wieder. Zigbee Steckdosenleisten mit 3 oder 4 Steckdosen scheinen immer beliebter zu werden. Ich konnte nicht widerstehen:-)

Aktuell kann das Modul nur 2 der Steckdosen schalten. Im Device-Modul und in der Helper-Lib müssen die States L1, L2 um L3 und L4 erweitert werden.

Ralf

Hi,
und ich schon wieder. Zigbee2mqtt hat seit 1.17 eine Web-GUI.

Schön ist das man von den Geräten direkt auf die Konfigurationsseite des Gerätes geleitet wird. Auch schön ist das man darüber jetzt auch direkt eine Map der Geräte erstellen kann. Die Map sieht dann z.B. so aus:

Ralf

Hi Ralf,

danke für den Hinweis, die Neuerung habe ich doch glatt übersehen. Ich habe es gleich mal ausprobiert, so kommt man viel leichter an die Map ran. Ich habe dies bisher immer über mehrere Scripte und VIZ gemacht. So ist das viel einfacher.

OTA hatte ich bisher immer https://jeffreystone.net/2020/05/29/zigbee2mqtt-and-ota-device-firmware-updates/ so gemacht. Wobei OTA bei mir bei kaum einem Gerät verfügbar war oder eh keine neue FW bereit stand.

Gruss
Bernd

Hi,
ich habe diese Modul hier erweitert das es mir Updates anzeigt und wenn mal wieder ein Update da ist eine Mail schickt. 14 meiner Geräte zeigen das sie wohl OTA Update können und bei 6 habe ich es in den letzten Wochen auch erfolgreich mit IPS gemacht.

Kleiner Tipp zum Update: Wenn es Geräte mit Batterie sind nach Start des Updates ca. alle Sekunde mal eine Aktion vom Gerät auslösen so das es auch Empfangsbereit ist. Update ohne Batterie dauert einige Minuten mit Batterie einige Stunden.

Ralf

Ich werde das Modul ein wenig überarbeiten.
In der Zukunft werde ich alle Funktionen privat sein, dann ist es nur noch möglich über RequestAction zu schalten. :slight_smile:

Grüße,
Kai

Hallo KaiS

Ich habe einen HY08WE Heizungsthermostat (TuYa HY08WE control via MQTT | zigbee2mqtt.io) mit Externen Fühler der aktuell nur die Verbinungsqali und de Ein/Aus anzeigt kann du den bitte einbinden.

Was ich habe ist :slight_smile:

{
    "alarm": false,
    "away_preset_days": 1,
    "away_preset_temperature": 15,
    "child_lock": "UNLOCKED",
    "current_heating_setpoint": "24.0",
    "external_temperature": "0.0",
    "heating": "ON",
    "hysteresis": "1.0",
    "hysteresis_for_protection": 2,
    "linkquality": 135,
    "local_temperature": "20.5",
    "local_temperature_calibration": "-1.0",
    "max_temperature": 35,
    "max_temperature_for_protection": 45,
    "max_temperature_protection": "ON",
    "min_temperature": 5,
    "min_temperature_for_protection": 5,
    "min_temperature_protection": "ON",
    "sensor_type": "internal",
    "state": "ON",
    "system_mode": "manual",
    "power_on_behavior": "restore",
    "week": "5+2",
    "range": "pm",
    "workdays": [
        {
            "hour": 13,
            "minute": 30,
            "temperature": 15
        },
        {
            "hour": 17,
            "minute": 0,
            "temperature": 15
        },
        {
            "hour": 22,
            "minute": 0,
            "temperature": 15
        }
    ],
    "holidays": [
        {
            "hour": 13,
            "minute": 30,
            "temperature": 15
        },
        {
            "hour": 17,
            "minute": 0,
            "temperature": 15
        },
        {
            "hour": 22,
            "minute": 0,
            "temperature": 15
        }
    ]
}

und dump.txt (186,3 KB)

Hoffe damit kannst du was anfangen :slight_smile:
Danke
Alex

Teste mal die aktuell Beta Version.

Ab der aktuellen Beta Version gibt es keine public Funktionen mehr, es muss RequestAction genutzt werden.

Grüße,
Kai

Danke damit sehe ich schon mehr, jedoch kann ich keine Temperatur Änderung machen und auch den Modus ändern bringt nichts, bleibt immer auf Auto :face_with_monocle:

Wie soll ich das mit RequestAction verstehen wo brauche ich das? Hab ja keine Ahnung von PHP :confused:

Danke schonmal

mfg
Alex

kurze RM die umstellung auf die Request.umstellung in der Beta läuft bei mir ,habe bestimmt noch irgendwo vergese anzupassen meine Frau wirds finden :blush:

Hi Zonex,
RequestAction(ID der Variable die Du ändern willst, Wert den Du in die Variable schreiben willst). An der Variablen ist eine Funktion gekoppelt die dann ausgeführt wird. Bei dir also etwa RequestAction(ID von Temperatur, 50) und dir wird warm.

Ralf

Hallo Kai,

nach dem Zigbee2MQTT Modul Update scheint es ja kein Z2M_setColor mehr zu geben. Du hattest ja gesagt man soll nun RequestAction verwenden. Eine Frage hier, wie soll es denn jetzt aussehen?

// bisheriger Code
$decColor = rgb2decColor($Rot, $Gruen, $Blau); 
Z2M_setColor(20513,$decColor,'cie'); 

// neuer Code
$decColor = rgb2decColor($Rot, $Gruen, $Blau); 
RequestAction(20513,$decColor,'cie');
/* geht natürlich nicht, sind ja 3 statt 2 Parameter und es kommt natürlich die Warning: Wrong parameter count for RequestAction() in /var/lib/symcon/scripts/14111.ips.php */

Irgend wie übersehe ich da was. Im Webfront kann ich weiter wie gewohnt Farbe und Helligkeit ändern.

Ach ja, noch eine Frage, gibt es im neuem Forum keinen Bereich mehr, wo man formatierten PHP Code eingeben kann?

Gruss
Bernd

Hi,
wenn ich es richtig gesehen habe ist ‚cie‘ Standard und bräuchte nicht mehr angegeben werden.

ich benutze </> wenn ich Code eingeben will.

Ralf

Hallo Ralf,

danke, dein Hinweis hat geholfen. RequestAction spricht ja nicht die Instanz an, sonder direkt eine Variable in der Instanz. Das mit dem cie Farbraum muesste Kai mal kommentieren. Wusste nicht, ob auch andere Farbräume auswählbar waren.

$decColor = rgb2decColor($Rot, $Gruen, $Blau); 
RequestAction(20600,$decColor);  

Gruss
Bernd

Hi,
bei Apple, Hue und HomeKit gab es letztes Jahr ja ein neues Modewort „Adaptives Licht“. Ich habe es jetzt mal sehr sehr light bei mir für Zigbee2MQTT eingebaut.

<?php
$mailInhalt = '';
$UpdateList = array();
$InstanzIDsList = IPS_GetInstanceListByModuleID('{E5BB36C6-A70B-EB23-3716-9151A09AC8A2}');  // Zigbee2MQTT

foreach ($InstanzIDsList as $InstanzID) {
    $VarID = @IPS_GetObjectIDByIdent('Z2M_State', $InstanzID);
    if ($VarID > 0) {
        if (GetValue($VarID)){
            $VarID = @IPS_GetObjectIDByIdent('Z2M_ColorTemp', $InstanzID);
            if ($VarID > 0) {
                if ((date("G") < 9) || (date("G") > 17)){
                    RequestAction($VarID, 350);
                }
                else{
                    RequestAction($VarID, 50);
                }
            }
        }
        else{
            $VarID = @IPS_GetObjectIDByIdent('Z2M_ColorTemp', $InstanzID);
            if ($VarID > 0) {
                if ((date("G") < 9) || (date("G") > 17)){
                    SetValue($VarID, 350);
                }
                else{
                    SetValue($VarID, 50);
                }
            }
        }
    }
}
?>

Ich lasse dieses Script um 9:01 und 18:01 automatisch laufen. Was macht dieses Script? Von 18-6 schaltet es Lampen mit Farbtemperatur auf Temperatur 350 und von 9-18 auf 50. Wenn das Licht an ist wird sofort geschaltet ansonsten setzte ich nur die Variable das die Temperatur beim nächsten Mal benutzt wird.

Ich mag Morgens nicht so grelles Licht und für mich habe ich 350 als guten Kompromiss angesehen. Von 9-18 ist es dann kältestes Weiß. Im Moment wird schlagartig umgeschaltet. Ich überlege ob ich den Übergang sanfter gestalte.

Vielleicht hatte ja jemand eine ähnliche/bessere Idee.

Ralf

Du kannst einfach so die Farbe wechseln:

RequestAction(20600,0xFF0000);

Grüße,
Kai

Hallo @KaiS,

bei einigen Heizkörperthermostaten gibt es die Möglichkeit, die gemessene Temperatur zu kalibrieren, also die Differenz zwischen Raumtemperatur und Temperatur am Heizkörper auszugleichen. In meinem Fall handelt es sich um das TuYa - TS0601_thermostat. Es wäre cool, wenn diese Funktion mit einfließen könnte:

„local_temperature_calibration“: -1

Auch stehen noch andere Parameter zur Verfügung:

„max_temperature“: 35, (maximal einstellbare Raumtemperatur)
„min_temperature“: 5, (minimal einstellbare Raumtemperatur)
„preset“: „manual“, (Programmierte Presets des Thermostat: Manual, Boost, Complexes Programm, Comfort, eco)
„away_mode“: „OFF“, (Urlaubsmodus)
„away_preset_days“: 1, (Urlaubsdauer)
„away_preset_temperature“: 15, (Urlaubstemperatur)
„boost_time“: 300, (Boost-Dauer)
„comfort_temperature“: 20, (Comfort-Temperatur für PReset)
„eco_temperature“: 15, (Eco-Temperatur)

Vielleicht könnte man die hier genannten noch mit einbinden. Es sind bei weitem noch nicht Alle in der Liste, aber Alle braucht man ja auch nicht.

Viele Grüße

Burkhard