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.
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>>);
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
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 |
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 |
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 |
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) |
http://192.168.0.2:8080/99?t=163
{ "AusTmpGed":11.2 }
Feld | Bedeutung |
---|---|
AusTmpGed | Aussentemperatur gedämpft |
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.
{ "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 |