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. Es sind nur ganze Zahlen zulässig.

Feld	Bedeutung
HK1RaumTag	Raumtemperatur HK1 Tag
HK1RaumNacht	Raumtemperatur HK1 Nacht
HK1BetrArt	Betriebsart HK1
HK2RaumTag	Raumtemperatur HK2 Tag
HK2RaumNacht	Raumtemperatur HK2 Nacht
HK2BetrArt	Betriebsart HK2
WWTmp	Temperatur WW
WWBetrArt	Betriebsart WW