API2

From Larnitech wiki page
Jump to navigation Jump to search
This page contains changes which are not marked for translation.

API2 works via WebSocket connection, so you can interact with your Larnitech server from a browser using extensions (such as WebSocket Test Client).
To get started, you should:

1. Establish a web socket connection.
Locally

ws://IPADDR:PORT/api

Where: IPADDR – ip address of your metaforsa or DE-MG;
PORT – port for API2 (you can get it from LT_Setup => General => API => Websocket port (2041 by default);
Or use next for remote:

wss://SERIAL.in.larnitech.com:8443/api

Where: SERIAL is serial number of your server, you can find it in LT_Setup => General

2. Authorize

{
    "request": "authorize",
    "key": "XXXXXXXXXXXXXXX"
}

Where XXXXXXXXXXXXXXX - key from LT_Setup => Security => Show API key

3.After this you can send json requests:

Fields of JSON_REQUEST:

  • "request" - Type of request:
    • “get-devices” – request for getting the list of all devices;
    • “status-get” – request for getting device status;
    • “status-set” – request for setting device status;
    • “status-subscribe” – request for subscribe events (WebSocket only)
  • “key” – key for API plugin (you can get it from LT Setup=>Plugins=>API=>Configure button).
  • “addr” – address of device.
  • “status” – status of device.

Examples of requests and responses:

  1request:
  2{"request":"get-devices", "status":"detailed"}
  3 
  4response:
  5{
  6	"response":"get-devices",
  7	"devices":[
  8		{
  9			"addr":"158:21",
 10			"type":"ir-receiver",
 11			"name":"IR receiver",
 12			"area":"Setup",
 13			"status":{
 14				"state":"undefined"
 15			}
 16		},
 17		{
 18			"addr":"158:40",
 19			"type":"com-port",
 20			"name":"RS232",
 21			"area":"Setup",
 22			"status":{
 23				"state":"undefined"
 24			}
 25		},
 26		{
 27			"addr":"33:200",
 28			"type":"climate-control",
 29			"name":"climate",
 30			"area":"Living room",
 31			"status":{
 32				"state":"on",
 33				"setpoint":23.0,
 34				"setpoint-heat":21.0,
 35				"setpoint-cool":25.0,
 36				"current-temperature":0.0,
 37				"pid-temperature":100,
 38				"current-humidity":0.0,
 39				"current-co2":0,
 40				"automation":"Comfort",
 41				"mode":"auto",
 42				"time-interval":0
 43			},
 44			"automations":[
 45				"Comfort"
 46			],
 47			"automation":"Comfort",
 48			"modes":[
 49				"heat",
 50				"cool"
 51			]
 52		},
 53		],
 54	"found":3
 55}
 56
 57request:
 58{"request":"status-get","addr":"158:240", "status":"detailed"}
 59response:
 60{
 61	"response":"status-get",
 62	"devices":[
 63		{
 64			"addr":"158:240",
 65			"type":"valve-heating",
 66			"status":{
 67				"state":"off"
 68			}
 69		}
 70	],
 71	"found":1
 72}
 73 
 74request:
 75{"request":"status-set","addr":"999:250", "status":{"state":"off"}}
 76 
 77response:
 78{
 79	"response":"status-set",
 80	"devices":[
 81		{
 82			"addr":"999:250",
 83			"success":true
 84		}
 85	]
 86}
 87 
 88request:
 89{"request":"status-subscribe","addr":"999:250"}
 90 
 91response:
 92{
 93	"response":"status-subscribe",
 94	"devices":[
 95		{
 96			"addr":"999:250",
 97			"status":"0x08"
 98		}
 99	],
100	"found":1,
101	"subscribed":1
102}
103 
104request:
105{"request":"status-set","addr":"999:250", "status":"0x01"}
106 
107response:
108{
109	"response":"status-set",
110	"devices":[
111		"999:250"
112	]
113}
114
115request (set status for climate-control):
116{"request":"status-set","addr":"33:200", "status":{"state":"on","setpoint-heat":21.0}}
117
118response:
119{
120	"response":"status-set",
121	"devices":[
122		{
123			"addr":"33:200",
124			"success":true
125		}
126	]
127}

CURL

1<item addr="585:16" auto-period="1" cfgid="4" name="color-temp dimmer" type="dimer-lamp"/>
2<item addr="585:17" name="main dimmer" type="dimer-lamp" auto-period="600" color-temp="585:16"/>

1. Use request to get detailed info about element with "status":"detailed"

1curl --header 'Content-Type: application/json' --data '{"request":"status-get", "API-KEY":"ENTER_API_KEY", "addr":"585:17", "status":"detailed"}' 'http://de-mg.local/API2/'


2. Use request to set brightness for dimmer element

1curl --header 'Content-Type: application/json' --data '{"request":"status-set","API-KEY":"ENTER_API_KEY", "addr":"585:17", "status":{"level":10}}' 'http://de-mg.local/API2/'


3. Use request to set color-temp for dimmer element

1curl --header 'Content-Type: application/json' --data '{"request":"status-set","API-KEY":"ENTER_API_KEY","addr":"585:17", "status":{"color-temp":100}}' 'http://de-mg.local/API2/'