JSON "Anfänger" braucht Hilfe

Hallo Community

Ich versuche gerade eine „Petwalk“ Katzentüre per IPS anzusteuern. Das Gute stück kann per Rest-API über JSON gesteuert werden.
API
Bisher ist es mir gelungen die Tür zu öffnen und zu schließen.

<?php

$status = GetValue(39174);
if($status)
    {
        $json ='{"requests":[{"function":"clb_state_door_pos","params":["open"]}]}';
    }
else
    {
        $json ='{"requests":[{"function":"clb_state_door_pos","params":["closed"]}]}';  
    }
WSC_SendMessage(29163,$json);

Ich möchte aber gerne noch andere Parameter ändern, z.B. den RFID Leser aktivieren/deaktivieren.
Hierzu gibt muss ein Flag geändert werden.
Habe im LoxoneForum das gefunden:

- clb_cfg_flags ist ein Bitfield für die Aktivirungs Konfiguration:
Bit 1 1 RFID aktiv
Bit 2 2 Bewegungssensor "Rein" aktiv
Bit 3 4 Bewegungssensor "Raus" aktiv
Bit 13 4096 Bedingung Licht Rein Aktiv
Bit 14 8192 Bedingung Licht Raus Aktiv
Bit 15 16384 Bedingung Feuchtigkeit Rein Aktiv
Bit 16 32768 Bedingung Feuchtigkeit Raus Aktiv

Da scheitere ich im Moment an der Umsetzung.

Wenn ich die Einstellungen per FB ändere kommt im Debug des WebsocketClient
z.B. beim deaktivieren des RFID

26.10.2021, 14:59:09 |             RECEIVED | {"responses":[{"clb_cfg_flags":[50176]}],"version":"2.0.0"}

und beim aktivieren:

26.10.2021, 15:24:29 |             RECEIVED | {"responses":[{"clb_cfg_flags":[50180]}],"version":"2.0.0"}

jetzt versuche ich das in einen requests zu „verwandeln“ und genau an dieser stelle stehe ich auf dem Schlauch.

Hoffe jemand hat eine Idee oder eine Hilfestellung. Bin mit JSON noch am Anfang.

Danke

Oliver

Hallo Oliver,

50180 - 50176 = 4
Kann es sein das Du in deinem Beispiel „Bit 3“ verändert hast?

Edit: Ich würde es mal so versuchen:

$Bits = array(1 => 12345, 2=> 23456, 3 => 34567, 13 => 45678, 14 => 56789, 15 => 67890, 16 => 78901); // hier die ID's der entsprechenten Boolean Variablen eintragen
$Int = 0;
foreach ($Bits as $Key => $Bit) {
    $Val = GetValueBoolean($Bit);  // Variable einlesen
    $Int |= $Val << $Key-1;        // setzt das Bit entsprechend $Val (0 oder 1)
}
$json ='{"requests":[{"function":"clb_cfg_flags","params":[' . $Int . ']}]}';
echo $json;

Attain

1 „Gefällt mir“

Hallo @Attain

Danke für deine Antwort.

Ich habe da nix verändert, das sind die Rückmeldungen der Tür welche gepusht werden, wenn ich etwas z.B. per IR-Fernbedienung ein oder ausschalte.

Ich werde deinen Vorschlag morgen mal testen.

Vielen Dank

Oliver

Hallo @Attain

Das funktioniert ! Wie geil…

Vielen Dank für die Hilfe. Hab ich wieder etwas gelernt. :slight_smile:

1 „Gefällt mir“