iBricks Cloud

Es gibt ein eine Test und eine Produktion Cloud.


Test Cloud

Ist zum testen und der Regestrierungs Schlüssel ist länger gültig. Unsere neusten Entwicklungen werden zuerst auf dieser Cloud getestet bevor sie auf die Produktion Cloud aufgeschaltet werden. test.myibricks.info

Produktion Cloud

Ist für den Produktiven Einsatz für die Endkunden und der Regestrierungs Schlüssel ist nur ein Tag gültig. myibricks.com


Kommunikation mit der iBricks Cloud

Der ADeCS service ist auf folgender URL erreichbar

  test.myibricks.info/adecsservice/communicate/
  myibricks.com/adecsservice/communicate/

Die Geräte Kommunikation erfolgt über eine verschlüsselte WebSocket (wss) Verbindung. Über die WebSocket Verbindung wird mittels JSON Kommuniziert.

Verschlüsselung: TLS 1.2 https://de.wikipedia.org/wiki/Transport_Layer_Security

WebSocket: https://de.wikipedia.org/wiki/WebSocket

JSON: https://www.json.org/

Codierung: UTF8 https://de.wikipedia.org/wiki/UTF-8



Anmelde Verfahren eines Gerätes durch den Hersteller

Der Geräte Hersteller stellt die erste Verbindung mit der Cloud her und somit wird das jeweilige Gerät registriert und in der “DeviceBase” aufgenommen. Mit dem Hersteller Regestrierungs Schlüssel wird wird ein Zugangsschlüssel (accesskey) gelöst, der bestätigt werden muss, danach wird der Kommunikationschlüssel (communicationkey) und die Gültigkeits Dauer (expirationinminutes) des Kommunikationschlüssel gesendet.

<manufacturerId> Kennung des Herstellers (von iBricks vorgegeben)
<productId> Kennung des Produkts (von iBricks vorgegeben)
<deviceId> Eindeutige Adresse des Geräts (Normalerweise MAC Adersse)
  wss send --> {"command":"registerdevice","manufacturerid":"<manufacturerId>","productid":"<productId>","deviceid":"<deviceId>","registeringkey":"<Registeringkey>"}
  wss receive <-- {"accesskey":"<newAccessKeyFromCloud>"}
  wss send --> {"command":"accesskeyconfirm","manufacturerid":"<manufacturerId>","productid":"<productId>","deviceid":"<deviceId>","accesskey":"<newAccessKeyFromCloud>"}
  wss receive <-- {"communicationkey":"<Communicationkey>","expirationinminutes":"<expirationinminutes>"}

Der Zugangsschlüssel ist immer nur einmalig gültig und wird zum erneuern des Kommunikationschlüssel benötigt. (Bei jedem neustart des Gerätes oder wenn die Gültigkeits Dauer abgelaufen ist)

  wss send --> {"command":"renewaccesskey","manufacturerid":"<manufacturerId>","productid":"<productId>","deviceid":"<deviceId>","accesskey":"<oldAccessKey>"}
  wss receive <-- {"accesskey":"<newAccessKeyFromCloud>"}
  wss send --> {"command":"accesskeyconfirm","manufacturerid":"<manufacturerId>","productid":"<productId>","deviceid":"<deviceId>","accesskey":"<newAccessKeyFromCloud>"}
  wss receive <-- {"communicationkey":"<Communicationkey>","expirationinminutes":"<expirationinminutes>"}



Anmelde Verfahren eines Gerätes durch den Endkunden

Der Endkunde verbindet sein Gerät mit dem Internet und gibt im Gerät seine Cloud Benutzer Name (username) und Beschreibeung (desc) ein. Das Gerät wird automatisch auf der Visu im Map gemäss Beschreibeung angelegt.

  wss send --> {"command":"pairdevice","manufacturerid":"<manufacturerId>","productid":"<productId>","deviceid":"<deviceId>","communicationkey":"<Communicationkey>","username":"<Username>","desc":"<Desc>"}



Geräte Kommunikation mit der Cloud

KISSnet Telegramm Das KISSnet ist ein Protokoll das durch iBricks Entwickelt wurde und vorallem gedacht ist um mit microcontroller zu Kommunizieren.

  wss send --> {"manufacturerid":"<manufacturerId>","productid":"<productId>","deviceid":"<deviceId>","communicationkey":"<Communicationkey>","kiss":"<KISSnet Telegramm>"}

JSON Anstelle des KISSnet Protokolles können die Daten verschachtelt auch im JSON Format gesendet werden

  wss send --> {"manufacturerid":"<manufacturerId>","productid":"<productId>","deviceid":"<deviceId>","communicationkey":"<Communicationkey>","data":{"zoneid":"<ZoneId>","command":"<Command>"}}



iBricks Cloud Verbindungens Übersicht als PDF

ibricks_cloud_verbindungen.pdf




Hello World Beispiel

Html Webseite mit JavaScript die mit der Test Cloud Kommuniziert ohne Anmeldeverfahren

  <!DOCTYPE html>
  <meta charset="utf-8" />
  <title>WebSocket Test</title>
  <script language="javascript" type="text/javascript">
 
  var wsUri = "wss://test.myibricks.info/adecsservice/communicate/";
  var output;
  var _sendInterval;
 
  function init()
  {
    output = document.getElementById("output");
    testWebSocket();
  }
 
  function testWebSocket()
  {
    websocket = new WebSocket(wsUri);
    websocket.onopen = function(evt) { onOpen(evt) };
    websocket.onclose = function(evt) { onClose(evt) };
    websocket.onmessage = function(evt) { onMessage(evt) };
    websocket.onerror = function(evt) { onError(evt) };
  }
 
  function onOpen(evt)
  {
    writeToScreen("CONNECTED");
    _sendInterval = setInterval(function() {doSend('{"manufacturerid":"hersteller","productid":"geraet","deviceid":"5CCF7F0A3D29","command":"hello"}');}, 2000);
  }
 
  function onClose(evt)
  {
    clearInterval(_sendInterval);
    writeToScreen("DISCONNECTED");
  }
 
  function onMessage(evt)
  {
    writeToScreen('<span style="color: blue;">RESPONSE: ' + evt.data+'</span>');
    // websocket.close();
  }
 
  function onError(evt)
  {
    writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data);
  }
 
  function doSend(message)
  {
    writeToScreen("SENT: " + message);
    websocket.send(message);
  }
 
  function writeToScreen(message)
  {
    var pre = document.createElement("p");
    pre.style.wordWrap = "break-word";
    pre.innerHTML = message;
    output.appendChild(pre);
  }
 
  window.addEventListener("load", init, false);
 
  </script>
 
  <h2>WebSocket Test</h2>
 
  <div id="output"></div>