[Modul] AIOGateway (Testversion)

Rein oberflächlich betrachtet sieht das ok aus. Den Mulicast Socket unter IO Instanzen musst Du öffnen. Schau da mal nach ob bei Empf-Host Alle ausgewählt ist und dann öffne da noch mal das Debug Fenster und lass das mal eine Weile offen ob da überhaupt irgendwelche Daten bei Dir ankommen. Der Port steht auf 1902?
Wo ist denn IP-Symcon installiert, hast Du sichergestellt das IP-Symcon auch über Port 1902 erreichbar ist, z.B. mögliche Firewall oder Ähnliches.
Du kannst ja mal zum Test mit Packet Sender oder ähnlichen Tools ein String an UDP 1902 mit der IP-Adresse von IP-Symcon schicken. Da sollte dann im Debug Fenster etwas stehen. Falls da auch mit Packet Sender nichts in IP-Symcon ankommt bzw. im Debug Fenster sichtbar ist, musst Du eine mögliche Firewall oder auch den Docker Container überprüfen.
Mit Docker kenne ich mich persönlich leider nicht aus, falls es da Probleme geben sollte würde ich das noch in einem separaten Thread erfragen was zu konfigurieren ist damit bestimmte Ports in IP-Symcon erreicht werden können.

Hallo Fonzo,

ich habe jetzt erst einmal die Pakete ausgelesen, welche beim Anlernen gesendet und empfangen werden.
Ausgelesen habe ich sie mit dem Handy, nicht am Rechner.

Befehl zum Lernmodus setzen (komplett mit Header, eventuell braucht man ihn ja später):

GET /command?XC_FNC=LearnSC&type=R2&timeout=10000&_=1576001535970 HTTP/1.1
Host: 192.168.1.7
Connection: keep-alive
User-Agent: Mozilla/5.0 (Linux; Android 8.0.0; SM-G935F Build/R16NW; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/72.0.3626.105 Mobile Safari/537.36
Accept: /
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
X-Requested-With: com.mediola.iqontro

Hier war das von dir empfohlene „cmd“ nicht ganz richtig, der Rest sieht identisch aus.

Als ich eine Dose anlernte, kam dann das hier als Ergebnis:

{XC_SUC}{„CODE“:„12B16F794020BB01“}

Rot ist die Adresse der Dose. Es ist eine, die nicht dimmbar ist.

Jetzt habe ich noch den Debugger bei beiden Instanzen geöffnet und ein wenig loggen lassen.
Interessante Sache.
Über das Gateway wurden einige Befehle erkannt, als ich einfach mal ein wenig mit der Fernbedienung rumgespielt habe:

TXT: 10.12.2019, 19:38:24 | ReceiveData AIO Gateway | {XC_EVT}{„type“:„IR“,„data“:„190826000001000000“}
TXT: 10.12.2019, 19:38:24 | Received IR Code | 0
TXT: 10.12.2019, 19:41:46 | ReceiveData AIO Gateway | {XC_EVT}{„type“:„IR“,„data“:„190826000005001004026A008100A60084013C008400A6157F00010201010201010101010102020103“}
TXT: 10.12.2019, 19:41:46 | Received IR Code | F00010201010201010101010102020103
TXT: 10.12.2019, 19:41:47 | ReceiveData AIO Gateway | {XC_EVT}{„type“:„IR“,„data“:„19082600000500100402690083013C008400A7008300A714E900010102020102020202020201010203“}
TXT: 10.12.2019, 19:41:47 | Received IR Code | 900010102020102020202020201010203
TXT: 10.12.2019, 19:41:48 | ReceiveData AIO Gateway | {XC_EVT}{„type“:„IR“,„data“:„1908260000050010040267008500A60084013B008500A6158000010201010201010101010102020103“}
TXT: 10.12.2019, 19:41:48 | Received IR Code | 000010201010201010101010102020103
TXT: 10.12.2019, 19:41:49 | ReceiveData AIO Gateway | {XC_EVT}{„type“:„IR“,„data“:„19082600000500100402680083013C008400A6008400A614EB00010102020102020202020201010203“}
TXT: 10.12.2019, 19:41:49 | Received IR Code | B00010102020102020202020201010203
TXT: 10.12.2019, 19:44:30 | ReceiveData AIO Gateway | {XC_EVT}{„type“:„IR“,„data“:„1908260000050010040267008500A300870138008800A3158200010201010201010101010102020103“}
TXT: 10.12.2019, 19:44:30 | Received IR Code | 200010201010201010101010102020103
TXT: 10.12.2019, 19:44:31 | ReceiveData AIO Gateway | {XC_EVT}{„type“:„IR“,„data“:„19082600000500100402630088013A008600A3008700A314EC00010102020102020202020201010203“}
TXT: 10.12.2019, 19:44:31 | Received IR Code | C00010102020102020202020201010203
TXT: 10.12.2019, 19:44:47 | ReceiveData AIO Gateway | {XC_EVT}{„type“:„IR“,„data“:„190826000001000000“}
TXT: 10.12.2019, 19:44:47 | Received IR Code | 0

Es kamen allerdings keine Daten an, als ich mit meinem Handy die Dosen geschaltet habe.
Auch interessant war, dass keinerlei Daten kamen, als ich mit dem von Dir empfohlenen Packet Sender getestet habe.
Naja, das ist, denke ich nicht so schlimm. Später soll ja alles über eine Oberfläche laufen.

kommen wir zu dem Anlernscript:

Das hat geklappt.
Das Script


<?php
//Documentation: https://www.symcon.de/en/service/documentation/concepts/scripts/action-scripts/
$response = file_get_contents("http://192.168.1.7/command?XC_FNC=LearnSC&type=R2&timeout=10000&_=1576001535970");
var_dump($response);

lieferte mir als Antwort (Dose angelernt) ein:

string(35) „{XC_SUC}{„CODE“:„6F7D4020BE01AAAA“}“

Wenn ich einfach die Dose nicht anlerne kommt ein:

string(28) „{XC_ERR}Failed to learn code“

Während ich das Script ausführte, kamen keinerlei Infos in den Debugfenstern an.

Ich hoffe, dass ich Dir jetzt viele Infos geben konnte :wink:

Beste Grüße,
Heynke

Hallo nochmal,

Nachdem ich endlich die oben genannten Werte gefunden hatte, dachte ich mal, dass ich mich um die Werte vom dimmen
kümmere. Diese habe ich inzwischen auch gefunden. Für eine dimmbare Steckdose wären es dann:

/command?XC_FNC=SendSC&type=R2&data=

63174101AAAA0A 10%
63174101AAAA14 20%
63174101AAAA0A 30%
63174101AAAA28 40%
63174101AAAA32 50%
63174101AAAA3C 60%
63174101AAAA46 70%
63174101AAAA50 80%
63174101AAAA5A 90%
63174101AAAA0A 100%

Adresse der Dose
Dimmwert in HEX

Beste Grüße,
Heynke

Korrektur!

63174101AAAA1E 30%

und

63174101AAAA64 100%

Sorry

Welche Firmware Version läuft dem auf dem Gateway? Bist Du sicher das das Gerät tatsächlich einen Status zurückmeldet oder wird der nur emuliert? Ändert sich also der Status z.B. in der App wenn das Gerät anderweitig geschaltet wird?
Was hast Du denn im Config Tool unter Advanced als Sensor Mode ausgewählt? Da müsste wohl RS2W ausgewählt sein.

Hallo Fonzo,

vielen Dank für Deine Nachricht.

Ich habe die Firmware in der Version 3.4.7 auf dem Gerät. Dies scheint auch die aktuellste Version zu sein.
Der Sensormode ist natürlich auf RS2W geschaltet.

Wie es aussieht, sind die Rückmeldungen emuliert. Also das Gerät sendet nicht selbstständig eine Nachricht ins Netz, wenn die Dosen anderweitig geschaltet werden. Es sendet nur einen Statuscode an den Sender zurück, wenn er einen Befehl sendet.

Beispiel:
Ich sende über den Browser ein: „http://192.168.1.7/command?XC_FNC=LearnSC&type=R2&timeout=10000&_=1576001535970“ zum anlernen einer neuen Dose und erhalte ein „{XC_ERR}Failed to learn code“ wieder zurück, weil ich nichts angelernt habe.

Schalte ich auf gleiche Weise eine Dose ein, ändert sich in der App auf dem Handy nichts. Erst wenn ich in der App auf „refresh“ tippe, ändert sich der Status der Dose in der App.

Man kann allerdings über den Befehl „http://192.168.1.7/command?XC_FNC=GetStates“ den Status von allen angelernten Geräten auslesen. Es wird ein (ich vermute mal) JSON ausgegeben. In meinem Fall wäre es:

{XC_SUC}[{„type“:„EVENT“,„adr“:„FF“,„state“:„0“},{„type“:„R2“,„adr“:„5876“,„state“:„00:00“},{„type“:„R2“,„adr“:„6317“,„state“:„00:00“},{„type“:„R2“,„adr“:„57DF“,„state“:„02:00“},{„type“:„R2“,„adr“:„6B93“,„state“:„00:00“},{„type“:„R2“,„adr“:„6F7D“,„state“:„00:00“},{„type“:„R2“,„adr“:„72E2“,„state“:„02:00“},{„type“:„R2“,„adr“:„12B1“,„state“:„00:00“},{„type“:„R2“,„adr“:„F7B2“,„state“:„00:00“}]

Jetzt könnte man als Lösung Symcon dazu anweisen in einem frei anpassbaren Intervall diesen Status abzufragen und dann die Rückmeldung, entsprechend zerlegt, grafisch anzuzeigen.

Wie das geht weiß ich leider nicht. Ich würde das liebend gerne selbst machen, aber mein Wissen rund um Symcon ist extrem begrenzt. Fürs erste würde mir reichen zu wissen, wie man so einen „CRON-JOB“ in Symcon anlegen kann.

Beste Grüße,
Heynke

Ok, mit der Info kann ich ja erst mal leben. dann erstelle ich mal eine Instanz für Renkforce, da kann man dann einstellen ob das ein Dimmer oder Switch ist und das Aktualisierungsintervall eintragen. damit sollte sich das dann schalten lassen. Den Status werden ich mal emulieren. Ob das dann mit dem Status so immer richtig funktioniert müsstest Du dann Rückmeldung geben. Ich melde mich wenn ich das Online gestellt habe.

Dankeschön.

Ein Tipp noch: Benenne das „Renkforce“ bitte in „Renkforce/Sygonix“.
Irgendwie habe ich bei Conrad keine Renkforce-Dosen mehr bekommen. Dafür aber Sygonix. Laut deren Beschreibung sind die Dosen zu 110% (kein Scherz, steht so auf der Verpackung) kompatibel. Ich tippe mal auf eine Umfirmierung.

Beste Grüße,
Heynke

Hallo,

Habe meine SIRO Antriebe erfolgreich im AIO Gateway angelernt. Die installation des Modules hat auch geklappt und auch hier ist ein anlernen der Antriebe möglich. In der Testumgebung funktioniert auch alles.
Jetzt möchte ich sie über ein Script schalten.
Habe es mit AIORF_SendIRCode(integer $InstanceID, integer $RFCodenumber) versucht.

AIORF_SendIRCode(38475 /*[Neo\Funk Geräte\AIO RF Device]*/,1908008100050029040489017700A40065004C00BE00A4087F0001010201020101020202010102020102010201010102020202010201020201010202010102020103)

Das funktioniert aber nicht, welcher CODE muss da rein, dies ist der angelernte in IPS.

Hallo,

keiner eine Idee ?

Mea culpa, die Readme ist da einfach falsch, muss ich ausbessern.
Da es sich um einen RF Code und keinen IR Code handelt muss der auch anders gesendet werden.
Du legst also ein AIO RF Device als Instanz an und trägst dort den Code ein.

Dann kannst Du mit


AIORF_SendRF1(17251); // Objekt ID der RF Instanz

den ersten hinterlegten RF Code senden


AIORF_SendRF2(17251); // Objekt ID der RF Instanz

sendet den zweiten hinterlegten RF Code.

Falls der Code wirklich funktionieren sollte gab es da Probleme beim anlernen? Welches Gatewaymodell mit welcher Firmware nutzt Du denn zum testen? Was ist denn dann grundsätzlich möglich bei Siro, hoch, runter, stop?

Hallo Fonzo,

Danke für die Info, werde ich am Abend mal probieren. Ich habe den Gateway V5 mit der neusten Firmware. Ja SIRO kann Hach, Runter, Stopp.

So habe mal getestet

AIO_SendRF1(38475 /*[Funk Geräte\Rollo 3]*/);

ergibt Fehlermeldung
Fatal error: Uncaught Error: Call to undefined function AIO_SendRF1() in C:\ProgramData\Symcon\scripts\49371.ips.php:2
Stack trace:
#0 {main}
thrown in C:\ProgramData\Symcon\scripts\49371.ips.php on line 2

Beim RF Device in der Testumgebung funktioniert alles.

Hallo,

Im Creator Neo kann ich die SIRO Antriebe auch unter Dooya Gerät anlernen,wo sie ja nur eine Adresse bekommen.
Vom Creator funktioniern sie auch. In IPS kann ich sie mit der Adresse auch als Dooya Gerät anlernen, hier funktioniert es aber nicht.

Sorry nochmal, hatte das von unterwegs mit dem Handy getippt.

Richtig muss die Methode lauten


AIORF_SendRF1(38475 /*[Funk Geräte\Rollo 3]*/);

Hallo Fonzo,

Danke hat soweit alles geklappt. Jetzt ist Zeit zum ausprobieren,

Finde ich gut das Siro anscheinend geht. Das mit Dooya muss ich mir mal bei Gelegenheit anschauen. Das mit Dooya muss ich mir mal anschauen. Aus NEO selber lässt das Siro Gerät also auch als Dooya ansprechen? Rückmeldung gibt Siro aber nicht oder doch? Bekommst Du im UDP Socket irgendwas angezeigt?

Hallo Fonzo,

Die Siro Antriebe lassen sich in Neo über Dooya ansprechen, eine Rückmeldung kommt nicht da meine Antriebe nicht Bi sind. Ist mir aber nicht so wichtig.
Was mir aber aufgefallen ist, das manchmal jede sec. eine Fehlermeldung kommt. Ist dann aber auch wieder von alleine weg.

06.01.2020, 10:35:18 | FlowHandler | Kann Daten nicht zur Instanz #30977 weiterleiten: <br />
<b>Notice</b>: Trying to get property ‚type‘ of non-object in <b>C:\ProgramData\Symcon\modules\IPSymconAIOGateway\AIO Splitter\module.php</b> on line <b>442</b><br />
<br />
<b>Notice</b>: Trying to get property ‚data‘ of non-object in <b>C:\ProgramData\Symcon\modules\IPSymconAIOGateway\AIO Splitter\module.php</b> on line <b>443</b><br />

Die 30977 ist die Splitter Instanz.

Hallo,

ist es möglich die Laufzeit der Antriebe in den Befehl mit einzubauen ? Dann könnte ich bestimmte Positionen anfahren.

Du kannst ja mal mit Shutter Control rumspielen ob Du da zu einem Ergebnis kommst.