[Neuer Adapter] SIA DC-09 Server für Alarmanlagen

Wie man einen Adapter entwickelt, oder wie man debuggen kann.
Antworten
tstueben
starter
Beiträge: 96
Registriert: 30.11.2017, 15:37

[Neuer Adapter] SIA DC-09 Server für Alarmanlagen

Beitrag von tstueben » 08.06.2018, 20:25

Hallo,

ich stelle einen weiteren Adapter zur Verfügung um Nachrichten von/aus Alarmanlagen zu empfangen. Unterstützt wird das standardisiertes Protokoll SIA DC-09. Das Protokoll wird von vielen Alarmanlagenherstellern wie ABUS, Lupusec, usw. unterstützt.

Mehr Infos zu SIA DC-09 findet ihr hier. Wie die SIA Nachrichten aussehen, könnt ihr mit dem online Simulator testen.

Ich selber habe den Adapter mit der Alarmanlage Lupusec XT2 getestet. Es wäre toll, wenn jemand den SIA Adapter mit einem anderen Hersteller als Lupusec testen könnte!

Folgende Felder werden im Adapter angezeigt:
sia.png
Entscheidend ist das "msgdata" Feld. Dort wird der Zustand verschlüsselt wie z.B. Einbruch, Feueralarm, ... Die Beschreibung der verschiedenen Events findet Ihr hier


ioBroker SIA Adapter : https://github.com/schmupu/ioBroker.sia

Über Feedback freue ich mich!

Benutzeravatar
apollon77
guru
Beiträge: 6254
Registriert: 10.04.2015, 12:27

Re: [Neuer Adapter] SIA DC-09 Server für Alarmanlagen

Beitrag von apollon77 » 13.06.2018, 20:36

Hier ein bisschen Entwickler-Feedback:

- Du hast in lib/test nochmal die Test Files. Doppelt ... Denke können da weg
- Bitte auch in io-package ein common.license einfügen mit der Lizenz
- Wenn du on(objectchange) oder on(stateChange) nicht brauchst mach es raus.
- Du solltes deleteObjects und createObjects nacheinander ausführen. Parallel kann komische Effekte haben! AM besten das zweite per callback nach dem ersten aufrufen.


Sonst ggf ein Reconnect falls die Verbindung mal abgebrochen wird?

Ingo
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel/Log-Stufe

tstueben
starter
Beiträge: 96
Registriert: 30.11.2017, 15:37

Re: [Neuer Adapter] SIA DC-09 Server für Alarmanlagen

Beitrag von tstueben » 15.06.2018, 07:27

apollon77 hat geschrieben:
13.06.2018, 20:36
Hier ein bisschen Entwickler-Feedback:

- Du hast in lib/test nochmal die Test Files. Doppelt ... Denke können da weg
- Bitte auch in io-package ein common.license einfügen mit der Lizenz
- Wenn du on(objectchange) oder on(stateChange) nicht brauchst mach es raus.
- Du solltes deleteObjects und createObjects nacheinander ausführen. Parallel kann komische Effekte haben! AM besten das zweite per callback nach dem ersten aufrufen.


Sonst ggf ein Reconnect falls die Verbindung mal abgebrochen wird?

Ingo
Guten Morgen,

die Punkte 1. und 3. habe ich umgesetzt und kommen mit der nächsten Version.
Ist Punkt 4. (deleteObjects und createObjects) relevant, obwohl es sich um komplett unterschiedliche IDs handelt. DeleteObject wird nur ausgeführt wenn ein channel + states gelöscht wird, CreateObject wenn ein neuer noch nicht vorhandener Channel + States dazu kommt (es kann dabi nicht der zu löschende channel + state sein)?

Kannst Du mir mit dem Reconnect weiterhelfen? Meinst Du damit die serverStart() Funktion? Und wie setzte ich das am besten um?

Code: Alles auswählen

function serverStart() {

  server = net.createServer(onClientConnected);

  server.listen(adapter.config.port, adapter.config.bind, function() {

    var text = 'SIA Server listening on IP-Adress: ' + server.address().address + ':' + server.address().port;
    adapter.log.info(text);

  });

}

Benutzeravatar
apollon77
guru
Beiträge: 6254
Registriert: 10.04.2015, 12:27

Re: [Neuer Adapter] SIA DC-09 Server für Alarmanlagen

Beitrag von apollon77 » 15.06.2018, 11:55

tstueben hat geschrieben:
15.06.2018, 07:27
Ist Punkt 4. (deleteObjects und createObjects) relevant, obwohl es sich um komplett unterschiedliche IDs handelt. DeleteObject wird nur ausgeführt wenn ein channel + states gelöscht wird, CreateObject wenn ein neuer noch nicht vorhandener Channel + States dazu kommt (es kann dabi nicht der zu löschende channel + state sein)?
Hm, wenn das so ist dann sollte es egal sein. :-)
tstueben hat geschrieben:
15.06.2018, 07:27
Kannst Du mir mit dem Reconnect weiterhelfen? Meinst Du damit die serverStart() Funktion? Und wie setzte ich das am besten um?

Code: Alles auswählen

function serverStart() {

  server = net.createServer(onClientConnected);

  server.listen(adapter.config.port, adapter.config.bind, function() {

    var text = 'SIA Server listening on IP-Adress: ' + server.address().address + ':' + server.address().port;
    adapter.log.info(text);

  });

}
ICh würde hier den Connect Vorgang in eine Funktion packen und nach einem Close des Servers (wo Du glaube schon loggst) einfach mit "setTimeout(serverStart, 2000)" nach 2s später einfach neu verbinden :-)
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel/Log-Stufe

Antworten