Die neue API hat eine Doku bekommen

https://developer.digitalstrom.org/api/?fbclid=IwAR2BS0W3QnR0TPoHrfoGcPeS78OwxKxrBUUaOWMDNZov_rne6FhZW2BzQAs#overview--notifications

Hoffe, jetzt geht es einmal vorwärts.

Das sind ja großartige Neuigkeiten! Ich kann leider Entwicklungsseitig nichts beitragen, wenn aber jemand etwas testen wollte - gerne bescheid geben!

Ich versuchte einmal mein Glück mit dem webSocket
ws://192.168.1.59:8090/api/v1/apartment/notifications

Beim chrome simple web Socket client verschicke ich
{„protocol“:„json“,„version“:„1“}

Danach bekomme ich bei jeder Betätigung eines Tasters die Meldung
{„type“:1,„target“:„event“,„arguments“:[{„type“:„apartmentStatusChanged“}]}

In IP-Symcon bin ich noch nicht weiter. Ich versuchte durch
CSCK_SendText ( 40193, '"{"protocol":"json","version":"1"}"' );
Ich bekomme dann die Fehlermeldung
Warning: Instance does not implement this function in /var/lib/symcon/scripts/48848.ips.php on line 2

Du müsstest bei uns den WebSocket-Client als Instanz verwenden. Und dann diese Funktion nutzen: WSC_SendMessage — IP-Symcon :: Automatisierungssoftware

paresy

Es ist mir gelungen mit einer Register Variable und angehängtem Skript etwas zu machen

<?php
IPS_LogMessage("DS_new", $_IPS['VALUE']);
if ($_IPS['VALUE']=='{"type":1,"target":"event","arguments":[{"type":"apartmentStatusChanged"}]}'){
    include ("/var/lib/symcon/scripts/12345.ips.php");
}

elseif  ($_IPS['VALUE']=='{"type":1,"target":"event","arguments":[{"type":"apartmentStructureChanged"}]}'){
 include ("/var/lib/symcon/scripts/12346.ips.php");
}
?>

Kurzum bei jeder Aenderung eines Klemmenoutputs wird auf diesem Kanal „apartmentStatusChanged“ übermittel und bei jeder Strukturänderung wird „apartmentStructureChanged“ versendet. Es wird nicht übermittelt, welche Klemme sich verändert hat. Auch die Sensorwerte werden nicht übermittelt. Wenn wir jetzt ein 12345.php Skript hätten, welche alle Gerätewert pollt, sind wir durch. Genau ein solcher 12345.php Skript habe ich

einmal veröffentlicht.

Ps. Im Debugger finde ich „< RS >“ was bedeutet dies? Mit im Php Skript wird es dann mit [?] dargestellt. Obiges Skript kann man vermutlich verbessern mit diesem Steuerbefehl.

Wie kommt man von der dsuid zur den ip-Symcon id der erzeugten Variablen?

Wie kann man diese Variablen überschreiben? Mit SetValue geht es nicht, da diese Variable schreibgeschützt sind.

Mit

$rpc = new JSONRPC(„http://admin:admin@127.0.0.1:3777/api/“);
$rpc->SetValue(45708, false);
$rpc->SetValue(33121, 255);
könnte ich die schreibgeschützen Variablen überschreiben. Bleibt nur die Frage, wie komme ich von dsuid zu ip-symcon id (InstandID)? Wo findet man die Datenbank des Configurators?

@paresy
Hast Du eine Idee, wie man folgendes Skript automatisch erzeugen könnte.

foreach ($ist2 as $value)
{
switch ($value[„id“])
{
case „302ed89f43f000000000450000520dfb00“: /Stube Esstischlampe/
$rpc->SetValue(11967,
boolval($value[‚attributes‘][‚functionBlocks‘][‚0‘][‚outputs‘][‚0‘][‚level‘]));
$rpc->SetValue(45585,
intval(round($value[‚attributes‘][‚functionBlocks‘][‚0‘][‚outputs‘][‚0‘][‚value‘]*2.55,0)));
break;

    case "303505d7f8000000000000800013ae4d00": /*Stube Deckenlampe*/
        $rpc->SetValue(51631, 
        boolval($value['attributes']['functionBlocks']['0']['outputs']['0']['level']));
        $rpc->SetValue(27974, 
        intval(round($value['attributes']['functionBlocks']['0']['outputs']['0']['value']*2.55,0)));

    break;

    }
}

Dann müsste man noch

$Call2 = "/api/v1/apartment/status?includeAll=true";

mit einem zweiten Experten z.B.

DS_MakeRequest2($Expert_id, „api/v1/apartment/status“, „includeAll=true“);

haben und wir hätten einen perfekten Rückkanal!

1 „Gefällt mir“

Vorallem DS_MakeRequest2 wäre nützlich. Das Einloggen mit dem Token ist langsam. Es vergehen schnell 2 Sekunden nur alleine das Einloggen. Das ganze Skript, von Hand geschrieben, läuft dann sehr schnell.

1 „Gefällt mir“