Benutzer-Werkzeuge

Webseiten-Werkzeuge


wiki:ems:json-zugriff

Zugriff über JSON

Auswahl des Telegramtyps über die URL

Die JSON Schnittstelle ist eine spezielle Seite. Das gewünschte Telegramm wird über den Parameter t=xx ausgewählt, wobei xx der Telegrammtyp in dezimal ist.

Beispiel:

http://192.168.0.2:8080/99?t=24

Liefert das Telegramm mit dem Typ 24 (0x18), also UBAMonitorFast.

Unterstützt werden:

Telegrammtyp \ hex Telegrammtyp \ dez Name
0x06 6 RCTime
0x14 20 UBABetriebszeit
0x18 24 UBAMonitorFast
0x19 25 UBAMonitorSlow
0x34 52 UBAMonitorWW
0x3e 62 HK1Monitor
0xA3 163 RCOutdoorTemp

Es werden jeweils die Daten des zuletzt empfangenen Telegramms zurück geliefert. Das EMS-Gateway hat einen Datenpuffer pro Telegrammtyp.

JSON vs. JSONP

Wenn man per Javascript im Browser das GW abfragen möchte, so geht das nicht per JSON, da es aus Sicherheitsgründen nicht möglich ist, per Ajax auf eine andere Domäne als die der Webseite zuzugreifen. Mit JSONP geht das.

Der Callback Name ist fest mit „cb“ vorgegeben. Die Antwort sieht dann so aus:

cb(<<JSON-Payload>>);

Noch mehr Spaß mit Javascript/JSON/POST

Versucht man per Javascript JSON zu posten, so wird bei Cross-Domain-Request ein sogenannter „preflight“ Request gesendet:

OPTIONS /99?t=25 HTTP/1.1
Origin: http://127.0.0.1
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type

Der Browser fragt damit den Server, ob er die POST-Methode aufrufen darf. Der Server (EMS-GW) muss darauf eine definierte Antwort geben, ansonsten wird der POST Aufruf nicht gesendet.

Die Antwort sieht so aus (ab FW > 131211):

HTTP/1.1 200 OK
Access-Control-Allow-Origin:*
Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Methods:POST,GET
Content-Length:0

Abfrage von Daten

RCTime (0x06)

http://192.168.0.2:8080/99?t=6

{
  "h":6,
  "mi":13,
  "s":7,
  "j":2013,
  "m":11,
  "d":6,
}
Feld Bedeutung
h Stunde
mi Minute
s Sekunde
j Jahr
m Monat
d Tag

http://192.168.0.2:8080/99?t=20

{
  "BetrZt":2040577
}
Feld Bedeutung
BetrZt Betriebszeit (min)

http://192.168.0.2:8080/99?t=24

{
  "VlTmpSoll":21,
  "VlTmp":25.2,
  "RlTmp":24.9,
  "KslLstMax":100,
  "KslLst":21,
  "WWTmp":51.2,
  "WDruck":1.2,
  "FlStr":14.1,
  "SC":"0Y",
  "FC":204,
  "Gs":0,
  "Gbl":0,
  "Znd":0,
  "PmpKsl":0,
  "PmpZrk":0,
  "DWgVnt":0
}
Feld Bedeutung
VlTmpSoll Vorlauftemperatur Soll
VlTmp Vorlauftemperatur Ist
RlTmp Rücklauftemperatur Ist
KslLstMax Kesselleistung Maximal
KslLst Kesselleistung
WWTmp Warmwassertemperatur
WDruck Wasserdruck
FlStr Flammenstrom
SC Servicecode
FC Fehlercode
Gs Wasserdruck
Gbl Wasserdruck
Znd Wasserdruck
PmpKsl Kesselpumpe
PmpZrk Zirkulationspumpe
DWgVnt Dreiwegeventil auf WW

UBAMonitorSlow (0x19)

http://192.168.0.2:8080/99?t=25

{
  "AnzBrSt":27659,
  "BetrZtHz":1288200,
  "BetrZtKp":1405641,
  "PumpMod":100,
  "AusTmp":3.2,
  "KslTmp":21.0
}
Feld Bedeutung
AnzBrSt Anzahl Brennerstarts
BetrZtHz Betriebszeit Heizen (min)
BetrZtKp Betriebszeit Komplett (min)
PumpMod Pumpenmodulation %
AusTmp Aussentemperatur
KslTmp Kesseltemperatur

UBAMonitorWW (0x34)

http://192.168.0.2:8080/99?t=52

{
  "AnzWWBer":10217,
  "BetrZtWW":117441,
  "WWTmpSoll":50,
  "WWTmp":51.2
}
Feld Bedeutung
AnzWWBer Anzahl Warmwasserbereitungen
BetrZtWW Betriebszeit Warmwasserbereitung (min)
WWTmpSoll Temperatur Warmwasser Soll
WWTmp Temperatur Warmwasser

HK1Monitor (0x3e)

HK1Monitor (0x48)

http://192.168.0.2:8080/99?t=62

{
  "RaumTmpSoll":20.0,
  "RaumTmp":24.5,
  "RaumTmpDelta":0.02
}
Feld Bedeutung
RaumTmpSoll Raumtemperatur Soll
RaumTmp Raumtemperatur
RaumTmpDelta Raumtemperatur Änderung (K/min)

RCOutdoorTemp (0xa3)

http://192.168.0.2:8080/99?t=163

{
  "AusTmpGed":11.2
}
Feld Bedeutung
AusTmpGed Aussentemperatur gedämpft

Spezielle Werte

Auf dem EMS Bus werden spezielle Werte genutzt, wenn ein Meßwert fehlt. Für vorzeichenbehaftete 2-Byte Werte (Temperatur) ist das die 0x8000, die dann als -3276.8 erscheint. Für vorzeichenlose 1-Byte Werte (Druck) ist das 0xff, welches zu 25.5 wird.

Posten von Daten

http://192.168.0.2:8080/

{
  "HK1RaumTmp":"22"
}

Die Werte werden einzeln d.h. ein Wert pro POST-Request gesetzt. Der JSON-Parser ist stark vereinfacht. Es sind daher nur ganze Zahlen zulässig und die Anführungszeichen sind notwendig.

Feld Bedeutung Telegramm
HK1RaumTag Raumtemperatur HK1 Tag 0b 10 3d 02 xx
HK1RaumNacht Raumtemperatur HK1 Nacht 0b 10 3d 01 xx
HK1BetrArt Betriebsart HK1 0b 10 3d 07 xx
HK2RaumTag Raumtemperatur HK2 Tag
HK2RaumNacht Raumtemperatur HK2 Nacht
HK2BetrArt Betriebsart HK2
WWTmp Temperatur WW
WWBetrArt Betriebsart WW
wiki/ems/json-zugriff.txt · Zuletzt geändert: 2015/12/30 21:00 (Externe Bearbeitung)