[Modul] Zigbee2MQTT

Sehr gut, ich bin gestern Abend erst aus dem Urlaub wieder gekommen, sorry dass ich nicht mehr geantwortet hatte.

Grüße,
Kai

Das klappt nicht. Du kannst nicht einfach JSON String verketten.
Erst das ganze Array erstellen und dann zu JSON ausgeben.
Vielleicht so?

$PayloadSet = [];
$PayloadSet["region_id"] = 1;
$PayloadSet["zones"] = [];
for ($x = 1; $x < 5; $x++){
    for ($y = 1; $y < 8; $y++){
        $zone["x"] = $x;
        $zone["y"] = $y;
        $PayloadSet["zones"][] = $zone;
    }
}
$PayLoad["region_upsert"] = json_encode($PayloadSet);
var_dump(json_encode($PayLoad));
Z2M_Command(44858, 'set', json_encode($PayLoad));

Michael

Hi,
auf einem anderen Weg hatte ich schon das selbe Ergebnis. Hier hat mich gestört im json bei „zones“ am Anfang eine eckige Klammer ist. Die eckige Klammer habe ich irgendwie auch weg bekommen aber Z2M mag es immer noch nicht. Meine Problem ist die Erklärung des Payload aus 2 Teilen besteht einmal wird „region_upsert“ erklärt und unabhängig davon „zones“ aber nicht wie ein kompletter Payload aussehen muss. Mittlerweile habe ich json ansatzweise verstanden aber wenn es tiefer verschachtelt wird habe ich noch meine Probleme.

Ralf

Das ist aber korrekt, da es ja ein array von Objekten mit X/Y ist. Zumindest nach deinem Code.

Weil da vermutlich die ganzen json_encode falsch sind. Erst alles zusammenbauen und dann ein json_encode.

Das habe ich gefunden:

 "region_upsert": {
            "region_id":1,
            "zones": [
                {"x":1,"y":1}
            ]
        }

Somit:

$PayloadSet = [];
$PayloadSet["region_id"] = 1;
$PayloadSet["zones"] = [];
for ($x = 1; $x < 5; $x++){
    for ($y = 1; $y < 8; $y++){
        $zone["x"] = $x;
        $zone["y"] = $y;
        $PayloadSet["zones"][] = $zone;
    }
}
$PayLoad["region_upsert"] = $PayloadSet;
var_dump(json_encode($PayLoad));

Michael

Das steht in der Doku wie payload aussehen muss:

{„region_upsert“: {„region_id“: VALUE, „zones“: VALUE}}

region_id (numeric) min value is 1, max value is 10
zones (list): list of dictionaries in the format {„x“: 1, „y“: 1}, {„x“: 2, „y“: 1}

Problem sind die zones und ich hatte es schon mit und ohne eckigen Klammern.

Ralf Biedermann

List → array also Eckige Klammern
Dictionaries → Objekt bzw. Assoziatives Array ( => geschweifte Klammer)

Ja, siehe meinem Code oben.
{"region_upsert":{"region_id":1,"zones":[{"x":1,"y":1},{"x":1,"y":2},{"x":1
Michael

Wie gesagt hatte ich auch probiert aber z2m meckert immer. In der GUI selbst kann ich es auch nicht einstellen.

Ralf Biedermann

Wenn ich das richtig verstehe, dann hat jede region_id nur zwei Objekte mit x&y, weil eine Region immer ein Rechteck ist. Also einmal z.B. 1,1 bis 5,2.

Weitere Felder sind dann in einem weiteren Kommando zu senden

Debug 2023-02-02 18:47:40
Received MQTT message on 'zigbee2mqtt/0x1234567890/set' with data '{ "region_upsert": { "region_id": 2, "zones": [ {"x":1,"y":1} ] } }'
Debug 2023-02-02 18:47:40
Publishing 'set' 'region_upsert' to '0x1234567890'
Debug 2023-02-02 18:47:40
zigbee-herdsman-converters:xiaomi:aqara_fp1:region_upsert: trying to create region 2
Info 2023-02-02 18:47:40
zigbee-herdsman-converters:xiaomi:aqara_fp1:region_upsert: create region 2 01:02:01:00:00:00:ff

Quelle: [Feature request]: Support Aqara FP1 Regions · Issue #13711 · Koenkk/zigbee2mqtt · GitHub

Michael

Macht Sinn. Danke einen Schritt weiter. Aber ich bekomme immer noch die Antwort NOT_OBJECT.

Ralf

Ralf Biedermann

@Burki24

Hi Burkhard, leider noch keine Besserung.

dump (2).txt (26,4 KB)

Viele Grüße
Markus

Ich hatte vergessen die Version online zu stellen, kannst du jetzt nochmal ein Update machen?

Grüße,
Kai

Sorry eine Anfänger Frage aber wie kann ich am besten über einen KNX Schalter die Helligkeit eines Zigbee Gledopto LED Treiber (via zigbee2mqtt) schalten.?

Danke euch im voraus.

Was für einen KNX Taster hast du?
Welche KO hast du?

Grüße,
Kai

MDT Glastaster Smart.

Das habe ich gerade erst bei mir umgesetzt, zwar für WLED, aber das ist ja egal.
Ich poste dafür morgen mal mein Script.

Grüße,
Kai

Danke im Voraus Kai :wink:

Hallo Kai,

vielen Dank, die Action Variable wird nun angelegt und auch mit Werten befüllt.
Vielleicht ein kleiner Schönheitsfehler.

Im Feld „Wert“ im Objektbaum wird nur ein „-“ (Bindestrich) angezeigt, egal welcher Wert
übermittelt wird, daher dachte ich anfangs es wird gar kein Wert eingetragen.

Könnte man es so programmieren, dass wieder der tatsächliche Wert im Feld steht, wie zb rotate_stop oä. ?

Vielen Dank und viele Grüße
Markus

Moin @Markus1979 , @KaiS ,

ich schaue heute Abend mal, wes Z2M da sendet.

@Markus1979 magst Du mal den Debug öffnen und schauen, was an Payloads kommt, wenn Du eine Taste bedienst?

WICHTIG: Sendet er nur eines oder zwei folgende, wo beim Zweiten unter ‚Action‘ nur ein ‚-‘ gesendet wird?

LG
Burkhard

Wenn es das Profli Z2M.action.be89cdac ist, dann passt da was mit dem letzten Debug nicht.
@Markus1979, kannst du wie @Burki24 gesagt hat mal ein Debug machen wenn du alle Aktionen nacheinander ausführst?

Grüße,
Kai

Ich habe einen extra Thread dafür aufgemacht, schau mal hier: [Anleitung] MDT Glastaster Dimmer für nicht KNX Geräte

Grüße,
Kai