{"info":{"_postman_id":"144686dc-2960-44bf-b5c4-a647264c8c8d","name":"dingz 1.2.x","description":"<html><head></head><body><h1 id=\"general-conventions\">General conventions</h1>\n<p>Generally any HTTP GET request returns parameters for specific module the the result generally is in JSON format. The HTTP POST request set parameters for specific module. The parameters in the POST request can be specified in HTTP request body or in path, the content type of body with parameters generally are x-www-form-urlencoded format or JSON format, the content type header is not interpreted. The state of POST method (set some parameters) can by achieved by HTTP response code, if the code is 200 OK then request are applied, if there is something wring with path or request parameters or body then 4xx or 5xx code is returned.</p>\n<h1 id=\"help\">Help</h1>\n<p>The fastest way to check available API paths is use the /help API. It return list of request possibilities with information about parameters type and ranges.</p>\n<p>The [] brackets means that parameter is optional.</p>\n<p>The &lt;&gt; brackets defines parameter type and range.</p>\n<p>The range and type can be preceded by parameter name. The parameters without name can occur in path and parameters with name can occur in query.</p>\n<p>If parameters list occur after path without space (after question mark) this means that parameters should be specified in path (query part) or in body.</p>\n<p>If parameter list occur after path with space this mean that parameters should be send in body as JSON.</p>\n<h1 id=\"api-description\">API description</h1>\n<p>Dingz offers a REST API (REST = representational State Transfer).</p>\n<p>The interface allows you to access/control your dingz device directly from your local network independently from the dingz cloud.\nWith those rules you can integrate your dingz in almost any environment.</p>\n<p>Not all methods available in help are described, to change some settings best approach is to use WebUI interface. The methods described in this place mainly relate to access, control, collect measurements and device description.</p>\n<h2 id=\"mac-address\">MAC address</h2>\n<p>Often in these request you will see a number like this <code>200AD4074I68</code>. This is the MAC address of the device without any delimiers.</p>\n<h2 id=\"detect-dingz\">Detect dingz</h2>\n<p>To discover dingz on your network, you need to listen on udp port 7979. Each dingz device sends an 8-byte message. The first 6 bytes contain the MAC address of the device, the seventh byte corresponds to the device type (currently all dingz devices broadcast with type 108). The last byte contains the status bits described in the table below:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Bit number</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>0</td>\n<td>Defines whether the device is a child, this bit is set in MESH networks, currently it is always 0.</td>\n</tr>\n<tr>\n<td>1</td>\n<td>Determines whether the device is registered in the myStrom service.</td>\n</tr>\n<tr>\n<td>2</td>\n<td>Determines whether the device is connected to the myStrom server.</td>\n</tr>\n<tr>\n<td>3</td>\n<td>The bit is set to 1 if the device has been restarted, this bit can be cleared with <code>api/v1/rebooted</code>. Information from this bit can be useful in detecting device restart and taking actions related to reading parameters on this basis.</td>\n</tr>\n<tr>\n<td>4..7</td>\n<td>Reserved.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"security\">Security</h2>\n<p>In order to increment security you can set WebUI password and/or token to protect access over HTTP to device. Please apply strong security mechanisms to protect your network.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"General conventions","slug":"general-conventions"},{"content":"Help","slug":"help"},{"content":"API description","slug":"api-description"}],"owner":"11123877","collectionId":"144686dc-2960-44bf-b5c4-a647264c8c8d","publishedId":"TVKD1x7V","public":true,"customColor":{"top-bar":"AAAAAA","right-sidebar":"303030","highlight":"A448A4"},"publishDate":"2020-09-22T18:24:04.000Z"},"item":[{"name":"Info","item":[{"name":"Get info","id":"e2b0c3e2-2a57-4d56-832d-2442d8f59847","protocolProfileBehavior":{"disabledSystemHeaders":{"user-agent":true,"accept-encoding":true,"connection":true},"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/info","description":"<p>Gets general information about your dingz device. Will return a JSON object with:</p>\n<ul>\n<li><code>version</code>: Current firmware version</li>\n<li><code>mac</code>: MAC address, without any delimiters</li>\n<li><code>type</code>: Device type it always have value 108</li>\n<li><code>ssid</code>: SSID of the currently connected network</li>\n<li><code>ip</code>: Current ip address</li>\n<li><code>mask</code>: Mask of the current network</li>\n<li><code>gateway</code>: Gateway of the current network</li>\n<li><code>dns</code>: DNS of the curent network</li>\n<li><code>static</code>: Wether or not the ip address is static</li>\n<li><code>connected</code>: Wether or not the device is connected to the internet</li>\n</ul>\n<p>Remarks:</p>\n<ul>\n<li>ip, mask, gateway, dns are set only if device is connected in static IP mode (static: true)</li>\n</ul>\n","urlObject":{"path":["api","v1","info"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"efccd9fa-8b22-41cb-b231-3bc23ff94ee1","name":"General information","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/info"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"139"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"version\": \"1.2.2\",\n    \"mac\": \"30AEA4573628\",\n    \"type\": 108,\n    \"ssid\": \"sjj_5G\",\n    \"ip\": \"\",\n    \"mask\": \"\",\n    \"gateway\": \"\",\n    \"dns\": \"\",\n    \"static\": false,\n    \"connected\": true\n}"},{"id":"fa755985-0f69-4eff-bdb4-43677b842a44","name":"General information","originalRequest":{"method":"GET","header":[],"url":"[dingz IP]/info"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"125"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"version\": \"3.14.36\",\n    \"mac\": \"840D8E030BF0\",\n    \"ssid\": \"\",\n    \"ip\": \"\",\n    \"mask\": \"\",\n    \"gateway\": \"\",\n    \"dns\": \"\",\n    \"static\": false,\n    \"connected\": false\n}"}],"_postman_id":"e2b0c3e2-2a57-4d56-832d-2442d8f59847"},{"name":"Get device","id":"3e31606a-037f-46e4-a05d-6478c634b775","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/device","description":"<p>Returns information about device configuration, hardware / software version, manufacturing dates and other details. The following table describes the fields for the returned JSON object:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Mandatory</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>type</td>\n<td>STRING</td>\n<td>yes</td>\n<td>The device type, it always have value: \"dingz\".</td>\n</tr>\n<tr>\n<td>battery</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>If the device is powered by batteries, in dingz case it have value \"false\".</td>\n</tr>\n<tr>\n<td>reachable</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>If device is reachable (present), it always have value true.</td>\n</tr>\n<tr>\n<td>meshroot</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>If device is a root device, that is, the master device.</td>\n</tr>\n<tr>\n<td>fw_version</td>\n<td>STRING</td>\n<td>yes</td>\n<td>Front firmware version.</td>\n</tr>\n<tr>\n<td>hw_version</td>\n<td>STRING</td>\n<td>yes</td>\n<td>Front hardware version.</td>\n</tr>\n<tr>\n<td>fw_version_puck</td>\n<td>STRING</td>\n<td>yes</td>\n<td>Puck/base firmware version.</td>\n</tr>\n<tr>\n<td>bl_version_puck</td>\n<td>STRING</td>\n<td>yes</td>\n<td>Puck/base bootloader firmware version.</td>\n</tr>\n<tr>\n<td>hw_version_puck</td>\n<td>STRING</td>\n<td>yes</td>\n<td>Puck/base hardware version.</td>\n</tr>\n<tr>\n<td>puck_sn</td>\n<td>STRING</td>\n<td>no</td>\n<td>Puck/base serial number.</td>\n</tr>\n<tr>\n<td>puck_production_date</td>\n<td>OBJECT</td>\n<td>yes</td>\n<td>Puck/base year/month/day of production.</td>\n</tr>\n<tr>\n<td>puck_hw_model</td>\n<td>STRING</td>\n<td>no</td>\n<td>Puck/base hardware model.</td>\n</tr>\n<tr>\n<td>front_hw_model</td>\n<td>STRING</td>\n<td>no</td>\n<td>Front hardware model.</td>\n</tr>\n<tr>\n<td>front_production_date</td>\n<td>STRING</td>\n<td>no</td>\n<td>Front production date in dot notation.</td>\n</tr>\n<tr>\n<td>front_sn</td>\n<td>STRING</td>\n<td>no</td>\n<td>Front serial number.</td>\n</tr>\n<tr>\n<td>front_color</td>\n<td>STRING</td>\n<td>no</td>\n<td>Front cover color in shortcut format.</td>\n</tr>\n<tr>\n<td>dip_config</td>\n<td>UINT</td>\n<td>yes</td>\n<td>Puck/base DIP switch configuration.<br />3 - 4 DIMMERS<br />2 - 1 SHADE and 2 DIMMERS<br />1 - 2 DIMMERS and 1 SHADE<br />0 - 2 SHADES</td>\n</tr>\n<tr>\n<td>has_pir</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>If device have PIR.</td>\n</tr>\n<tr>\n<td>hash</td>\n<td>STRING</td>\n<td>yes</td>\n<td>Front firmware signature.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","device"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"3ec5cdfa-407e-4078-b53a-9d6456c16f71","name":"Get device","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/device"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"478"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"30AEA4573628\": {\n        \"type\": \"dingz\",\n        \"battery\": false,\n        \"reachable\": true,\n        \"meshroot\": true,\n        \"fw_version\": \"1.2.2\",\n        \"hw_version\": \"1.2.3\",\n        \"fw_version_puck\": \"1.1.21\",\n        \"bl_version_puck\": \"1.0.0\",\n        \"hw_version_puck\": \"1.2.3\",\n        \"hw_id_puck\": 1,\n        \"puck_sn\": \"P1907DZ00001\",\n        \"puck_production_date\": {\n            \"year\": 19,\n            \"month\": 7,\n            \"day\": 1\n        },\n        \"puck_hw_model\": \"DZ1B-4CH\",\n        \"front_hw_model\": \"DZ1F-PIR\",\n        \"front_production_date\": \"20/7/21\",\n        \"front_sn\": \"F20072100001\",\n        \"front_color\": \"LG\",\n        \"dip_config\": 1,\n        \"has_pir\": true,\n        \"hash\": \"2feaf4e5\"\n    }\n}"}],"_postman_id":"3e31606a-037f-46e4-a05d-6478c634b775"},{"name":"Get state","id":"32458530-5210-4c80-85b7-8be4534955a8","protocolProfileBehavior":{"disabledSystemHeaders":{"user-agent":true,"accept-encoding":true,"connection":true},"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/state","description":"<p>Thanks to this API, you can download values from many modules at the same time, you do not have to submit separate queries for individual modules.</p>\n<p>The following table describes the JSON object returned by this request.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Mandatory</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dimmers[i].on</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>The dimmer turned on/off status.</td>\n</tr>\n<tr>\n<td>dimmers[i].value</td>\n<td>UINT (0..100)</td>\n<td>yes</td>\n<td>The dim value set on dimer. This value have 0 if the the on field is false.</td>\n</tr>\n<tr>\n<td>dimmers[i].ramp</td>\n<td>UINT (0..255)</td>\n<td>yes</td>\n<td>The ramp (how quickly change dim value) set on dimmer. The ramp is always 0 for non dimmable outputs.</td>\n</tr>\n<tr>\n<td>dimmers[i].readonly</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>If the dimmer is disabled, for example if the output is configured as input or thermostat is enabled.</td>\n</tr>\n<tr>\n<td>dimmers[i].index.relative</td>\n<td>UINT (0..3)</td>\n<td>yes</td>\n<td>The relative index of dimmer (depending on DIP switch configuration) use this index to refer to dimmer for set the dimmer.</td>\n</tr>\n<tr>\n<td>dimmers[i].index.absolute</td>\n<td>UINT (0..3)</td>\n<td>yes</td>\n<td>The absolute index of dimmer it refer to hardware output number.</td>\n</tr>\n<tr>\n<td>blinds[i].target.blind</td>\n<td>UINT (0..100)</td>\n<td>yes</td>\n<td>Target position of blind. When you set the blind value this field contains this value.</td>\n</tr>\n<tr>\n<td>blinds[i].target.lamella</td>\n<td>UINT (0..100)</td>\n<td>yes</td>\n<td>Target position of lamella. When you set the lamella this filed contains this value.</td>\n</tr>\n<tr>\n<td>blinds[i].current.blind</td>\n<td>UINT (0..100)</td>\n<td>yes</td>\n<td>Current blind position, this position show current position of blind, it changes until the target position will be achieved.</td>\n</tr>\n<tr>\n<td>blinds[i].current.lamella</td>\n<td>UINT (0.100)</td>\n<td>yes</td>\n<td>Current lamella position, this position show current position of lamella, it changes until the target position will be achieved.</td>\n</tr>\n<tr>\n<td>blinds[i].readonly</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>If the shade is disables. The value can have true if the outputs of blind are used by other functionality.</td>\n</tr>\n<tr>\n<td>blinds[i].index.relative</td>\n<td>UINT (0..1)</td>\n<td>yes</td>\n<td>Relative index of shade independent of hardware connection. Use this value when you refer to shade set.</td>\n</tr>\n<tr>\n<td>blinds[i].index.absolute</td>\n<td>UINT (0..1)</td>\n<td>yes</td>\n<td>Absolute index of shade dependent on hardware connection (DIP switch position).</td>\n</tr>\n<tr>\n<td>led.on</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>If the LED is on.</td>\n</tr>\n<tr>\n<td>led.hsv</td>\n<td>STRING</td>\n<td>yes</td>\n<td>Color set on LED in HSV format. String should be H;S;V, &lt;0...359&gt;;&lt;0..100&gt;;&lt;0..100&gt;.</td>\n</tr>\n<tr>\n<td>led.rgb</td>\n<td>STRING</td>\n<td>yes</td>\n<td>Color set on LED in RGB format. The string is 6 hex digits: RRGGBB.</td>\n</tr>\n<tr>\n<td>led.mode</td>\n<td>ENUM as STRING</td>\n<td>yes</td>\n<td>The color mode. It describe current color format used by LED.</td>\n</tr>\n<tr>\n<td>led.ramp</td>\n<td>UINT (0..102375)</td>\n<td>yes</td>\n<td>Defines ramp/fade speed of color change (change from previous to new value).</td>\n</tr>\n<tr>\n<td>sensors.brightness</td>\n<td>UINT or NULL</td>\n<td>yes</td>\n<td>The brightness read by light sensor including compensation of light depending on cover color. If there is  error or no light sensor is present the field is set to null.</td>\n</tr>\n<tr>\n<td>sensors.light_state</td>\n<td>ENUM (as string) or NULL</td>\n<td>no</td>\n<td>The field contains the range in which the illuminance is located. It can have values: day, twilight or night. The assignment to the interval depends on the settings in the WebUI/Motion Detector/Thresholds. In case of error or light sensor not present the field contain null value.</td>\n</tr>\n<tr>\n<td>sensors.room_temperature</td>\n<td>REAL</td>\n<td>no</td>\n<td>The compensated temperature in room. If there is any error the field is not present .</td>\n</tr>\n<tr>\n<td>sensors.uncompensated_temperature</td>\n<td>REAL</td>\n<td>no</td>\n<td>The uncompensated temperature in room (measured by temperature sensor). If there is any error the field is not present.</td>\n</tr>\n<tr>\n<td>sensors.cpu_temperature</td>\n<td>REAL</td>\n<td>yes</td>\n<td>The temperature on front CPU.</td>\n</tr>\n<tr>\n<td>sensors.puck_temperature</td>\n<td>REAL</td>\n<td>yes</td>\n<td>The temperature on back CPU. If there is any error then this field contain null value.</td>\n</tr>\n<tr>\n<td>sensors.fet_temperature</td>\n<td>REAL or NULL</td>\n<td>yes</td>\n<td>The internal puck/base FET temperature. If there is any error then this field contain null value.</td>\n</tr>\n<tr>\n<td>sensors.person_present</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>The current status of motion.</td>\n</tr>\n<tr>\n<td>sensors.light_off_timer</td>\n<td>UINT</td>\n<td>no</td>\n<td>If the PIR timer is enabled on any output then this field is present and show how much time left to turn off the output.</td>\n</tr>\n<tr>\n<td>sensors.suspend_timer</td>\n<td>UINT</td>\n<td>no</td>\n<td>If the PIR timer is enabled on any output then this field is present and show how much time left to turn on the output by PIR sensor will be possible.</td>\n</tr>\n<tr>\n<td>sensors.input_state</td>\n<td>NULL or BOOL</td>\n<td>yes</td>\n<td>If the output 1 is not configured as input then the field contain null value otherwise bool value represent input state (the voltage present on input). The input state can be negated in input settings (WebUI/Input/invert).</td>\n</tr>\n<tr>\n<td>sensors.power_outputs[i].value</td>\n<td>REAL</td>\n<td>yes</td>\n<td>This field contain array of objects. Each object contain the value field which show the current power provided to device connected to output. This field can have the null value in case of any failure.</td>\n</tr>\n<tr>\n<td>thermostat.active</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>If the thermostat functionality is enabled.</td>\n</tr>\n<tr>\n<td>thermostat.out</td>\n<td>UINT</td>\n<td>yes</td>\n<td>The output index assigned to thermostat.</td>\n</tr>\n<tr>\n<td>thermostat.on</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>If the output controlled by thermostat is turn on.</td>\n</tr>\n<tr>\n<td>thermostat.enabled</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>It the thermostat is enabled e.g. control output depending of temperature.</td>\n</tr>\n<tr>\n<td>thermostat.target_temp</td>\n<td>REAL</td>\n<td>yes</td>\n<td>The target cooling heating temperature.</td>\n</tr>\n<tr>\n<td>thermostat.mode</td>\n<td>ENUM as STRING</td>\n<td>yes</td>\n<td>Mode of thermostat operating.</td>\n</tr>\n<tr>\n<td>thermostat.temp</td>\n<td>REAL</td>\n<td>yes</td>\n<td>Current room temperature.</td>\n</tr>\n<tr>\n<td>thermostat.min_target_temp</td>\n<td>INT</td>\n<td>yes</td>\n<td>Minimum target temperature.</td>\n</tr>\n<tr>\n<td>thermostat.max_target_temp</td>\n<td>INT</td>\n<td>yes</td>\n<td>Maximum target temperature.</td>\n</tr>\n<tr>\n<td>wifi.version</td>\n<td>STRING</td>\n<td>yes</td>\n<td>The front firmware version.</td>\n</tr>\n<tr>\n<td>wifi.mac</td>\n<td>STRING</td>\n<td>yes</td>\n<td>The MAC address of device.</td>\n</tr>\n<tr>\n<td>wifi.ssid</td>\n<td>STRING</td>\n<td>yes</td>\n<td>The network name to which device is connected.</td>\n</tr>\n<tr>\n<td>wifi.ip</td>\n<td>STRING</td>\n<td>yes</td>\n<td>IP address of device in static IP configuration.</td>\n</tr>\n<tr>\n<td>wifi.mask</td>\n<td>STRING</td>\n<td>yes</td>\n<td>IP mask used in static IP configuration.</td>\n</tr>\n<tr>\n<td>wifi.gateway</td>\n<td>STRING</td>\n<td>yes</td>\n<td>IP address of gateway used in static IP configuration.</td>\n</tr>\n<tr>\n<td>wifi.dns</td>\n<td>STRING</td>\n<td>yes</td>\n<td>The DNS IP address used in static IP configuration.</td>\n</tr>\n<tr>\n<td>wifi.static</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>If the device is connected in static IP mode. If this field is true then ip, mask, gateway, dns fields are set to IPv4 address values.</td>\n</tr>\n<tr>\n<td>wifi.connected</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>If the device is connected do AP.</td>\n</tr>\n<tr>\n<td>config.timestamp</td>\n<td>UINT</td>\n<td>yes</td>\n<td>The UNIX timestamp of last configuration change.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","state"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"5355f856-0fa3-402f-b285-a201998e6631","name":"Resutl of state request","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/state"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"986"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"dimmers\": [\n        {\n            \"on\": false,\n            \"output\": 0,\n            \"ramp\": 0,\n            \"readonly\": false,\n            \"index\": {\n                \"relative\": 0,\n                \"absolute\": 0\n            }\n        },\n        {\n            \"on\": false,\n            \"output\": 0,\n            \"ramp\": 0,\n            \"readonly\": false,\n            \"index\": {\n                \"relative\": 1,\n                \"absolute\": 1\n            }\n        }\n    ],\n    \"blinds\": [\n        {\n            \"moving\": \"stop\",\n            \"position\": 0,\n            \"lamella\": 0,\n            \"readonly\": false,\n            \"index\": {\n                \"relative\": 0,\n                \"absolute\": 1\n            }\n        }\n    ],\n    \"led\": {\n        \"on\": false,\n        \"hsv\": \"0;0;100\",\n        \"rgb\": \"FF0000\",\n        \"mode\": \"rgb\",\n        \"ramp\": 25\n    },\n    \"sensors\": {\n        \"brightness\": 99,\n        \"light_state\": \"twilight\",\n        \"room_temperature\": 23.28,\n        \"uncompensated_temperature\": 35.4375,\n        \"cpu_temperature\": 72.22,\n        \"puck_temperature\": 61,\n        \"fet_temperature\": 44,\n        \"person_present\": 0,\n        \"input_state\": null,\n        \"power_outputs\": [\n            {\n                \"value\": 0\n            },\n            {\n                \"value\": 0\n            },\n            {\n                \"value\": 0\n            },\n            {\n                \"value\": 0\n            }\n        ]\n    },\n    \"thermostat\": {\n        \"active\": false,\n        \"out\": 0,\n        \"on\": false,\n        \"enabled\": true,\n        \"target_temp\": 21,\n        \"mode\": \"heating\",\n        \"temp\": 23.200000762939453,\n        \"min_target_temp\": 17,\n        \"max_target_temp\": 31\n    },\n    \"wifi\": {\n        \"version\": \"1.2.2\",\n        \"mac\": \"30AEA4573628\",\n        \"ssid\": \"sjj_5G\",\n        \"ip\": \"\",\n        \"mask\": \"\",\n        \"gateway\": \"\",\n        \"dns\": \"\",\n        \"static\": false,\n        \"connected\": true\n    },\n    \"config\": {\n        \"timestamp\": 1598029380\n    }\n}"}],"_postman_id":"32458530-5210-4c80-85b7-8be4534955a8"},{"name":"Puck/Base fw versions","id":"53cf94ae-6652-4cff-9f79-d937128427fa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/puck","description":"<p>Returns a JSON object with two fields namely <code>fw</code> for firmware and <code>hw</code> for hardware. </p>\n<p>In the <code>fw</code> object the field <code>version</code> denotes the current puck firmware version.\nIn the <code>hw</code> object the field <code>version</code> denotes the current bootloader version of the puck.</p>\n","urlObject":{"path":["api","v1","puck"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"41ed81a8-bd98-47de-9391-bff5dd868f8c","name":"Puck/Base fw versions","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/puck"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"82"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"fw\": {\n        \"success\": true,\n        \"version\": \"1.1.21\"\n    },\n    \"hw\": {\n        \"success\": true,\n        \"version\": \"1.2.3\"\n    }\n}"}],"_postman_id":"53cf94ae-6652-4cff-9f79-d937128427fa"}],"id":"dbe3b17f-3077-4227-84dc-87961a124186","description":"<p>Requests used to get general information about the dingz device.</p>\n","event":[{"listen":"prerequest","script":{"id":"c94b16db-4eba-4979-bd11-5ab8d4333d86","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"5d40d1a0-0c2d-44a7-9760-fb66d75e4f1f","type":"text/javascript","exec":[""]}}],"_postman_id":"dbe3b17f-3077-4227-84dc-87961a124186"},{"name":"Wi-Fi Network","item":[{"name":"Scan WiFi","event":[{"listen":"test","script":{"id":"788e9203-1a5f-4d86-aac3-56876866b171","exec":[""],"type":"text/javascript"}}],"id":"c64593b8-54c9-499f-a0bf-70d5ddc2889a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/scan","description":"<p>Scans for nearby visible or hidden WiFi networks. The API will return a JSON array consisting alternatingly of a wifi name (SSID) and its signal strength (RSSI in dBm).</p>\n<p>The optional query parameters (given in path after question mark):</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Mandatory</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>ssid</td>\n<td>STRING</td>\n<td>no</td>\n<td>Name of hidden network</td>\n</tr>\n</tbody>\n</table>\n</div><p>If <code>ssid</code> is given then API allow to get hidden networks with SSID match the parameter, one mention is that it return also visible network of SSID match.</p>\n","urlObject":{"path":["api","v1","scan"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"5e857eb4-c65b-4b1e-b4bb-8cbc91fe1ef7","name":"Scan wifi","originalRequest":{"method":"GET","header":[],"url":"[dingz IP]/api/v1/scan"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"212"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"[\n    \"UPC42A3283\",\n    -49,\n    \"FRITZ!Box 7490\",\n    -77,\n    \"UPC3B0283\",\n    -63,\n    \"UPC9CE144A\",\n    -69,\n    \"WN-C61328_2GEXT\",\n    -77\n]"}],"_postman_id":"c64593b8-54c9-499f-a0bf-70d5ddc2889a"},{"name":"Scan WiFi (detailed)","id":"180fbb9a-3d45-489a-bbf9-d1c53a8d62a8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/networks","description":"<p>Scans for nearby WiFi networks in a detailed manner. Returns a JSON object where each detected WiFi AP is a field. \nFor each detected WiFi it returns JSON object described below:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Mandatory</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>name</td>\n<td>STRING</td>\n<td>yes</td>\n<td>SSID of AP</td>\n</tr>\n<tr>\n<td>signal</td>\n<td>UINT</td>\n<td>yes</td>\n<td>RSSI of detected network/AP in percent.</td>\n</tr>\n<tr>\n<td>encryption-on</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>If connection to network require provide password.</td>\n</tr>\n<tr>\n<td>encryption</td>\n<td>STRING</td>\n<td>yes</td>\n<td>Standard of network encryption.</td>\n</tr>\n</tbody>\n</table>\n</div><p>This API is deprecated please not use it in new applications.</p>\n","urlObject":{"path":["networks"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"c36aa619-06b8-4087-8ae5-1b630e9877da","name":"Networks","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/networks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"973"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n\n    \"UPC42A3283\": {\n        \"name\": \"UPC42A3283\",\n        \"signal\": 94,\n        \"encryption-on\": true,\n        \"encryption\": \"WPA_WPA2_PSK\"\n    },\n\n    \"FRITZ!Box 7490\": {\n        \"name\": \"FRITZ!Box 7490\",\n        \"signal\": 62,\n        \"encryption-on\": true,\n        \"encryption\": \"WPA2_PSK\"\n    },\n\n    \"WN-43A58D\": {\n        \"name\": \"WN-43A58D\",\n        \"signal\": 24,\n        \"encryption-on\": true,\n        \"encryption\": \"WPA2_PSK\"\n    },\n    \"UPCBF1B9C2\": {\n        \"name\": \"UPCBF1B9C2\",\n        \"signal\": 22,\n        \"encryption-on\": true,\n        \"encryption\": \"WPA_WPA2_PSK\"\n    }\n}"}],"_postman_id":"180fbb9a-3d45-489a-bbf9-d1c53a8d62a8"},{"name":"Scan for hidden (detailed)","id":"97c061e6-027b-4fec-a1e0-c3e6a6289d70","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/hidden?network={{ssid}}","description":"<p>Scan for hidden WiFi network. Return array of JSON objects in format same as in \"Scan WiFi (detailed) request\". The only networks which ssid is match are returned, if network is visible then also is returned.</p>\n<p>This API is deprecated.</p>\n","urlObject":{"path":["hidden"],"host":["{{ip}}"],"query":[{"description":{"content":"<p>name of hidden network</p>\n","type":"text/plain"},"key":"network","value":"{{ssid}}"}],"variable":[]}},"response":[],"_postman_id":"97c061e6-027b-4fec-a1e0-c3e6a6289d70"},{"name":"Activate WPS","id":"84635f07-c39e-49c5-9e9c-7c8c13b8f549","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":"{{setupIP}}/api/v1/wps","description":"<p>Activate WPS for 2 minutes. The HTTP result code determines status of operation. The WPS can be enabled from STA or AP mode. The WPS stops after 2 minutes or after start AP mode by buttons.</p>\n","urlObject":{"path":["api","v1","wps"],"host":["{{setupIP}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"84635f07-c39e-49c5-9e9c-7c8c13b8f549"},{"name":"Connect to Wifi","id":"70977f9d-4122-43d7-abae-364b6f68da0a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"ssid\": \"ABEO\",\n    \"passwd\": \"PASSWORD\"\n}","options":{"raw":{"language":"json"}}},"url":"{{setupIP}}/api/v1/connect","description":"<p>Connects the device to WiFi</p>\n<p>Postman somehow has problems with this request so we write it here as you would use it for curl. DISREGARD THE POSTMAN EXAMPLE</p>\n<p><strong>In order for this command to work you must first perform the \"Scan Wifi\" or \"Scan Wifi (detailed)\"</strong></p>\n<p>The fields you can enter in the JSON object are:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Mandatory</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>ssid</td>\n<td>STRING</td>\n<td>yes</td>\n<td>The ssid of the network you want your device to connect to.</td>\n</tr>\n<tr>\n<td>passwd</td>\n<td>STRING</td>\n<td>no</td>\n<td>The password of the network you want your device to connect to. If not this field is given then device assumes that this is open network.</td>\n</tr>\n<tr>\n<td>ip</td>\n<td>STRING</td>\n<td>no</td>\n<td>The static IP address you whish you device to have (optional, only needed when using static IPs and not using DHCP)</td>\n</tr>\n<tr>\n<td>mask</td>\n<td>STRING</td>\n<td>no</td>\n<td>The mask of the network (optional, only needed when using static IPs and not using DHCP)</td>\n</tr>\n<tr>\n<td>gateway</td>\n<td>STRING</td>\n<td>no</td>\n<td>The gateway IP address of the AP (optional, only needed when using static IPs and not using DHCP)</td>\n</tr>\n<tr>\n<td>dns</td>\n<td>STRING</td>\n<td>no</td>\n<td>The DNS server IP address in your network (optional, only needed when using static IPs and not using DHCP). The DNS IP can be same as gateway IP address in case of DNS localized on AP, or external DNS IP address.</td>\n</tr>\n</tbody>\n</table>\n</div><p>If you connect to network in static IP mode all fields: ip, mask, gateway and dns should be specified.</p>\n<p>Example:</p>\n<p> curl -d '{\"ssid\":\"WIFI\", \"passwd\":\"PASSWORD\"}' <a href=\"http://192.168.254.1/api/v1/connect\">http://192.168.254.1/api/v1/connect</a></p>\n","urlObject":{"path":["api","v1","connect"],"host":["{{setupIP}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"70977f9d-4122-43d7-abae-364b6f68da0a"}],"id":"5db63272-d47f-499d-a885-2e0564565927","description":"<p>Connection to WiFi API. There is set of API allowing connect to network in dynamic mode (DHCP) or static mode (given IP). There is also posibility to start WPS or exit from AP mode.</p>\n","event":[{"listen":"prerequest","script":{"id":"2388e441-01d7-4d75-9357-aeda6773d2f3","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"5d4501c1-2238-4d1b-bd0a-073e9dbf700d","type":"text/javascript","exec":[""]}}],"_postman_id":"5db63272-d47f-499d-a885-2e0564565927"},{"name":"Actions","item":[],"id":"c0418c73-1f5c-4420-a3e5-36b5dcdfdc8e","description":"<h1 id=\"actions\">Actions</h1>\n<p>Actions allow you to make an HTTP request on a remote host. You can assign an action to the buttons, PIR sensor and input of the device in the form of an HTTP request performed at a specific event. The HTTP client on the device allows you to perform 4 kinds methods of HTTP requests: GET, POST, PUT and DELETE.</p>\n<p>In the case of buttons and input, it is possible to assign actions regarding individual press schemes: single, double, long, press, release and generic for all types.</p>\n<p>In the case of a motion sensor, it is possible to assign an action of motion detection, end of motion detection, motion detection depending on the intensity of lighting and a generic action performed for all events.</p>\n<p>Before assigning a request to a specific action, you need to understand its general format. During the processing of the assigned action, an HTTP request is made. The first thing you need to know when assigning an action is the IP address and port on which the HTTP server receiving the actions is running, instead of the IP address you can also provide this parameter as the hostname. You also need to know the IP address of the device (DINGZ) on which you want to assign the action. Depending on how the receipt of the action is implemented on the server, you will need to define the request method. On the receiving server, you will probably also have the paths for which the request is to be executed and the query parameters defined. Sometimes authentication is needed as well, the device only supports Basic authentication.</p>\n<h4 id=\"modules-from-which-actions-can-come\">Modules from which actions can come</h4>\n<p>Buttons, input, motion sensor.</p>\n<h4 id=\"events-that-can-trigger-an-action\">Events that can trigger an action</h4>\n<p>Button single press, double press, long press, press, release.</p>\n<p>Motion detected, end of motion, motion and day, motion and night, motion and twilight.</p>\n<h3 id=\"action-syntax\">Action syntax</h3>\n<p>General format of the action to be performed:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>scheme://[user:password@]host[:port][/path][?query]\n</code></pre><p>Where the scheme corresponds to the HTTP request method (GET, POST, PUT, DELETE).</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>scheme = {get[s]|post[s]|put[s]|delete[s]|http[s]}\n</code></pre><p>Specifying the scheme as http corresponds to the post schema. The optional ending s means whether the query is to be made in an SSL connection.</p>\n<p>Since it is not possible to define the HTTP header specifying the body content type, it is inferred from the query format in the case of POST and PUT methods. For these queries, it is also not possible to send the query in the path, but only in the body.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Query format</th>\n<th>Content-Type header</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>?a=1&amp;b=2</td>\n<td>application/x-www-form-urlencoded</td>\n</tr>\n<tr>\n<td>?{\"a\":1}</td>\n<td>application/json</td>\n</tr>\n<tr>\n<td>?some_string</td>\n<td>text/plain</td>\n</tr>\n</tbody>\n</table>\n</div><p>An action can also consist of multiple queries executed sequentially, use || to separate these queries.</p>\n<p>As an example of the action, we will execute a query to another dingz, which is at the address 192.168.1.120. The request will turn on the dimmer on the first output and set its brightness to 50%, this request should be made using the POST method.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>post://192.168.1.120/api/v1/dimmer/0/on?value=50\n</code></pre><h3 id=\"read-assigned-actions\">Read assigned actions</h3>\n<p>In order to read all assigned actions, use the command for all the possibilities of their execution and keeping the LED and other parameters:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET api/v1/action\n</code></pre><p>it should return JSON:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">{\n    \"generic\":  {\n        \"generic\":  \"\",\n        \"single\":   \"\",\n        \"double\":   \"\",\n        \"long\": \"\",\n        \"press_release\":    false,\n        \"feedback\": {\n            \"generic\":  true,\n            \"single\":   true,\n            \"double\":   true,\n            \"long\": true\n        }\n    },\n    \"btn1\": {\n        \"generic\":  \"\",\n        \"single\":   \"\",\n        \"double\":   \"\",\n        \"long\": \"\",\n        \"press_release\":    false,\n        \"feedback\": {\n            \"generic\":  true,\n            \"single\":   true,\n            \"double\":   true,\n            \"long\": true\n        }\n    },\n    \"btn2\": {\n        \"generic\":  \"\",\n        \"single\":   \"\",\n        \"double\":   \"\",\n        \"long\": \"\",\n        \"press_release\":    false,\n        \"feedback\": {\n            \"generic\":  true,\n            \"single\":   true,\n            \"double\":   true,\n            \"long\": true\n        }\n    },\n    \"btn3\": {\n        \"generic\":  \"\",\n        \"single\":   \"\",\n        \"double\":   \"\",\n        \"long\": \"\",\n        \"press_release\":    false,\n        \"feedback\": {\n            \"generic\":  true,\n            \"single\":   true,\n            \"double\":   true,\n            \"long\": true\n        }\n    },\n    \"btn4\": {\n        \"generic\":  \"\",\n        \"single\":   \"\",\n        \"double\":   \"\",\n        \"long\": \"\",\n        \"press_release\":    false,\n        \"feedback\": {\n            \"generic\":  true,\n            \"single\":   true,\n            \"double\":   true,\n            \"long\": true\n        }\n    },\n    \"input\":    {\n        \"generic\":  \"\",\n        \"single\":   \"\",\n        \"double\":   \"\",\n        \"long\": \"\",\n        \"press_release\":    false,\n        \"feedback\": {\n            \"generic\":  true,\n            \"single\":   true,\n            \"double\":   true,\n            \"long\": true\n        }\n    },\n    \"pir\":  {\n        \"generic\":  \"\",\n        \"night\":    \"\",\n        \"twilight\": \"\",\n        \"day\":  \"\",\n        \"rise\": \"\",\n        \"fall\": \"\",\n        \"feedback\": {\n            \"generic\":  true,\n            \"night\":    true,\n            \"twilight\": true,\n            \"day\":  true,\n            \"rise\": true,\n            \"fall\": true\n        }\n    }\n}\n</code></pre>\n<p>You can also specify the scope of the request:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET api/v1/action\nGET api/v1/action/pir\nGET api/v1/action/&lt;ENUM generic|btn1|btn2|btn3|btn4|input&gt;\nGET api/v1/action/pir/&lt;ENUM generic|night|twilight|day|rise|fall&gt;\nGET api/v1/action/&lt;ENUM generic|btn1|btn2|btn3|btn4|input&gt;/&lt;ENUM generic|single|double|long&gt;\n</code></pre><p>So e.g. if you only want to get the assignment for the first button use:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET api/v1/action/btn1\n</code></pre><p>it should return JSON:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">{\n    \"btn1\": {\n        \"generic\":  \"\",\n        \"single\":   \"\",\n        \"double\":   \"\",\n        \"long\": \"\",\n        \"press_release\":    false,\n        \"feedback\": {\n            \"generic\":  true,\n            \"single\":   true,\n            \"double\":   true,\n            \"long\": true\n        }\n    }\n}\n</code></pre>\n<p>or even so:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET api/v1/action/btn1/single\n</code></pre><p>it should return JSON:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">{\n    \"url\":  \"\",\n    \"feedback\": true\n}\n</code></pre>\n<h4 id=\"description-of-the-individual-fields-of-the-object-for-the-case-of-buttons-and-input\">Description of the individual fields of the object for the case of buttons and input</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>generic</td>\n<td>string</td>\n<td>Assigned action URL. This action will be performed on every button press pattern.</td>\n</tr>\n<tr>\n<td>single</td>\n<td>string</td>\n<td>Assigned action URL. This action will be performed on single press of button.</td>\n</tr>\n<tr>\n<td>double</td>\n<td>string</td>\n<td>Assigned action URL. This action will be performed on double press of button.</td>\n</tr>\n<tr>\n<td>long</td>\n<td>string</td>\n<td>Assigned action URL. This action will be performed on long press of button.</td>\n</tr>\n<tr>\n<td>press_release</td>\n<td>bool</td>\n<td>Enable the sending of information about pressing and releasing the button in the generic action.</td>\n</tr>\n<tr>\n<td>feedback</td>\n<td>object</td>\n<td>Defines whether to signal the status of action execution with the LED diode.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"description-of-the-feedback-object\">Description of the feedback object</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>generic</td>\n<td>bool</td>\n<td>Blink after performing a generic action.</td>\n</tr>\n<tr>\n<td>single</td>\n<td>bool</td>\n<td>Blink after performing a single press action.</td>\n</tr>\n<tr>\n<td>double</td>\n<td>bool</td>\n<td>Blink after performing a double press action.</td>\n</tr>\n<tr>\n<td>long</td>\n<td>bool</td>\n<td>Blink after performing a long press action.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"feedback-color\">Feedback color</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Color</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>RED</td>\n<td>The device blinks red LED in case of failure to perform the action (HTTP request). The unsuccessful query may be due to a host name resolution problem, no host on the network, an HTTP communication problem, and the response status of the HTTP server to which the request is directed.</td>\n</tr>\n<tr>\n<td>GREEN</td>\n<td>The device flashes green LED when the action (HTTP request) is successful. Successful detection is based on the status of the HTTP response code of the server to which the action is directed.</td>\n</tr>\n<tr>\n<td>ORANGE</td>\n<td>The device flashes orange LED if only part of the action is successful. This is important for multi-action settings.</td>\n</tr>\n</tbody>\n</table>\n</div><p>The device does not flash if the auction is not assigned, i.e. the character string length is zero.</p>\n<h4 id=\"description-of-the-individual-fields-of-the-object-for-the-case-of-pir\">Description of the individual fields of the object for the case of pir</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>generic</td>\n<td>string</td>\n<td>Assigned action URL. This action will be performed on every PIR event.</td>\n</tr>\n<tr>\n<td>night</td>\n<td>string</td>\n<td>Assigned action URL. This action will be performed when motion is detected and the lighting intensity is in the night range.</td>\n</tr>\n<tr>\n<td>twilight</td>\n<td>string</td>\n<td>Assigned action URL. This action will be performed when motion is detected and the lighting intensity is in the twilight range.</td>\n</tr>\n<tr>\n<td>day</td>\n<td>string</td>\n<td>Assigned action URL. This action will be performed when motion is detected and the lighting intensity is in the day range.</td>\n</tr>\n<tr>\n<td>rise</td>\n<td>string</td>\n<td>Assigned action URL. This action will be performed when motion is detected regardless of the light intensity.</td>\n</tr>\n<tr>\n<td>fall</td>\n<td>string</td>\n<td>Assigned action URL. This action will be performed at the end of the motion, regardless of the light intensity.</td>\n</tr>\n<tr>\n<td>feedback</td>\n<td>object</td>\n<td>Defines whether to signal the status of action execution with the LED diode.</td>\n</tr>\n</tbody>\n</table>\n</div><p>The description of the object defining the blinking is analogous to the case of buttons.</p>\n<h3 id=\"assignment-of-action\">Assignment of action</h3>\n<p>Assigning an action looks similar to reading it, except that you can only make one assignment with one request. The action URL is sent as the body of the POST method with a regular string. Don't send the assignment with a JSON object as it is returned. The general request syntax is provided below:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>POST api/v1/action/&lt;ENUM btn1|btn2|btn3|btn4|input&gt;/&lt;ENUM single|double|long&gt;\nPOST api/v1/action/pir/&lt;ENUM night|twilight|day|rise|fall&gt;\n</code></pre><p>Suppose you want to assign an action to a single press of button 1, then your curl query should look like this:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>curl -d '&lt;action_url&gt;' http://&lt;dingz_ip&gt;/api/v1/action/btn1/single\n</code></pre><p>as <code>action_url</code> substitute a personalized action, example for our action with dimmer:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>curl -d 'post://192.168.1.120/api/v1/dimmer/0/on?value=50' http://&lt;dingz_ip&gt;/api/v1/action/btn1/single\n</code></pre><p>no headers in the action assignment request are needed or interpreted.</p>\n<h3 id=\"generic-action\">Generic action</h3>\n<p>A generic action is a special case of an action that is performed on all possible events. This action communicates its origin in the parameters, i.e. whether it was generated by a button, input or motion sensor, and the event that triggered it. In addition, the MAC address of the device from which the action comes is also transferred. You will use this action when your HTTP server receiving the actions is able to parse incoming parameters and make decisions based on them. The generic action invalidates the configuration because it sets a global request to execute. Regardless of whether the generic action is set, you can also set dedicated actions for individual events from individual modules.</p>\n<h4 id=\"appended-parameters\">Appended parameters</h4>\n<p>Generic action parameters are passed as additional query parameters. If you have your request to add, it must be in the format application/x-www-form-urlencoded. The generic action should set the content type of the HTTP request to application/x-www-form-urlencoded.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>mac</td>\n<td>string</td>\n<td>MAC address of the device performing the action.</td>\n</tr>\n<tr>\n<td>index</td>\n<td>enum</td>\n<td>Index of the module the action comes from in numeric format. <br />BTN1=1<br />BTN2=2<br />BTN3=3<br />BTN4=4<br />PIR=5<br />INPUT=6</td>\n</tr>\n<tr>\n<td>action</td>\n<td>enum</td>\n<td>The event that triggers the action. <br />SHORT=1<br />DOUBLE=2<br />LONG=3<br />PRESS=8<br />RELEASE=9<br />MOTION_NIGHT=14<br />MOTION_TWILIGHT=15<br />MOTION_DAY=16</td>\n</tr>\n</tbody>\n</table>\n</div><p>The rise event from the motion sensor is reported as a press and a fall event from the motion sensor is reported as release.</p>\n<h4 id=\"assignment-of-generic-actions\">Assignment of generic actions</h4>\n<p>If you have looked at the object returned while reading the actions, you will notice that there are several levels of generic action nests.</p>\n<h5 id=\"most-generic-action\">Most generic action</h5>\n<p>This action is performed for each event from each module.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>api/v1/action\napi/v1/action/generic/generic\n</code></pre><h5 id=\"module-generic-action\">Module generic action</h5>\n<p>The generic action for the module will be performed for each event.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>api/v1/action/&lt;btn1|btn2|btn3|btn4|pir|input&gt;\n</code></pre><h5 id=\"event-generic-action\">Event generic action</h5>\n<p>The generic action for an event is generated for a specific event, regardless of which module it comes from. It is only possible for buttons and inputs.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>api/v1/action/generic/&lt;ENUM single|double|long&gt;\n</code></pre><h4 id=\"the-press_release-parameter\">The press_release parameter</h4>\n<p>This parameter applies to the button and input module and allows you to define whether a generic action will also be performed for pressing and releasing the button.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>POST api/v1/action/&lt;ENUM generic|btn1|btn2|btn3|btn4|input&gt;/press_release/&lt;ENUM disable|enable&gt;\n</code></pre><h3 id=\"action-feedback\">Action feedback</h3>\n<p>It is possible to turn on and off signaling the success of the action with the LED diode, this setting is available for specific actions as well as generics.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>POST api/v1/action/pir/&lt;ENUM generic|night|twilight|day|rise|fall&gt;/feedback/&lt;ENUM disable|enable&gt;\nPOST api/v1/action/&lt;ENUM generic|btn1|btn2|btn3|btn4|input&gt;/&lt;ENUM generic|single|double|long&gt;/feedback/&lt;ENUM disable|enable&gt;\n</code></pre><h3 id=\"multi-actions\">Multi actions</h3>\n<p>It is possible to assign multiple actions or HTTP requests to each action, regardless of whether it is a generic or specific action.</p>\n<p>To use this functionality, separate the action URLs with <code>||</code>.</p>\n<h3 id=\"limitations\">limitations</h3>\n<p>Each action assignment can be up to 767 bytes long, regardless of whether it is multi action.</p>\n<h3 id=\"deleting-an-action\">Deleting an action</h3>\n<p>Set assignment to zero characters.</p>\n","event":[{"listen":"prerequest","script":{"id":"095e7be2-96c8-4f22-b617-08caea6441bf","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"38028436-6c3e-4942-9819-2908f5832a69","type":"text/javascript","exec":[""]}}],"_postman_id":"c0418c73-1f5c-4420-a3e5-36b5dcdfdc8e"},{"name":"Dimmers","item":[{"name":"Get dimmers status","id":"25792136-4f1f-46e9-aad0-6e34c0a6bdcb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/dimmer","description":"<p>Allows you to get the status of all dimmers, as the result the JSON set of objects is returned. If there no a dimmer (DIP switch configuration to two shades) the result is empty object. The table below describes the fields for nested object:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>on</td>\n<td>BOOL</td>\n<td></td>\n<td>The dimmer turn on/off status.</td>\n</tr>\n<tr>\n<td>value</td>\n<td>UINT</td>\n<td>0..100</td>\n<td>The dim value set on dimmer. This value have 0 if the the on field is false.</td>\n</tr>\n<tr>\n<td>ramp</td>\n<td>UINT</td>\n<td>0..255</td>\n<td>The ramp (how quickly change dim value) set on dimmer. The ramp is always 0 for not dimmable outputs.</td>\n</tr>\n<tr>\n<td>disabled</td>\n<td>BOOL</td>\n<td></td>\n<td>If the dimmer is disabled, for example if the output is configured as input or thermostat is enabled.</td>\n</tr>\n<tr>\n<td>index.relative</td>\n<td>UINT</td>\n<td>0..3</td>\n<td>The relative index of the dimmer (depending on the configuration of the DIP switch) uses this index with respect to the dimmer when setting the value.</td>\n</tr>\n<tr>\n<td>index.absolute</td>\n<td>UINT</td>\n<td>0..3</td>\n<td>The absolute index of the dimmer referring to the hardware output number.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","dimmer"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"45c927d2-3486-4011-b3a4-9cf67e6ade37","name":"Get dimmer status","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/dimmer"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"179"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"0\": {\n        \"on\": false,\n        \"value\": 0,\n        \"ramp\": 0,\n        \"disabled\": false,\n        \"index\": {\n            \"relative\": 0,\n            \"absolute\": 0\n        }\n    },\n    \"1\": {\n        \"on\": false,\n        \"value\": 0,\n        \"ramp\": 0,\n        \"disabled\": false,\n        \"index\": {\n            \"relative\": 1,\n            \"absolute\": 1\n        }\n    }\n}"}],"_postman_id":"25792136-4f1f-46e9-aad0-6e34c0a6bdcb"},{"name":"Get dimmer status","id":"bd1cef9a-9ad9-4e99-b7ee-a3669e8145c0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/dimmer/:dim_idx","description":"<p>URL is of form <code>/api/v1/dimmer/&lt;UINT 0..3&gt;</code></p>\n<p>It works similarly to downloading the object of all dimmers, but narrows down the result only for a specific one. Description of returned fields in the object can be found in 'Get dimmers status'</p>\n","urlObject":{"path":["api","v1","dimmer",":dim_idx"],"host":["{{ip}}"],"query":[],"variable":[{"description":{"content":"<p>The relative index of the dimmer [0..3].</p>\n","type":"text/plain"},"type":"string","value":"{{dim_idx}}","key":"dim_idx"}]}},"response":[{"id":"d0c20ef2-93ab-437b-bc36-4c9bff7cf35e","name":"Get specific dimmer","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/dimmer/{{dim_idx}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"84"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"on\": false,\n    \"value\": 0,\n    \"ramp\": 0,\n    \"disabled\": false,\n    \"index\": {\n        \"relative\": 0,\n        \"absolute\": 0\n    }\n}"}],"_postman_id":"bd1cef9a-9ad9-4e99-b7ee-a3669e8145c0"},{"name":"Set dimmer status","id":"4ce57d65-7f43-42cd-9374-64b1db0b420e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":"{{ip}}/api/v1/dimmer/:dim_idx/:dim_action/?value={{dim_value}}&ramp={{dim_ramp}}&time={{dim_time}}","description":"<p>The URL is of the format <code>/api/v1/dimmer/&lt;UINT 0..3&gt;/&lt;ENUM off|on&gt;</code></p>\n<p>&lt;UINT 0...3&gt; specifies which of the 4 outputs we are changing. The <code>dim_idx</code> should correspond to relative index of dimmer (see get dimmer status).</p>\n<p>You can toggle the dimmer status without specify any query parameters. The query parameters can be passed in path or in body of http request in x-www-form-urlencoded format (same as in query).</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>value</td>\n<td>UINT</td>\n<td>0..100</td>\n<td>The dim value set on dimmer. This value have 0 if the the on field is false.</td>\n</tr>\n<tr>\n<td>ramp</td>\n<td>UINT</td>\n<td>0..255</td>\n<td>The ramp (how quickly the dimming value changes when a new value is set) set on the dimmer. The ramp is always 0 for non-dimmable outputs.</td>\n</tr>\n<tr>\n<td>time</td>\n<td>UINT</td>\n<td>1..10</td>\n<td>Defines how long the dimmer output should be on. Giving this parameter is effective only in the dimmer pulse mode. The unit is s.</td>\n</tr>\n</tbody>\n</table>\n</div><p>The HTTP response describe result of request. 200 OK means tha operation are performed.</p>\n","urlObject":{"path":["api","v1","dimmer",":dim_idx",":dim_action",""],"host":["{{ip}}"],"query":[{"description":{"content":"<p>The dim value to set on dimer. For not dimmable outputs the value will be truncated to 100 if is bigger than 0.</p>\n","type":"text/plain"},"key":"value","value":"{{dim_value}}"},{"description":{"content":"<p>The ramp (how quickly change dim value when go to new value) set on dimmer. The ramp is ineffctive and should be not specified for not dimable outputs.</p>\n","type":"text/plain"},"key":"ramp","value":"{{dim_ramp}}"},{"description":{"content":"<p>Defines how long the dimmer output should be on. Giving this parameter is effective only in the dimmer pulse mode.</p>\n","type":"text/plain"},"key":"time","value":"{{dim_time}}"}],"variable":[{"description":{"content":"<p>Relative index of the dimmer [0..3]</p>\n","type":"text/plain"},"type":"string","value":"{{dim_idx}}","key":"dim_idx"},{"description":{"content":"<p>What action to perform, enable or disable [on|off]</p>\n","type":"text/plain"},"type":"string","value":"{{dim_action}}","key":"dim_action"}]}},"response":[],"_postman_id":"4ce57d65-7f43-42cd-9374-64b1db0b420e"}],"id":"6cfccb73-f7ff-4e20-8a78-5f0f95e5820f","description":"<p>It allows you to download and change the status of the dimmer outputs.</p>\n","event":[{"listen":"prerequest","script":{"id":"7f5e6bd5-0918-46dd-95a1-a40135768e5a","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"9463f719-81dc-4d49-a65b-410498f98120","type":"text/javascript","exec":[""]}}],"_postman_id":"6cfccb73-f7ff-4e20-8a78-5f0f95e5820f"},{"name":"Shades/Blinds","item":[{"name":"Get all","id":"77ad96fa-7def-49bb-9b13-3d827aaf628e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/shade","description":"<p>Allows you to get the status of all shades, as the result the JSON set of objects is returned. If there no a shades (DIP switch configuration to four dimmers) the result is empty object. The table below describes the fields for nested object:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>target.blind</td>\n<td>UINT</td>\n<td>0..100</td>\n<td>Target position of blind. When you set the blind value this field contains this value.</td>\n</tr>\n<tr>\n<td>target.lamella</td>\n<td>UINT</td>\n<td>0..100</td>\n<td>Target position of lamella. When you set the lamella this filed contains this value.</td>\n</tr>\n<tr>\n<td>current.blind</td>\n<td>UINT</td>\n<td>0..100</td>\n<td>Current blind position, this position show current position of blind, it changes until the target position will be achieved.</td>\n</tr>\n<tr>\n<td>current.lamella</td>\n<td>UINT</td>\n<td>0..100</td>\n<td>Current lamella position, this position show current position of lamella, it changes until the target position will be achieved.</td>\n</tr>\n<tr>\n<td>disabled</td>\n<td>BOOL</td>\n<td></td>\n<td>If the shade is disables. The value can have true if the outputs of blind are used by other functionality.</td>\n</tr>\n<tr>\n<td>index.relative</td>\n<td>UINT</td>\n<td>0..1</td>\n<td>Relative index of shade independent of hardware connection. Use this value when you refer to shade set.</td>\n</tr>\n<tr>\n<td>index.absolute</td>\n<td>UINT</td>\n<td>0..1</td>\n<td>Absolute index of shade dependent on hardware connection (DIP switch position).</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","shade"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"f889ad50-75dd-46e9-9113-aa4d2c167cde","name":"Get position","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/shade"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"127"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"0\": {\n        \"target\": {\n            \"blind\": 0,\n            \"lamella\": 0\n        },\n        \"current\": {\n            \"blind\": 0,\n            \"lamella\": 0\n        },\n        \"disabled\": false,\n        \"index\": {\n            \"relative\": 0,\n            \"absolute\": 1\n        }\n    }\n}"}],"_postman_id":"77ad96fa-7def-49bb-9b13-3d827aaf628e"},{"name":"Get specific","id":"71d06cdb-d7d3-42da-88ae-72494faf10f2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/shade/:sh_idx","description":"<p>The generic URL format: <code>/api/v1/shade/&lt;UINT 0..1&gt;</code></p>\n<p>Get the shade information of the specified shade configuration.</p>\n<p>The returned object is in the format described in the 'Get all' request.</p>\n","urlObject":{"path":["api","v1","shade",":sh_idx"],"host":["{{ip}}"],"query":[],"variable":[{"description":{"content":"<p>Relative index of the shade [0..1].</p>\n","type":"text/plain"},"type":"string","value":"{{sh_idx}}","key":"sh_idx"}]}},"response":[{"id":"21ed33ba-3918-4fde-a10c-16cc77f66126","name":"Read specific","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/shade/{{sh_idx}}"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"121"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"target\": {\n        \"blind\": 0,\n        \"lamella\": 0\n    },\n    \"current\": {\n        \"blind\": 0,\n        \"lamella\": 0,\n        \"disabled\": false,\n        \"index\": {\n            \"relative\": 0,\n            \"absolute\": 1\n        }\n    }\n}"}],"_postman_id":"71d06cdb-d7d3-42da-88ae-72494faf10f2"},{"name":"Set specific","id":"6928f27f-4cd1-4064-b62c-c27485885174","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/shade/:sh_idx?blind={{sh_blind}}&lamella={{sh_lamella}}","description":"<p>Sets the current shade values. </p>\n<p>URL is of form <code>/api/v1/shade/&lt;UINT 0..1&gt;</code></p>\n<p>&lt;UINT 0...1&gt; specifies which of the 2 shades are to move. The sh_idx should correspond to relative index of shade (see read shade).</p>\n<p>You can change the shade target position by specify only one parameter. The query parameters can be passed in path or in body of http request in x-www-form-urlencoded format (same as in query).</p>\n<p>The request return HTTP status 200 OK as success.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>blind</td>\n<td>UINT</td>\n<td>0..100</td>\n<td>The shade target blind position. 0 means total closed, and 100 total open.</td>\n</tr>\n<tr>\n<td>lamella</td>\n<td>UINT</td>\n<td>0..100</td>\n<td>The shade target lamella position. 0 means total closed, and 100 total open.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","shade",":sh_idx"],"host":["{{ip}}"],"query":[{"description":{"content":"<p>Target blind position [0..100]</p>\n","type":"text/plain"},"key":"blind","value":"{{sh_blind}}"},{"description":{"content":"<p>Target lamella position [0..100]</p>\n","type":"text/plain"},"key":"lamella","value":"{{sh_lamella}}"}],"variable":[{"description":{"content":"<p>Relative index of the shade [0..1]</p>\n","type":"text/plain"},"type":"string","value":"{{sh_idx}}","key":"sh_idx"}]}},"response":[],"_postman_id":"6928f27f-4cd1-4064-b62c-c27485885174"},{"name":"Move specific","id":"53a8da97-50ca-433a-8c05-08151a419bf4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/shade/:sh_idx/:sh_action","description":"<p>The method allow to perform shade moving same as phisical button. The action can be up/down/stop and the relative index of selected shade should be specified.</p>\n","urlObject":{"path":["api","v1","shade",":sh_idx",":sh_action"],"host":["{{ip}}"],"query":[],"variable":[{"description":{"content":"<p>Relative index of the shade [0..1]</p>\n","type":"text/plain"},"type":"string","value":"{{sh_idx}}","key":"sh_idx"},{"description":{"content":"<p>Action to perform on shade [up|down|stop|initialize]</p>\n","type":"text/plain"},"type":"string","value":"{{sh_action}}","key":"sh_action"}]}},"response":[],"_postman_id":"53a8da97-50ca-433a-8c05-08151a419bf4"}],"id":"b62de68e-9b9f-496b-a295-cddb2e8fc9a3","description":"<p>Controls shades/blinds on your dingz.</p>\n","event":[{"listen":"prerequest","script":{"id":"a71712c1-dd68-4e1c-abe0-ada85707129a","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"5a5e34cf-9ddf-410c-8ec2-45f6157a2443","type":"text/javascript","exec":[""]}}],"_postman_id":"b62de68e-9b9f-496b-a295-cddb2e8fc9a3"},{"name":"LED","item":[{"name":"Get LED status","id":"26b9ae85-7b75-4adc-93a2-002bcdf5331d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/led/get","description":"<p>Returns the current state of the LED. The following table describes the JSON object returned in this query.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>on</td>\n<td>BOOL</td>\n<td></td>\n<td>Defines whether the LED is on or off.</td>\n</tr>\n<tr>\n<td>hsv</td>\n<td>STRING</td>\n<td>\"&lt;0..359&gt;; &lt;0..100&gt;; &lt;0..100&gt;\"</td>\n<td>Returns the last set color in HSV format.</td>\n</tr>\n<tr>\n<td>rgb</td>\n<td>STRING</td>\n<td>\"RRBBGG\"</td>\n<td>Returns the last set color in RGB format in the form HEX: RRGGBB</td>\n</tr>\n<tr>\n<td>mode</td>\n<td>ENUM as STRING</td>\n<td>\"rgb\"<br />\"hsv\"</td>\n<td>Determine which color mode the LED is using. \"rgb\" or \"hsv\".</td>\n</tr>\n<tr>\n<td>ramp</td>\n<td>UINT</td>\n<td>0..4095</td>\n<td>How to quickly change the values set on the LED. Unit is ms.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","led","get"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"12f4e39e-ba70-45d0-9191-fd0b0a47ba02","name":"Get","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/led/get"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"66"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"on\": false,\n    \"hsv\": \"0;0;100\",\n    \"rgb\": \"FF0000\",\n    \"mode\": \"rgb\",\n    \"ramp\": 25\n}"}],"_postman_id":"26b9ae85-7b75-4adc-93a2-002bcdf5331d"},{"name":"Set LED status","id":"82665bf7-cb0d-48d0-a7f1-80887b5f559e","protocolProfileBehavior":{"disableBodyPruning":true,"disableUrlEncoding":true},"request":{"method":"POST","header":[],"body":{"mode":"urlencoded","urlencoded":[{"key":"action","value":"{{led_action}}","description":"<p>on|off|toggle</p>\n","type":"text"},{"key":"color","value":"{{led_color}}","description":"<p>H;S;V|RRGGBB</p>\n","type":"text"},{"key":"mode","value":"{{led_mode}}","description":"<p>hsv|rgb</p>\n","type":"text"},{"key":"ramp","value":"{{led_ramp}}","description":"<p>0..4095</p>\n","type":"text"}]},"url":"{{ip}}/api/v1/led/set","description":"<p>Allows to control front LED turn on/off, change color and speed of changes. Unlike other requests, this request takes parameters only in the message body as application/x-www-form-urlencoded. The table below describes each field. The operation status is returned using the HTTP response code. At least one value in the parameters should be given.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>action</td>\n<td>ENUM as STRING</td>\n<td>\"on\"<br />\"off\"<br />\"toggle\"</td>\n<td>Defines what action should be performed. Turn on/off or toggle on/off status of LED. If not other fields are specified the previous color/ramp set will be used.</td>\n</tr>\n<tr>\n<td>color</td>\n<td>STRING</td>\n<td>\"&lt;0..359&gt;; &lt;0..100&gt;; &lt;0..100&gt;\"<br />or<br />\"RRBBGG\"</td>\n<td>Color to set on LED. The format of color can be HSV or RGB. For HSV: string should be H;S;V, &lt;0...359&gt;;&lt;0..100&gt;;&lt;0..100&gt;. For RGB format the string should be 6 hex digits: RRGGBB. Set this value if LED is off not turn on LED but store the new values.</td>\n</tr>\n<tr>\n<td>mode</td>\n<td>ENUM as STRING</td>\n<td>\"hsv\"<br />\"rgb\"</td>\n<td>Color to be set on the LED. The color format can be HSV or RGB. For HSV: the string should be H; S; V, &lt;0 ... 359&gt;; &lt;0..100&gt;; &lt;0..100&gt;. For RGB format, the string should be 6 hexadecimal digits: RRGGBB. Setting this value if the LED is off will not turn the LED on, but will save the new values.</td>\n</tr>\n<tr>\n<td>ramp</td>\n<td>UINT</td>\n<td>0..4095</td>\n<td>Specify the ramp speed / color fade (change from previous to new value). Units are ms.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Please do not use percent encoding values in this request. Example with use curl:</p>\n<p><code>curl -i -d 'action=on&amp;color=50;100;100&amp;mode=hsv&amp;ramp=50' http://{{ip}}/api/v1/led/set</code></p>\n","urlObject":{"path":["api","v1","led","set"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"27d5bfcd-40c6-4621-a465-ca5c3c1f53d4","name":"Set LED status","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"action=on&color=50;100;100&mode=hsv&ramp=50"},"url":"{{ip}}/api/v1/led/set"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Connection","value":"close"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"55"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"on\": true,\n    \"color\": \"50;100;100\",\n    \"mode\": \"hsv\",\n    \"ramp\": 50\n}"}],"_postman_id":"82665bf7-cb0d-48d0-a7f1-80887b5f559e"},{"name":"Set LED specific channel","id":"5f47bb00-6cbc-46f5-8737-dd7f0115354f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":"{{ip}}/api/v1/led/:led_color?value={{led_brightness}}&ramp={{led_ramp}}","description":"<p>URL has format <code>api/v1/led/&lt;ENUM red|green|blue&gt;[?value=&lt;UINT 0..255&gt;][&amp;ramp=&lt;UINT 1..4095&gt;]</code> for each channel.</p>\n<p>The HTTP result code is returnet as request result.</p>\n<p>We can the set the values for the specified channeld by posting:</p>\n<ul>\n<li><code>value</code>: &lt;UINT 0..255&gt;</li>\n</ul>\n<p>Optionally we can also specify how quickly this we should change the to the new value by using:</p>\n<ul>\n<li><code>ramp</code>: &lt;UINT 1..4095&gt;</li>\n</ul>\n","urlObject":{"path":["api","v1","led",":led_color"],"host":["{{ip}}"],"query":[{"description":{"content":"<p>LED brightness</p>\n","type":"text/plain"},"key":"value","value":"{{led_brightness}}"},{"disabled":true,"key":"ramp","value":"3000"},{"description":{"content":"<p>How to quickly change the color of the LED. Unit is ms.</p>\n","type":"text/plain"},"key":"ramp","value":"{{led_ramp}}"}],"variable":[{"description":{"content":"<p>What color to set on the LED [red|green|blue]</p>\n","type":"text/plain"},"type":"string","value":"{{led_color}}","key":"led_color"}]}},"response":[{"id":"aae67d1b-c443-4217-94c4-67ff041d1398","name":"Set RGB channel values for front led","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":{"raw":"{{ip}}/api/v1/led/red?value=200&ramp=3000","host":["{{ip}}"],"path":["api","v1","led","red"],"query":[{"key":"value","value":"200"},{"key":"ramp","value":"3000"}]}},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"text/plain"},{"key":"Content-Length","value":"0"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"5f47bb00-6cbc-46f5-8737-dd7f0115354f"}],"id":"9959a56e-b675-4ed7-8ab4-88f58dd64775","description":"<p>Getting or setting the front LED status.</p>\n","event":[{"listen":"prerequest","script":{"id":"38861c2e-05fa-483e-9936-e8a9babbcbf9","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"f7abdbb5-6b21-4745-a7b2-ee8834ae1a5d","type":"text/javascript","exec":[""]}}],"_postman_id":"9959a56e-b675-4ed7-8ab4-88f58dd64775"},{"name":"Thermostat","item":[{"name":"Get thermostat operation","id":"17843e6f-3a53-4909-b61c-1aff0caed9f6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/thermostat","description":"<p>Returns current operation of thermostat. This is read only result.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Default</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>active</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>If the thermostat functionality is enabled.</td>\n</tr>\n<tr>\n<td>out</td>\n<td>uint</td>\n<td>0..3</td>\n<td>0</td>\n<td>The output index assigned to thermostat.</td>\n</tr>\n<tr>\n<td>on</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>If the output controlled by thermostat is turn on.</td>\n</tr>\n<tr>\n<td>enabled</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>It the thermostat is enabled e.g. control output depending of temperature.</td>\n</tr>\n<tr>\n<td>target_temp</td>\n<td>int</td>\n<td></td>\n<td>min_target_temp<br />..max_target_temp</td>\n<td>The target cooling heating temperature.</td>\n</tr>\n<tr>\n<td>mode</td>\n<td>enum</td>\n<td>\"heating\"<br />\"cooling\"</td>\n<td>\"heating\"</td>\n<td>Mode of thermostat operating.</td>\n</tr>\n<tr>\n<td>temp</td>\n<td>int</td>\n<td></td>\n<td></td>\n<td>Current room temperature.</td>\n</tr>\n<tr>\n<td>min_target_temp</td>\n<td>int</td>\n<td>-55..125</td>\n<td></td>\n<td>Minimum target temperature.</td>\n</tr>\n<tr>\n<td>max_target_temp</td>\n<td>int</td>\n<td>-55..125</td>\n<td></td>\n<td>Maximum target temperature.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","thermostat"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"25853d46-7573-4216-9a72-76aa13d151a1","name":"Get thermostat information","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/thermostat"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"180"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"active\": false,\n    \"out\": 0,\n    \"on\": false,\n    \"enabled\": true,\n    \"target_temp\": 21,\n    \"mode\": \"heating\",\n    \"temp\": 25.700000762939453,\n    \"min_target_temp\": 17,\n    \"max_target_temp\": 31\n}"},{"id":"6cdf271f-15be-4f82-8d27-135d8ec0c536","name":"Get thermostat configuration","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/thermostat_config"},"_postman_previewlanguage":"json","header":[],"cookie":[],"responseTime":null,"body":"{\"active\":false,\"output\":1,\"on\":false,\"min_temp\":20,\"max_temp\":22,\"reverse\":false}"}],"_postman_id":"17843e6f-3a53-4909-b61c-1aff0caed9f6"},{"name":"Set thermostat operation","id":"8dd25d32-ae45-499a-ad90-373efe2bdfb3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"url":"{{ip}}/api/v1/thermostat?target_temp={{tg_temp}}&enable={{tg_enable}}","description":"<p>Allows to control thermostat. In table bellow describe query parameters.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>tg_temp</td>\n<td>real</td>\n<td>min_target_temp<br />..<br />max_target_temp</td>\n<td>The target temperature.</td>\n</tr>\n<tr>\n<td>tg_enable</td>\n<td>bool</td>\n<td></td>\n<td>If thermostat should control output to achieve target temperature.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","thermostat"],"host":["{{ip}}"],"query":[{"description":{"content":"<p>The target temperature.</p>\n","type":"text/plain"},"key":"target_temp","value":"{{tg_temp}}"},{"description":{"content":"<p>If thermostat should control output to achieve target temperature.</p>\n","type":"text/plain"},"key":"enable","value":"{{tg_enable}}"}],"variable":[]}},"response":[],"_postman_id":"8dd25d32-ae45-499a-ad90-373efe2bdfb3"}],"id":"40f9f62e-659b-4fc7-9dc7-7670c023a7c2","description":"<p>The thermostat control API. Before you can used thermostat it need configure first.</p>\n","event":[{"listen":"prerequest","script":{"id":"7b6ff320-beb4-48ad-9320-48580be40d1a","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"33f43310-7f1a-4ab8-970c-01f04cdbc686","type":"text/javascript","exec":[""]}}],"_postman_id":"40f9f62e-659b-4fc7-9dc7-7670c023a7c2"},{"name":"Timer","item":[{"name":"Get active timers","id":"ecd4f207-1006-4bb9-91ab-e4f824e8e04b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/timer","description":"<p>Return list of active timers.</p>\n<p>This request return array of JSON objects in format as described in POST request.</p>\n<p>Example of returned object:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[{\n    \"ref\":  \"dimmer\",\n    \"index\":        0,\n    \"time\": 10,\n    \"reverse\":      false,\n    \"at_night\":     false,\n    \"value\":        50,\n    \"ramp\": 10\n}]\n</code></pre>\n<p>This example show one active timer.</p>\n<p>If the timer execution was completed timer instance is automaticly deleted.</p>\n","urlObject":{"path":["api","v1","timer"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"7534fda2-3dbb-465a-a4a8-5fb5fa72e3e1","name":"Get active timmers","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/timer"},"_postman_previewlanguage":"Text","header":[],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"ecd4f207-1006-4bb9-91ab-e4f824e8e04b"},{"name":"Create and activate timer","id":"53514c39-8b27-455e-a444-89de7349de00","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"ref\": \"dimmer\",\r\n    \"index\": 0,\r\n    \"time\": 10,\r\n    \"reverse\": false,\r\n    \"at_night\": false,\r\n    \"value\": 50,\r\n    \"ramp\": 10\r\n}"},"url":"{{ip}}/api/v1/timer","description":"<p>Allow create timer.</p>\n<p>This request require JSON object with fields described bellow as body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Required</th>\n<th>Target</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>ref</td>\n<td>enum</td>\n<td>dimmer | shade | led</td>\n<td>yes</td>\n<td>all</td>\n<td></td>\n</tr>\n<tr>\n<td>index</td>\n<td>uint</td>\n<td>0-3 | 0-1 | 0</td>\n<td>yes</td>\n<td>all</td>\n<td>index is relative</td>\n</tr>\n<tr>\n<td>time</td>\n<td>uint</td>\n<td>0-0xFFFFFFFF</td>\n<td>yes</td>\n<td>all</td>\n<td>unit 1s</td>\n</tr>\n<tr>\n<td>reverse</td>\n<td>bool</td>\n<td></td>\n<td>no</td>\n<td>all</td>\n<td>count down</td>\n</tr>\n<tr>\n<td>at_night</td>\n<td>bool</td>\n<td></td>\n<td>no</td>\n<td>all</td>\n<td>executed at night</td>\n</tr>\n<tr>\n<td>value</td>\n<td>uint</td>\n<td>0-100</td>\n<td>yes</td>\n<td>dimmer</td>\n<td>unit %</td>\n</tr>\n<tr>\n<td>ramp</td>\n<td>uint</td>\n<td>0-100</td>\n<td>yes</td>\n<td>dimmer</td>\n<td>unit 0.1s</td>\n</tr>\n<tr>\n<td>blind</td>\n<td>uint</td>\n<td>0-100</td>\n<td>yes</td>\n<td>shade</td>\n<td>unit %</td>\n</tr>\n<tr>\n<td>lamella</td>\n<td>uint</td>\n<td>0-100</td>\n<td>yes</td>\n<td>shade</td>\n<td>unit %</td>\n</tr>\n<tr>\n<td>on</td>\n<td>bool</td>\n<td></td>\n<td>yes</td>\n<td>LED</td>\n<td></td>\n</tr>\n<tr>\n<td>color</td>\n<td>string</td>\n<td>H;S;V</td>\n<td>yes</td>\n<td>LED</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Example of request body:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"ref\": \"dimmer\",\n    \"index\": 0,\n    \"time\": 10,\n    \"reverse\": false,\n    \"at_night\": false,\n    \"value\": 50,\n    \"ramp\": 10\n}\n</code></pre>\n<p>This request object set timer for 10s on dimmer 0 (1), dimmer value will be set to 50% with ramp 1s. Dimmer output will be change to required value immediately and back to previous value after required time.</p>\n<p>ref and index firlds range depends on dingz output configuration.</p>\n<p>Cannot create multiple timer instances with same ref and index.</p>\n","urlObject":{"path":["api","v1","timer"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"53514c39-8b27-455e-a444-89de7349de00"},{"name":"Stop timer","id":"341db95e-7dbd-42b1-b6cf-7461c1da1009","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"ref\": \"dimmer\",\r\n    \"index\": 0\r\n}"},"url":"{{ip}}/api/v1/timer/stop","description":"<p>Allows to stop/destroy timer previously created.</p>\n<p>This request require JSON object with two first fields (ref and index) of timer start request</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Required</th>\n<th>Target</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>ref</td>\n<td>enum</td>\n<td>dimmer | shade | led</td>\n<td>yes</td>\n<td>all</td>\n<td></td>\n</tr>\n<tr>\n<td>index</td>\n<td>uint</td>\n<td>0-3 | 0-1 | 0</td>\n<td>yes</td>\n<td>all</td>\n<td>index is relative</td>\n</tr>\n</tbody>\n</table>\n</div><p>Example:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"ref\": \"dimmer\",\n    \"index\": 0\n}\n</code></pre>\n<p>Stop timer for dimmer with index 0</p>\n","urlObject":{"path":["api","v1","timer","stop"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"341db95e-7dbd-42b1-b6cf-7461c1da1009"}],"id":"e4389390-e527-4a0f-ae25-3008fc87f7c1","description":"<p>This feature allows control outputs by time. Timers allows set target values on particular module: dimmer, shade and LED indicated by ref field in JSON object. Timers can work in two modes: set target values immediately and after set time back to previous values (before timer activated) or set values after set time (reverse field in JSON object). Timers also allow delay action execution to night (light sensor) event (at_night field in JSON object)</p>\n","event":[{"listen":"prerequest","script":{"id":"b26a8629-b13c-4f32-b77a-0f6214561821","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"85d26f19-eb0f-4230-a473-7495c5d9e700","type":"text/javascript","exec":[""]}}],"_postman_id":"e4389390-e527-4a0f-ae25-3008fc87f7c1"},{"name":"Scheduler","item":[{"name":"Get schedule","id":"0a62af27-1bd8-4583-9b2e-bb127392de07","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/schedule","description":"<p>Returns defined schedule items.</p>\n<p>This method return array of JSON object as response body.</p>\n<p>Example:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[{\n    \"hour\": 13,\n    \"minute\":       15,\n    \"days\": 127,\n    \"dimmers\":      1,\n    \"value\":        25,\n    \"ramp\": 50,\n    \"id\": \"\"\n}, {\n    \"hour\": 13,\n    \"minute\":       20,\n    \"days\": 127,\n    \"dimmers\":      1,\n    \"value\":        0,\n    \"ramp\": 50,\n    \"id\": \"\"\n}]\n</code></pre>\n","urlObject":{"path":["api","v1","schedule"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"0a62af27-1bd8-4583-9b2e-bb127392de07"},{"name":"Set schedule","id":"a70bac8e-1c7c-4444-ae27-832d8889f425","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"[\r\n    {\r\n        \"hour\": 13,\r\n        \"minute\": 15,\r\n        \"days\": 127,\r\n        \"dimmers\": 1,\r\n        \"value\": 25,\r\n        \"ramp\": 50\r\n    },\r\n    {\r\n        \"hour\": 13,\r\n        \"minute\": 20,\r\n        \"days\": 127,\r\n        \"dimmers\": 1,\r\n        \"value\": 0,\r\n        \"ramp\": 50\r\n    }\r\n]"},"url":"{{ip}}/api/v1/schedule","description":"<p>Allows to set schedule on dimmers outputs.</p>\n<p>This method accepts array of JSON object as request body. The single object are described bellow:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Required</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>hour</td>\n<td>uint</td>\n<td>0-23</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td>minute</td>\n<td>uint</td>\n<td>0-59</td>\n<td>yes</td>\n<td></td>\n</tr>\n<tr>\n<td>days</td>\n<td>uint</td>\n<td>1-127</td>\n<td>yes</td>\n<td>bitfields</td>\n</tr>\n<tr>\n<td>dimmers</td>\n<td>uint</td>\n<td>1-15</td>\n<td>yes</td>\n<td>bitfields</td>\n</tr>\n<tr>\n<td>value</td>\n<td>uint</td>\n<td>0-100</td>\n<td>yes</td>\n<td>unit %</td>\n</tr>\n<tr>\n<td>ramp</td>\n<td>uint</td>\n<td>0-100</td>\n<td>yes</td>\n<td>unit 0.1s</td>\n</tr>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>0-8</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>Limit of schedule objects is 100.</p>\n<p>Days field is binary number with selected days converted to decimal format. Least significant bit (0) responds to Sunday most significant bit (6) responds to Saturday.</p>\n<p>Binary example:</p>\n<p>01111111 -&gt; 127, item active all days in week,</p>\n<p>00111110 -&gt; 62, item active from Monday to Friday,</p>\n<p>01000001 -&gt; 65, item active in Saturday and Sunday.</p>\n<p>Dimmers field is binary number with bit 0 corresponds to dimmer 0 (1) and bit 3 corresponds to dimmer 3 (4).</p>\n<p>Binary example:</p>\n<p>1111 -&gt; 15, all dimmers,</p>\n<p>0001 -&gt; 1, dimmer 0 (1),</p>\n<p>1000 -&gt; 8, dimmer 3 (4)</p>\n<p>Example:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n    {\n        \"hour\": 13,\n        \"minute\": 15,\n        \"days\": 127,\n        \"dimmers\": 1,\n        \"value\": 25,\n        \"ramp\": 50\n    },\n    {\n        \"hour\": 13,\n        \"minute\": 20,\n        \"days\": 127,\n        \"dimmers\": 1,\n        \"value\": 0,\n        \"ramp\": 50\n    }\n]\n</code></pre>\n<p>This example set schedule on dimmer 0 (1), the dimmer value will be set to 25% with ramp 5s about 13:15 every day and set to 0% with ramp 5s about 13:20.</p>\n","urlObject":{"path":["api","v1","schedule"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"a70bac8e-1c7c-4444-ae27-832d8889f425"},{"name":"Add schedule item","id":"010ff2f4-bb57-404f-80fb-48bd58abe143","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"hour\": 13,\r\n    \"minute\": 15,\r\n    \"days\": 127,\r\n    \"dimmers\": 1,\r\n    \"value\": 25,\r\n    \"ramp\": 50,\r\n    \"id\": \"test\"\r\n}"},"url":"{{ip}}/api/v1/schedule/add","description":"<p>Require single JSON object same as in set schedule request</p>\n","urlObject":{"path":["api","v1","schedule","add"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"010ff2f4-bb57-404f-80fb-48bd58abe143"},{"name":"Remove schedule item","id":"f2821546-6684-4370-8345-9ccc6547913c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n\t\"id\": \"test\"\n}"},"url":"{{ip}}/api/v1/schedule/remove","description":"<p>This method accept JSON object as request body. The object fields are described bellow:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Required</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>id</td>\n<td>string</td>\n<td>1-8</td>\n<td>no</td>\n<td></td>\n</tr>\n<tr>\n<td>index</td>\n<td>uint</td>\n<td>0-99</td>\n<td>no</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><p>The schedule item can by removed by id or by index, id or index should be given else bad request will be returned.</p>\n","urlObject":{"path":["api","v1","schedule","remove"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"f2821546-6684-4370-8345-9ccc6547913c"}],"id":"bc13b0dd-1eff-46bd-b51d-731fa0d2de19","_postman_id":"bc13b0dd-1eff-46bd-b51d-731fa0d2de19","description":""},{"name":"Sensors","item":[{"name":"Read all","id":"a9044f1e-a79f-4d05-b19b-337f0c44310d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/sensors","description":"<p>The request returns measurements from all sensors. The following table describes the fields:</p>\n<p>| Name | Type | Mandatory | Description |\n| ------------------------- | ------------------------ | --------- | -------------------------------------------------- ---------- |\n| brightness | UINT or NULL | yes | Brightness read by the light sensor with light compensation depending on the color of the cover. If an error occurs or there is no light sensor, the field is set to zero. |\n| light_state | ENUM (as a string) or NULL | no | The field contains the range in which the illuminance is located. It can be day, twilight or night. The assignment to an interval depends on the settings in WebUI / Motion Detector / Thresholds. In the event of an error or the absence of a light sensor, the field contains a zero value. |\n| room_temperature | REAL | no | Room temperature compensated. If any error occurs, the field does not exist. |\n| uncompensated_temperature | REAL | no | Uncompensated room temperature (measured by the temperature sensor). In case of an error, the field is missing. |\n| cpu_temperature | REAL | yes | Front CPU temperature. |\n| puck_temperature | REAL | yes | Rear CPU temperature. If any error occurs, this field is null. |\n| temperature_fet | REAL or NULL | yes | Temperature of the inner disc / base of the FET. If any error occurs, this field is null. |\n| person_present | BOOL | yes | Current traffic status. |\n| light_off_timer | UINT | no | If the PIR timer is enabled on any output, this field is present and shows how much time is left until the output turns off. |\n| suspend_timer | UINT | no | If the PIR timer is enabled on any of the outputs, this field is present and shows how much time is left until the PIR sensor turns on the output. |\n| input_state | NULL or BOOL | yes | If output 1 is not configured as an input, this field contains zero values, otherwise the bool value represents the input state (voltage present at the input). The input status can be negated in the input settings (WebUI / Input / Invert). |\n| power_outputs | ARRAY | | .OBJECT [output number] .value to REAL. This field contains an array of objects. Each object contains a value field that shows the actual power delivered to the device connected to the output. This field may be null in the event of any failure. |</p>\n","urlObject":{"path":["api","v1","sensors"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"486a77a2-1ace-49d2-9ba6-16dc22173a9d","name":"result of read all sensors values","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/sensors"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"270"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"brightness\": 54,\n    \"light_state\": \"night\",\n    \"room_temperature\": 22.9,\n    \"uncompensated_temperature\": 34.3125,\n    \"cpu_temperature\": 71.67,\n    \"puck_temperature\": 60,\n    \"fet_temperature\": 41,\n    \"person_present\": 0,\n    \"input_state\": null,\n    \"power_outputs\": [\n        {\n            \"value\": 0\n        },\n        {\n            \"value\": 0\n        },\n        {\n            \"value\": 0\n        },\n        {\n            \"value\": 0\n        }\n    ]\n}"}],"_postman_id":"a9044f1e-a79f-4d05-b19b-337f0c44310d"},{"name":"Get motion","id":"42ef2834-ee6e-44a1-9d7c-be57e87ea3b0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/motion","description":"<p>The request returns the traffic status. The following table describes the fields:</p>\n<p>| Name | Type | Mandatory | Description |\n| ------- | ---- | --------- | -------------------------------------------------- ---------- |\n| success | BOOL | yes | Motion sensor status. This field is always true even if there is no motion sensor. |\n| motion | BOOL | yes | Traffic status (if the person is currently detected). |</p>\n","urlObject":{"path":["api","v1","motion"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"4d529641-0b27-4e07-a546-62eb68bb9370","name":"Result of read motion status","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/motion"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"31"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"motion\": false\n}"}],"_postman_id":"42ef2834-ee6e-44a1-9d7c-be57e87ea3b0"},{"name":"Get light","id":"53f61237-5a09-456f-8a0d-0015c667674c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/light","description":"<p>Request for the return of light measurements. The following table describes the fields:</p>\n<p>| Name | Type | Mandatory | Description |\n| --------- | -------------- | --------- | -------------------------------------------------- ---------- |\n| success | BOOL | yes | Light state read. If there is any error in the light measurements, the field is set to false. |\n| intensity | REAL | no | Real-time current light and compensated. This field is not present if the Success field is false. |\n| state | ENUM as a string | no | The field contains the range of the real-time illuminance. It can be day, twilight or night. The assignment to an interval depends on the settings in WebUI / Motion Detector / Thresholds. This field is not present if the Success field is false. |\n| lpfv | REAL | no | The result of the light value after the low pass filter. This field is not present if the Success field is false. |\n| lpf_state | REAL | no | The field contains the range in which the LPF value of the light is located. It can be day, twilight or night. The assignment to an interval depends on the settings in WebUI / Motion Detector / Thresholds. This field is not present if the Success field is false. |\n| raw.adc0 | UINT | no | The field contains the raw value read from the ADC for visible light. This field is not present if the Success field is false. |\n| raw.adc1 | UINT | no | The field contains the raw value read from the ADC for infrared light. This field is not present if the Success field is false. |</p>\n","urlObject":{"path":["api","v1","light"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"7f0336aa-307d-443c-9364-a6cc1ed394ae","name":"Result of read light","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/light"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"142"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"intensity\": 166,\n    \"state\": \"twilight\",\n    \"lpfv\": 166,\n    \"lpf_state\": \"twilight\",\n    \"raw\": {\n        \"adc0\": 77,\n        \"adc1\": 54\n    }\n}"}],"_postman_id":"53f61237-5a09-456f-8a0d-0015c667674c"},{"name":"Get temperature","id":"a2b9c1e0-4e51-4140-b9ba-32cce9d81fe2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/temp","description":"<p>The request returns the measurement from the temperature sensor. The following table describes the JSON object fields:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Mandatory</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>success</td>\n<td>BOOL</td>\n<td>yes</td>\n<td>The state of temperature read. If there is any error with temperature measurements the field is set to false.</td>\n</tr>\n<tr>\n<td>temperature</td>\n<td>REAL</td>\n<td>no</td>\n<td>The current and compensated temperature in room. This field is not present if success field is set to false.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","temp"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"96edc1e1-f1fd-41ec-81b3-f9a62259f5fd","name":"Read the compensated temperature","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/temp"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"36"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"temperature\": 23.21\n}"}],"_postman_id":"a2b9c1e0-4e51-4140-b9ba-32cce9d81fe2"}],"id":"9dcced34-88b3-4554-a769-64505df42f29","_postman_id":"9dcced34-88b3-4554-a769-64505df42f29","description":""},{"name":"Night light","item":[{"name":"Get night light settings","id":"294e9589-55ad-48fc-a3d0-05c03730686f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/night_light","urlObject":{"path":["api","v1","night_light"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"294e9589-55ad-48fc-a3d0-05c03730686f"},{"name":"Set night light settings","id":"106bd1c0-c39c-4334-a33e-a855c466abad","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/night_light","urlObject":{"path":["api","v1","night_light"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"106bd1c0-c39c-4334-a33e-a855c466abad"}],"id":"ede38d37-bff7-4931-8b7b-7c102550e1c3","description":"<p>Night lighting allows you to set dimmers and LEDs in the time interval.</p>\n<p>The following table describes how to get and set a JSON object through this API.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Default</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>enable</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>If the night light functionality is enabled.</td>\n</tr>\n<tr>\n<td>on.hour</td>\n<td>uint</td>\n<td>0..23</td>\n<td>20</td>\n<td>The hour when the dimmers and LED are to be turned on.</td>\n</tr>\n<tr>\n<td>on.minute</td>\n<td>uint</td>\n<td>0..59</td>\n<td>0</td>\n<td>The minute when the dimmers and LED are to be turned on.</td>\n</tr>\n<tr>\n<td>off.hour</td>\n<td>uint</td>\n<td>0..23</td>\n<td>6</td>\n<td>The hour when the dimmers and LED are to be turned off.</td>\n</tr>\n<tr>\n<td>off.minute</td>\n<td>uint</td>\n<td>0..59</td>\n<td>0</td>\n<td>The minute when the dimmers and LED are to be turned off.</td>\n</tr>\n<tr>\n<td>dimmers[i].value</td>\n<td>uint</td>\n<td>0..100</td>\n<td>20</td>\n<td>The dimmer value to set in light time period.</td>\n</tr>\n<tr>\n<td>dimmers[i].fade_in_time</td>\n<td>uint</td>\n<td>0..100</td>\n<td>10</td>\n<td>The fade in time of dimmer turned on when night light period.</td>\n</tr>\n<tr>\n<td>dimmers[i].fade_out_time</td>\n<td>uint</td>\n<td>0..100</td>\n<td>10</td>\n<td>The fade out time of dimmer turned off after night ight period.</td>\n</tr>\n<tr>\n<td>led.color</td>\n<td>string</td>\n<td>HSV or RGB</td>\n<td></td>\n<td>The led color set in night light period.</td>\n</tr>\n</tbody>\n</table>\n</div><p>The dimmers array instead of object with values can include null values in case of dimmer not used in night light.</p>\n<p>The led object can have null value in case if LED is not used in night light.</p>\n","event":[{"listen":"prerequest","script":{"id":"bccb3a4a-139f-471d-8ea6-a2236f73ce34","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"9dc56903-e3e3-4baa-b6b0-419b849214b9","type":"text/javascript","exec":[""]}}],"_postman_id":"ede38d37-bff7-4931-8b7b-7c102550e1c3"},{"name":"Configuration","item":[{"name":"Button configuration","item":[{"name":"Get button configuration","id":"415a73ab-e71d-4d62-b5d7-fab7e31d4617","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/button_config","urlObject":{"path":["api","v1","button_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"242d3432-b345-4aef-a6e2-5214011272e2","name":"Get button configuration","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/button_config"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"603"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"dingz_orientation\": \"1,2,3,4\",\n    \"buttons\": [\n        {\n            \"output\": 129,\n            \"feedback\": null,\n            \"feedback_intensity\": 100,\n            \"fade_in_time\": 0,\n            \"fade_out_time\": 0,\n            \"icon\": 0,\n            \"dim_value\": [\n                100,\n                100,\n                100,\n                100\n            ],\n            \"name\": \"\"\n        },\n        {\n            \"output\": 130,\n            \"feedback\": null,\n            \"feedback_intensity\": 100,\n            \"fade_in_time\": 0,\n            \"fade_out_time\": 0,\n            \"icon\": 0,\n            \"dim_value\": [\n                100,\n                100,\n                100,\n                100\n            ],\n            \"name\": \"\"\n        },\n        {\n            \"output\": 132,\n            \"feedback\": null,\n            \"feedback_intensity\": 100,\n            \"fade_in_time\": 0,\n            \"fade_out_time\": 0,\n            \"icon\": 0,\n            \"dim_value\": [\n                100,\n                100,\n                100,\n                100\n            ],\n            \"name\": \"\"\n        },\n        {\n            \"output\": 136,\n            \"feedback\": null,\n            \"feedback_intensity\": 100,\n            \"fade_in_time\": 0,\n            \"fade_out_time\": 0,\n            \"icon\": 0,\n            \"dim_value\": [\n                100,\n                100,\n                100,\n                100\n            ],\n            \"name\": \"\"\n        }\n    ]\n}"}],"_postman_id":"415a73ab-e71d-4d62-b5d7-fab7e31d4617"},{"name":"Set button configuration","id":"374c0fa9-b512-41eb-9d95-470f29484a82","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/button_config","urlObject":{"path":["api","v1","button_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"374c0fa9-b512-41eb-9d95-470f29484a82"}],"id":"425c8519-711a-42f3-bbb1-79ca358a03fb","description":"<p>The most important API function described in this chapter is assigning a button to outputs. Pressing the button performs the action on the assigned output. For example, dim the dimmer or move the shadow. Multiple outputs can be assigned to one button.</p>\n<p>The following table describes the format of the JSON object returned by the GET method that should be the basis of the POST method.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Default</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dingz_orientation</td>\n<td>string</td>\n<td>\"1,2,3,4\"<br />\"1,3,2,4\"<br />\"2,4,1,3\"</td>\n<td>\"1,2,3,4\"</td>\n<td>Button rotation in case of rotated dingz.</td>\n</tr>\n<tr>\n<td>buttons[i].output</td>\n<td>uint or null</td>\n<td>null<br />0..255</td>\n<td>null</td>\n<td>i=0..3. The assignation of outputs to button. In case of null or 0 value no any output is assigned to the button. In case of assignation the field should be given as unsigned integer. There are two format of assignation notation, one in old scheme allow assign only one output to button, second in new bit mask format for multi output assignation.<br />In case of single output assignation the value should be in range 1..4 corresponds to output number.<br />In case of multi assignation the value should be bit mask with most significant bit set and four less significant bit set for dedicated outputs. So LSB bit 0 correspond to output 1, and LSB bit 3 correspond to output 4. MSB bit 7 should be set. After translation bit format to unsigned integer the value is in range: 128..143. This format can be used also to only one output assignation or no assignation, so is universal and recommended.</td>\n</tr>\n<tr>\n<td>buttons[i].feedback</td>\n<td>null or enum as string</td>\n<td>null<br />\"white\"<br />\"red\"<br />\"green\"<br />\"blue\"</td>\n<td>null</td>\n<td>After press of button blink in selected color.</td>\n</tr>\n<tr>\n<td>buttons[i].feedback_intensity</td>\n<td>uint</td>\n<td>0..100</td>\n<td>100</td>\n<td>Brightness of feedback blink.</td>\n</tr>\n<tr>\n<td>buttons[i].fade_in_time</td>\n<td>uint</td>\n<td>0..100</td>\n<td>0</td>\n<td>How fast brightening the dimmers assigned to button. Unit is 100ms.</td>\n</tr>\n<tr>\n<td>buttons[i].fade_out_time</td>\n<td>uint</td>\n<td>0..100</td>\n<td>0</td>\n<td>How fast darknes the dimmers assigned to button. Unit is 100ms.</td>\n</tr>\n<tr>\n<td>buttons[i].icon</td>\n<td>uint</td>\n<td>0..255</td>\n<td>0</td>\n<td>The icon helper for mobile application on any other application allow to map to name or button icon.</td>\n</tr>\n<tr>\n<td>buttons[i].dim_value[j]</td>\n<td>uint</td>\n<td>0..100</td>\n<td>100</td>\n<td>j=0..3. Dim value for each output assigned to button.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Some fields corresponds only for dimmer, like dim value or fade time.</p>\n","event":[{"listen":"prerequest","script":{"id":"0d57a0e5-5537-4556-b50b-c6a4456a1a34","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"9c290ae6-fd2e-4d91-bf8e-27cf22f2ef13","type":"text/javascript","exec":[""]}}],"_postman_id":"425c8519-711a-42f3-bbb1-79ca358a03fb"},{"name":"Input configuration","item":[{"name":"Get input configuration","id":"d522878e-f959-48a9-af46-c1e84f9ef107","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/input_config","urlObject":{"path":["api","v1","input_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"b35ea09b-6750-49dc-9a13-1dad721d2387","name":"Get input configuration","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/input_config"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"176"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"inputs\": [\n        {\n            \"output\": null,\n            \"feedback\": null,\n            \"feedback_intensity\": 100,\n            \"active\": false,\n            \"pir\": false,\n            \"invert\": false,\n            \"fade_in_time\": 0,\n            \"fade_out_time\": 0,\n            \"dim_value\": [\n                100,\n                100,\n                100,\n                100\n            ]\n        }\n    ]\n}"}],"_postman_id":"d522878e-f959-48a9-af46-c1e84f9ef107"},{"name":"Set input configuration","id":"935d5f3a-f8d7-401b-997f-988a55766277","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/input_config","urlObject":{"path":["api","v1","input_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"935d5f3a-f8d7-401b-997f-988a55766277"}],"id":"f32fe30b-2853-4f9d-806e-79b8442752cd","description":"<p>The device has the functionality of using output 1 as input, API in this section we describe the permission to configure. The important thing is that the input works just like the button in the actions.</p>\n<p>The following table describes the JSON object that is returned and should be sent to change the value.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Default</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>inputs[0].output</td>\n<td>uint or null</td>\n<td>null<br />0..255</td>\n<td>null</td>\n<td>The device support only one input so can be i=0. The assignation of outputs to input. In case of null or 0 value no any output is assigned to the input. In case of assignation the field should be given as unsigned integer. There are two format of assignation notation, one in old scheme allow assign only one output to input, second in new bit mask format for multi output assignation.<br />In case of single output assignation the value should be in range 1..4 corresponds to output number.<br />In case of multi assignation the value should be bit mask with most significant bit set and four less significant bit set for dedicated outputs. So LSB bit 0 correspond to output 1, and LSB bit 3 correspond to output 4. MSB bit 7 should be set. After translation bit format to unsigned integer the value is in range: 128..143. This format can be used also to only one output assignation or no assignation, so is universal and recommended.</td>\n</tr>\n<tr>\n<td>inputs[0].feedback</td>\n<td>null or enum as string</td>\n<td>null<br />\"white\"<br />\"red\"<br />\"green\"<br />\"blue\"</td>\n<td>null</td>\n<td>After violation of input blink in selected color.</td>\n</tr>\n<tr>\n<td>inputs[0].feedback_intensity</td>\n<td>uint</td>\n<td>0..100</td>\n<td>100</td>\n<td>Brightness of feedback blink.</td>\n</tr>\n<tr>\n<td>inputs[0].active</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>If true enable input functionality on output 1. If input is enabled the output cannot be controlled by dimmer or shade. In control API output is marked as disabled.</td>\n</tr>\n<tr>\n<td>inputs[0].pir</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>Allow input to act motion sensor. This option is useful if you need connect external motion sensor to device. If device have PIR and PIR functionality on input is enabled the motion detection is alternative of both signal.</td>\n</tr>\n<tr>\n<td>inputs[0].invert</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>Invert input polarity.</td>\n</tr>\n<tr>\n<td>inputs[0].fade_in_time</td>\n<td>uint</td>\n<td>0..100</td>\n<td>0</td>\n<td>How fast brightening the dimmers assigned to input. Unit is 100ms.</td>\n</tr>\n<tr>\n<td>inputs[0].fade_out_time</td>\n<td>uint</td>\n<td>0..100</td>\n<td>0</td>\n<td>How fast darkness the dimmers assigned to input. Unit is 100ms.</td>\n</tr>\n<tr>\n<td>inputs[0].dim_value[j]</td>\n<td>uint</td>\n<td>0..100</td>\n<td>100</td>\n<td>j=0..3. Dim value for each output assigned to input.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Some fields as dim_value and fade time corresponds only for dimmers.</p>\n","event":[{"listen":"prerequest","script":{"id":"433cd5de-8058-433d-b7f4-94771bdddee7","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"d4801dd8-6122-433d-9394-dead4ba83f4f","type":"text/javascript","exec":[""]}}],"_postman_id":"f32fe30b-2853-4f9d-806e-79b8442752cd"},{"name":"PIR configuration","item":[{"name":"Get PIR configuration","id":"ca8df870-2b45-4afe-b9d0-74c97a2065d5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/pir_config","urlObject":{"path":["api","v1","pir_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"9a3a3cb2-7bfb-46c8-8133-478b3ebd618b","name":"Get PIR configuration","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/pir_config"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"716"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"pir_output\": 130,\n    \"pir_feedback\": null,\n    \"feedback_intensity\": 100,\n    \"thresholds\": {\n        \"twilight_to_night\": 50,\n        \"night_to_twilight\": 100,\n        \"day_to_twilight\": 150,\n        \"twilight_to_day\": 200\n    },\n    \"on_time\": 180,\n    \"off_time\": 600,\n    \"dim_value_night\": 29,\n    \"dim_value_twilight\": 74,\n    \"fade_in_time\": 30,\n    \"fade_out_time\": 50,\n    \"feedback_time\": 1,\n    \"dimmer\": [\n        {\n            \"value_night\": 50,\n            \"value_twilight\": 100,\n            \"value_day\": 0,\n            \"fade_in_time\": 0,\n            \"fade_out_time\": 0\n        },\n        {\n            \"value_night\": 29,\n            \"value_twilight\": 74,\n            \"value_day\": 0,\n            \"fade_in_time\": 30,\n            \"fade_out_time\": 50\n        },\n        {\n            \"value_night\": 50,\n            \"value_twilight\": 100,\n            \"value_day\": 0,\n            \"fade_in_time\": 0,\n            \"fade_out_time\": 0\n        },\n        {\n            \"value_night\": 50,\n            \"value_twilight\": 100,\n            \"value_day\": 0,\n            \"fade_in_time\": 0,\n            \"fade_out_time\": 0\n        }\n    ],\n    \"enabled\": true,\n    \"backoff_time\": 10,\n    \"light_lpf\": true\n}"}],"_postman_id":"ca8df870-2b45-4afe-b9d0-74c97a2065d5"},{"name":"Set PIR confiuration","id":"8dfefd6c-4476-4120-8588-a4b066fef6ce","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/pir_config","urlObject":{"path":["api","v1","pir_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"8dfefd6c-4476-4120-8588-a4b066fef6ce"}],"id":"837ca06e-358d-4374-8f66-a52d98280b8e","description":"<p>The section describes the API for configuring the actions performed by the PIR sensor.</p>\n<p>The format of GET and POST JSON is the same.</p>\n<p>The following table describes the format of JSON objects.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Default</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>pir_output</td>\n<td>uint or null</td>\n<td>null<br />0..255</td>\n<td>null</td>\n<td>The assignation of outputs to PIR. In case of null or 0 value no any output is assigned to the PIR. In case of assignation the field should be given as unsigned integer. There are two format of assignation notation, one in old scheme allow assign only one output to PIR, second in new bit mask format for multi output assignation.<br />In case of single output assignation the value should be in range 1..4 corresponds to output number.<br />In case of multi assignation the value should be bit mask with most significant bit set and four less significant bit set for dedicated outputs. So LSB bit 0 correspond to output 1, and LSB bit 3 correspond to output 4. MSB bit 7 should be set. After translation bit format to unsigned integer the value is in range: 128..143. This format can be used also to only one output assignation or no assignation, so is universal and recommended.</td>\n</tr>\n<tr>\n<td>pir_feedback</td>\n<td>null or enum as string</td>\n<td>null<br />\"white\"<br />\"red\"<br />\"green\"<br />\"blue\"</td>\n<td>null</td>\n<td>After violation of PIR blink in selected color.</td>\n</tr>\n<tr>\n<td>feedback_intensity</td>\n<td>uint</td>\n<td>0..100</td>\n<td>100</td>\n<td>Brightness of feedback blink.</td>\n</tr>\n<tr>\n<td>thresholds.twilight_to_night</td>\n<td>uint</td>\n<td>0..65535</td>\n<td>50</td>\n<td>The light intensity level causing change the light status, if light value is bellow this level the light state go to night.</td>\n</tr>\n<tr>\n<td>thresholds.night_to_twilight</td>\n<td>uint</td>\n<td>0..65535</td>\n<td>100</td>\n<td>The light intensity level causing change the light status, if light value is above this value and bellow day_to_twilight value then light state move to twilight.</td>\n</tr>\n<tr>\n<td>thresholds.day_to_twilight</td>\n<td>uint</td>\n<td>0..65535</td>\n<td>150</td>\n<td>The light intensity level causing change the light status, if light value is bellow this value and above night_to_twilight the then light state move to twilight.</td>\n</tr>\n<tr>\n<td>thresholds.twilight_to_day</td>\n<td>uint</td>\n<td>0..65535</td>\n<td>200</td>\n<td>The light intensity level causing change the light status, if light value is above this value then light state move to day.</td>\n</tr>\n<tr>\n<td>on_time</td>\n<td>uint</td>\n<td>0..65535</td>\n<td>180</td>\n<td>The dimmer enabled time after violation of PIR. Time is counting if no motion is detected.</td>\n</tr>\n<tr>\n<td>off_time</td>\n<td>uint</td>\n<td>0..65535</td>\n<td>600</td>\n<td>PIR function inhibit time. If button was pressed or any control api for dimmer was used then PIR actions which control the dimmers are blocked. Time start counting if no motion is detected.</td>\n</tr>\n<tr>\n<td>dim_value_night</td>\n<td>uint</td>\n<td>0..100</td>\n<td>50</td>\n<td>For backward compatibility set all dimmers values with same dim_value_night value.</td>\n</tr>\n<tr>\n<td>dim_value_twilight</td>\n<td>uint</td>\n<td>0..100</td>\n<td>100</td>\n<td>For backward compatibility set all dimmers values with same dim_value_twilight value.</td>\n</tr>\n<tr>\n<td>fade_in_time</td>\n<td>uint</td>\n<td>0..100</td>\n<td>0</td>\n<td>For backward compatibility set all dimmers values with same fade_in_time value.</td>\n</tr>\n<tr>\n<td>fade_out_time</td>\n<td>uint</td>\n<td>0..100</td>\n<td>0</td>\n<td>For backward compatibility set all dimers values with same fade_out_time value.</td>\n</tr>\n<tr>\n<td>feedback_time</td>\n<td>uint</td>\n<td>1..255</td>\n<td>1</td>\n<td>How long enable LED for feedback specified by pir_feedback.</td>\n</tr>\n<tr>\n<td>dimmer[i].value_night</td>\n<td>uint</td>\n<td>0..100</td>\n<td>50</td>\n<td>The dimmer value set in case of motion and light state night.</td>\n</tr>\n<tr>\n<td>dimmer[i].value_twilight</td>\n<td>uint</td>\n<td>0..100</td>\n<td>100</td>\n<td>The dimmer value set in case of motion and light state twilight.</td>\n</tr>\n<tr>\n<td>dimmer[i].value_day</td>\n<td>uint</td>\n<td>0..100</td>\n<td>0</td>\n<td>Not used.</td>\n</tr>\n<tr>\n<td>dimmer[i].fade_in_time</td>\n<td>uint</td>\n<td>0..100</td>\n<td>0</td>\n<td>How fast brightening the dimmers assigned to input. Unit is 100ms.</td>\n</tr>\n<tr>\n<td>dimmer[i].fade_out_time</td>\n<td>uint</td>\n<td>0..100</td>\n<td>0</td>\n<td>How fast darknet the dimmers assigned to input. Unit is 100ms.</td>\n</tr>\n<tr>\n<td>enabled</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>If true the PIR function is enabled.</td>\n</tr>\n<tr>\n<td>back_off_time</td>\n<td>uint</td>\n<td>0..600</td>\n<td>10</td>\n<td>Period of action triggered by PIR. The time starts counting if no motion is detected after time elapse the PIR fall action is triggered.</td>\n</tr>\n<tr>\n<td>light_lpf</td>\n<td>boot</td>\n<td></td>\n<td>false</td>\n<td>If true then light lowpass average filter is enable. This cause rejection of fast undesirable light changes my corrupted light measurements and go to wrong light status. Example dimmer cause illuminate of dingz.</td>\n</tr>\n</tbody>\n</table>\n</div><p>One mention is that PIR cannot control shade, so assignetion output to shade has no effect.</p>\n<p>The index i variable corresponds to absolute dimmer index.</p>\n","event":[{"listen":"prerequest","script":{"id":"2704fb19-d661-4e0c-8366-789177aa2214","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"f7744c3d-bcb8-4acc-b95c-5dff2a739c91","type":"text/javascript","exec":[""]}}],"_postman_id":"837ca06e-358d-4374-8f66-a52d98280b8e"},{"name":"Thermostat config","item":[{"name":"Thermostat config get","id":"acbc44b6-da92-4a27-9657-204b412be27b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/thermostat_config","urlObject":{"path":["api","v1","thermostat_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"33b2c655-89f7-419c-8778-0b34c3d1f0e5","name":"Thermostat config get","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/thermostat_config"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"113"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"active\": false,\n    \"output\": 0,\n    \"on\": false,\n    \"min_target_temp\": 17,\n    \"max_target_temp\": 31,\n    \"reverse\": false,\n    \"mode\": \"heating\"\n}"}],"_postman_id":"acbc44b6-da92-4a27-9657-204b412be27b"},{"name":"Thermostat config set","id":"c9bbe518-8001-4b3b-88ff-3fbffbb83150","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n\t\"active\": <true|false>,\r\n\t\"output\": <0..3>,\r\n\t\"min_temp\": <-100..99>,\r\n\t\"max_temp\": <-99..100>,\r\n\t\"reverse\": <true|false>\r\n\t\"enable\": <true|false>\r\n}","options":{"raw":{"language":"json"}}},"url":"{{ip}}/api/v1/thermostat_config","urlObject":{"path":["api","v1","thermostat_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"c9bbe518-8001-4b3b-88ff-3fbffbb83150"}],"id":"5682f69d-5cc9-4c1e-9ef5-cdc153a593f3","description":"<p>The API in this section describes how to configure the thermostat.</p>\n<p>The JSON object format is described in the table below:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Default</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>active</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>If true activate thermostat function on selected output. The thermostat activation cause that output cannot not be used by dimmer, shade or input (for output 1).</td>\n</tr>\n<tr>\n<td>output</td>\n<td>uint</td>\n<td>0..3</td>\n<td>0</td>\n<td>The index of output on what the thermostat function is to be active. Mention about this field is that the index start from 0 and not multi outputs can be assigned to thermostat.</td>\n</tr>\n<tr>\n<td>on</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>If the output controlled by thermostat is turn on. This field is read only.</td>\n</tr>\n<tr>\n<td>min_target_temp</td>\n<td>int</td>\n<td>-55..125</td>\n<td>17</td>\n<td>Specify the minimum value of temperature which can be set by control API. This value not set target temperature but range.</td>\n</tr>\n<tr>\n<td>max_target_temp</td>\n<td>int</td>\n<td>-55..125</td>\n<td>31</td>\n<td>Specify the maximum value of temperature which can be set by control API. This value not set target temperature but range.</td>\n</tr>\n<tr>\n<td>reverse</td>\n<td>boot</td>\n<td></td>\n<td>false</td>\n<td>Allow to reverse output polarity.</td>\n</tr>\n<tr>\n<td>mode</td>\n<td>enum as string</td>\n<td>\"heating\"<br />\"cooling\"</td>\n<td>\"heating\"</td>\n<td>Determines the working type of thermostat (the device type controlled by output).</td>\n</tr>\n</tbody>\n</table>\n</div>","event":[{"listen":"prerequest","script":{"id":"e0f8c3f7-0bde-4f7d-b035-d707cae6f044","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"08ebca22-d6d7-438b-868f-b04375b9e9aa","type":"text/javascript","exec":[""]}}],"_postman_id":"5682f69d-5cc9-4c1e-9ef5-cdc153a593f3"},{"name":"LED config","item":[{"name":"Get LED config","id":"dad7f766-1a0c-48a7-9b86-17bf272be703","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/led_config","urlObject":{"path":["api","v1","led_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"5b4afd3f-2aa0-407c-8a82-27fd53da27d2","name":"Get LED config","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/led_config"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"53"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"state\": true,\n    \"local_feedback\": true,\n    \"off_period\": 900\n}"}],"_postman_id":"dad7f766-1a0c-48a7-9b86-17bf272be703"},{"name":"Set LED config","id":"f1b66063-52bf-473a-bd1e-0d84527140dc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/led_config","urlObject":{"path":["api","v1","led_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"f1b66063-52bf-473a-bd1e-0d84527140dc"}],"id":"7c6d8c2c-292a-41ee-9a4c-d26f3ce7b119","description":"<p>This API mainly controls the global LED feedback for buttons, pir, input press / violation.</p>\n<p>The JSON object is described in the table below:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Default</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>state</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>LED feedback for actions sent to myStrom cloud.</td>\n</tr>\n<tr>\n<td>local_feedback</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>LED feedback for actions URLs executed locally.</td>\n</tr>\n<tr>\n<td>off_period</td>\n<td>uint</td>\n<td>0..x0FFFFFFFF</td>\n<td>900</td>\n<td>How often disable LED in order to measure light intensity.</td>\n</tr>\n</tbody>\n</table>\n</div>","event":[{"listen":"prerequest","script":{"id":"597548c0-2364-49c0-b87b-d230a93505fb","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"198849c3-56c6-43e6-857f-c0ee36f0755f","type":"text/javascript","exec":[""]}}],"_postman_id":"7c6d8c2c-292a-41ee-9a4c-d26f3ce7b119"},{"name":"Dimmer config","item":[{"name":"Get dimmer config","id":"4147cca1-5782-41ce-bc7d-c4a09bb8549b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/dimmer_config","urlObject":{"path":["api","v1","dimmer_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"b695f892-d9e8-4e2b-a5f9-e548f8bde10c","name":"Get dimmer config","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/dimmer_config"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"301"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"dimmers\": [\n        {\n            \"output\": \"halogen\",\n            \"name\": \"\",\n            \"feedback\": null,\n            \"feedback_intensity\": 100\n        },\n        {\n            \"output\": \"halogen\",\n            \"name\": \"\",\n            \"feedback\": null,\n            \"feedback_intensity\": 100\n        },\n        {\n            \"output\": \"halogen\",\n            \"name\": \"\",\n            \"feedback\": null,\n            \"feedback_intensity\": 100\n        },\n        {\n            \"output\": \"halogen\",\n            \"name\": \"\",\n            \"feedback\": null,\n            \"feedback_intensity\": 100\n        }\n    ]\n}"}],"_postman_id":"4147cca1-5782-41ce-bc7d-c4a09bb8549b"},{"name":"Set dimmer config","id":"8ca84050-9cf9-4788-b07e-8607abbdbd8e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/dimmer_config","urlObject":{"path":["api","v1","dimmer_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"8ca84050-9cf9-4788-b07e-8607abbdbd8e"}],"id":"e8dfc68f-6f84-46e0-9f6a-76b14dd369ec","description":"<p>The main use of this API is to connect an output load type to a dimmer. It is also possible to define the feedback colors for enabled dimmers.</p>\n<p>The JSON object returned and sent is described in the table below:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Default</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>dimmers[i].output</td>\n<td>enum as string</td>\n<td>\"halogen\"<br />\"incandescent\"<br />\"led\"<br />\"linear\"<br />\"ohmic\"<br />\"pulse\"<br />\"not_connected\"</td>\n<td>\"halogen\"</td>\n<td>Define light source type connected to output.</td>\n</tr>\n<tr>\n<td>dimmers[i].name</td>\n<td>string</td>\n<td>0..32</td>\n<td>\"\"</td>\n<td>Name of dimmer.</td>\n</tr>\n<tr>\n<td>dimmers[i].feedback</td>\n<td>null or enum as string</td>\n<td>null<br />\"white\"<br />\"red\"<br />\"green\"<br />\"blue\"</td>\n<td>null</td>\n<td>Signalize by enable LED with specified color when the dimmer is turn on. In case of multi dimmers set with feedback color enabled the color will be set to value get from first turned on dimmer.</td>\n</tr>\n<tr>\n<td>dimmers[i].feedback_intensity</td>\n<td>uint</td>\n<td>0..100</td>\n<td>100</td>\n<td>Brightness of feedback color.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Where <code>i</code> is dimmer index and is in range 0..3.</p>\n","event":[{"listen":"prerequest","script":{"id":"cc5a4db1-6460-4504-bac1-17756d5821bc","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"90d4f0d6-eaec-4e92-9300-b813b89fe9cc","type":"text/javascript","exec":[""]}}],"_postman_id":"e8dfc68f-6f84-46e0-9f6a-76b14dd369ec"},{"name":"Blind config","item":[{"name":"Get blind config","id":"262fa5f1-0397-4066-a8e5-663dd9bd20e7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/blind_config","urlObject":{"path":["api","v1","blind_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"8d1c3329-ca06-4504-944a-6d507d2bc544","name":"Get blind config","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/blind_config"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"398"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"blinds\": [\n        {\n            \"auto_calibration\": true,\n            \"state\": \"Initialised\",\n            \"invert_direction\": false,\n            \"lamella_time\": 1.8,\n            \"shade_up_time\": 180,\n            \"shade_down_time\": 180,\n            \"type\": \"lamella_90\",\n            \"min_value\": 0,\n            \"max_value\": 100,\n            \"name\": \"\"\n        },\n        {\n            \"auto_calibration\": true,\n            \"state\": \"Initialised\",\n            \"invert_direction\": false,\n            \"lamella_time\": 1.8,\n            \"shade_up_time\": 10,\n            \"shade_down_time\": 10,\n            \"type\": \"lamella_90\",\n            \"min_value\": 0,\n            \"max_value\": 100,\n            \"name\": \"\"\n        }\n    ]\n}"}],"_postman_id":"262fa5f1-0397-4066-a8e5-663dd9bd20e7"},{"name":"Set blind config","id":"3b9d6808-43b1-4032-8c4c-c6451a433b34","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/blind_config","urlObject":{"path":["api","v1","blind_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"3b9d6808-43b1-4032-8c4c-c6451a433b34"}],"id":"1646cd72-4769-4188-bef4-f12bd42d47b5","description":"<p>Allows you to save and read blinds configuration.</p>\n<p>The table below describes the JSON object format that is returned when reading and should be sent as you type.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Default</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>blinds[i].auto_calibration</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>If true the auto calibration of blind is enabled. Start auto calibration process cause procedure which measure shade up/down time.</td>\n</tr>\n<tr>\n<td>blinds[i].state</td>\n<td>enum as string</td>\n<td>\"Initialised\"<br />\"Not initialised\"<br />\"Initialising\"<br />\"Unknown\"</td>\n<td>\"Not initialised\"</td>\n<td>Corresponds to blind calibration status, if calibration is done and up/down time is known then this parameter is set to \"Initialised\". This parameter is read only.</td>\n</tr>\n<tr>\n<td>blinds[i].invert_direction</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>Inverts motor control polarity. Move blind with this parameter enabled cause set outputs in opposite polarity.</td>\n</tr>\n<tr>\n<td>blinds[i].lamella_time</td>\n<td>real</td>\n<td></td>\n<td>1.8</td>\n<td>Determines lamella moving time. This parameter should be set before start auto calibration procedure and determine complete time from open to close lamella.</td>\n</tr>\n<tr>\n<td>blinds[i].shade_up_time</td>\n<td>uint</td>\n<td></td>\n<td>180</td>\n<td>Defines how long the engine must be turned on in order for the fully close blind to open completely. This time should not include the lamella time.</td>\n</tr>\n<tr>\n<td>blinds[i].shade_down_time</td>\n<td>uint</td>\n<td></td>\n<td>180</td>\n<td>Defines how long the engine must be turned on in order for the fully open blind to close completely. This time should not include the lamella time.</td>\n</tr>\n<tr>\n<td>blinds[i].type</td>\n<td>enum as string</td>\n<td>\"lamella_90\"<br />\"canvas\"</td>\n<td>\"lamella_90\"</td>\n<td>When using a canvas, the lamella time does not matter.</td>\n</tr>\n<tr>\n<td>blinds[i].min_value</td>\n<td>uint</td>\n<td>0..99</td>\n<td>0</td>\n<td>How much can the blind be closed.</td>\n</tr>\n<tr>\n<td>blinds[i].max_value</td>\n<td>uint</td>\n<td>1.100</td>\n<td>100</td>\n<td>How much can the blind be opened.</td>\n</tr>\n<tr>\n<td>blinds[i].name</td>\n<td>string</td>\n<td>0..32</td>\n<td>\"\"</td>\n<td>Name of blind, helpful to the user.</td>\n</tr>\n</tbody>\n</table>\n</div>","event":[{"listen":"prerequest","script":{"id":"ce8c463d-4ab9-4f93-818c-47e8d9419952","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"91bb2965-9997-4bc6-8059-877c581ae761","type":"text/javascript","exec":[""]}}],"_postman_id":"1646cd72-4769-4188-bef4-f12bd42d47b5"},{"name":"Services config","item":[{"name":"Get services config","id":"dbc512d7-b7d5-48e6-adcb-7ea8663e2379","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/services_config","urlObject":{"path":["api","v1","services_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"894fe127-6197-4fc5-aca2-d2ffcdb18050","name":"Get services config","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/services_config"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"162"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"mystrom\": true,\n    \"homekit\": false,\n    \"rest_api\": true,\n    \"panel\": true,\n    \"aws\": true,\n    \"discovery\": true,\n    \"aws_notifies\": false,\n    \"ssdp\": false,\n    \"mdns\": false,\n    \"homekit_configured\": true\n}"}],"_postman_id":"dbc512d7-b7d5-48e6-adcb-7ea8663e2379"},{"name":"Set services config","id":"d7890776-300c-4810-823f-cd54f61a1840","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/services_config","urlObject":{"path":["api","v1","services_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"d7890776-300c-4810-823f-cd54f61a1840"}],"id":"48cf4c3c-0178-4200-b962-da898595084b","description":"<p>It allows you to manage services running on the device.</p>\n<p>The table below describes the JSON object format that is returned when reading and should be sent when writing.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Default</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>mystrom</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>Whether the connection to the myStrom server should be enabled. Disabling this option will make it impossible to add and control dingz by the mobile application myStrom.</td>\n</tr>\n<tr>\n<td>homekit</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>This option can only be true if homekit configured is true and determines whether the HomeKit service is running. This is not supported at this time.</td>\n</tr>\n<tr>\n<td>rest_api</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>If the control and status HTTP API is enabled.</td>\n</tr>\n<tr>\n<td>panel</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>If configuration HTTP API is enabled.</td>\n</tr>\n<tr>\n<td>aws</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>If AWS cloud service should be enabled.</td>\n</tr>\n<tr>\n<td>discovery</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>Disabling this option will prevent applications from finding your device on the network.</td>\n</tr>\n<tr>\n<td>aws_notifies</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>Whether events from button presses, movement, entry should be sent to the AWS server.</td>\n</tr>\n<tr>\n<td>ssdp</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>Enables finding dingz via SSDP protocol.</td>\n</tr>\n<tr>\n<td>mdns</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>Enables finding dingz using the mDNS protocol.</td>\n</tr>\n<tr>\n<td>homekit_configured</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>Determines if HomeKit has been preconfigured.</td>\n</tr>\n</tbody>\n</table>\n</div>","event":[{"listen":"prerequest","script":{"id":"8f0b5cd9-ca56-4862-b13d-7afb958b091a","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"e35408fb-a08f-473d-8d99-3b639553af49","type":"text/javascript","exec":[""]}}],"_postman_id":"48cf4c3c-0178-4200-b962-da898595084b"},{"name":"System config","item":[{"name":"Get system config","id":"e0f921ff-eba4-48e0-8e5b-2382e793d53f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/system_config","urlObject":{"path":["api","v1","system_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"b6e46934-b024-49aa-b041-2b3d63397d3c","name":"Get system config","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/system_config"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Pragma","value":"no-cache"},{"key":"Cache-Control","value":"no-store, no-cache"},{"key":"Content-Type","value":"application/json"},{"key":"Content-Length","value":"247"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"allow_reset\": true,\n    \"allow_wps\": true,\n    \"allow_reboot\": true,\n    \"broadcast_period\": 5,\n    \"origin\": true,\n    \"token\": \"\",\n    \"upgrade_blink\": true,\n    \"reboot_blink\": false,\n    \"dingz_name\": \"dingz\",\n    \"room_name\": \"\",\n    \"temp_offset\": 0,\n    \"time\": \"2020-09-21 14:15:15\",\n    \"system_status\": \"OK\"\n}"}],"_postman_id":"e0f921ff-eba4-48e0-8e5b-2382e793d53f"},{"name":"Set system config","id":"945cd922-ef82-4714-b83e-b10684db310a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/system_config","urlObject":{"path":["api","v1","system_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"945cd922-ef82-4714-b83e-b10684db310a"}],"id":"34045e81-3ab6-4cd3-af28-7a13483242da","description":"<p>Configures the possible actions with buttons. HTTP server access settings. LED flashing. Temperature measurement, names and temperautre shift.</p>\n<p>The table below describes the fields of the returned JSON object, this is what we use to set:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Default</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>allow_reset</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>If the factory reset should be possible with the buttons.</td>\n</tr>\n<tr>\n<td>allow_wps</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>If it should be possible to enable WPS from the buttons.</td>\n</tr>\n<tr>\n<td>allow_reboot</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>If the restart should be possible from the buttons.</td>\n</tr>\n<tr>\n<td>broadcast_period</td>\n<td>uint</td>\n<td>5..65535</td>\n<td>5</td>\n<td>How often to report a device to the network. Less broadcasting period causes the applications to find the device slower. Unit is second.</td>\n</tr>\n<tr>\n<td>origin</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>Whether the Origin HTTP header should be checked in case of a mismatch, the query rejected.</td>\n</tr>\n<tr>\n<td>token</td>\n<td>string</td>\n<td>0..256</td>\n<td>\"\"</td>\n<td>Sets a Token for HTTP requests. If the correct token is not provided, the query will be rejected.</td>\n</tr>\n<tr>\n<td>upgrade_blink</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>Should the LED flash pink while updating the firmware.</td>\n</tr>\n<tr>\n<td>reboot_blink</td>\n<td>bool</td>\n<td></td>\n<td>false</td>\n<td>Should the LED flash blue after reboot.</td>\n</tr>\n<tr>\n<td>dingz_name</td>\n<td>string</td>\n<td>0..32</td>\n<td>\"\"</td>\n<td>Device name.</td>\n</tr>\n<tr>\n<td>room_name</td>\n<td>string</td>\n<td>0..32</td>\n<td>\"\"</td>\n<td>Name of the room in which the device is located.</td>\n</tr>\n<tr>\n<td>temp_offset</td>\n<td>int</td>\n<td>-10..10</td>\n<td>0</td>\n<td>Offset of the temperature measured by the device. Form of compensation.</td>\n</tr>\n<tr>\n<td>time</td>\n<td>string</td>\n<td></td>\n<td>\"YYYY-MM-DD hh:mm:ss\"</td>\n<td>This field is read-only and returns the date and time from the device.</td>\n</tr>\n<tr>\n<td>system_status</td>\n<td>string</td>\n<td>\"OK\"<br />\"Puck not responding\"<br />\"Puck overload\"<br />\"Puck FETs over temperature\"</td>\n<td>\"OK\"</td>\n<td>Specifies the puck status. Is there communication with it, are the outputs not overloaded, are the temperature not exceeded.</td>\n</tr>\n<tr>\n<td>fet_offset</td>\n<td>int</td>\n<td>-100..100</td>\n<td>0</td>\n<td>Read only. Temperature offset measured at the output transistors.</td>\n</tr>\n<tr>\n<td>cpu_offset</td>\n<td>int</td>\n<td>-100..100</td>\n<td>0</td>\n<td>Read only. Temperature offset measured on the puck CPU.</td>\n</tr>\n</tbody>\n</table>\n</div>","event":[{"listen":"prerequest","script":{"id":"83e1f4ba-6fd4-4ae6-b5a3-81a85a2c22db","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"d3c911da-3bc6-4cf9-9586-ed6e944c9bf9","type":"text/javascript","exec":[""]}}],"_postman_id":"34045e81-3ab6-4cd3-af28-7a13483242da"},{"name":"Settings","item":[{"name":"Enable/Disable REST API","id":"37c293a6-037b-4f01-916f-0b73f5d6c463","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/rest?enable=true","description":"<p>Disables or enables the rest api. Does not return anything.</p>\n<p>By disableing the rest api one also disables any kind of interaction with the device besides the standalone mode. Needs to be reset after usage to get the device back in working condition.</p>\n<p>Also disables the webui.</p>\n","urlObject":{"path":["rest"],"host":["{{ip}}"],"query":[{"key":"enable","value":"true"}],"variable":[]}},"response":[],"_postman_id":"37c293a6-037b-4f01-916f-0b73f5d6c463"},{"name":"Enable/Disable Web UI","id":"159f0a92-a247-49e5-8c1b-4bd52be3fc82","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/panel?enable=true","description":"<p>Enables or disables the Web interface. Does not return anything</p>\n","urlObject":{"path":["panel"],"host":["{{ip}}"],"query":[{"key":"enable","value":"true"}],"variable":[]}},"response":[],"_postman_id":"159f0a92-a247-49e5-8c1b-4bd52be3fc82"},{"name":"Get settings information","id":"ae25c16f-b26a-46fc-8c4d-74d35f7c56a8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/settings","description":"<p>Returns basic information about API access. A description of the returned object can be found in the <em>Set settings information</em> request.</p>\n","urlObject":{"path":["api","v1","settings"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"ae25c16f-b26a-46fc-8c4d-74d35f7c56a8"},{"name":"Set settings information","id":"6d2ea780-fedb-4dbf-88ee-dc1dc470708b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/settings","description":"<p>Using a JSON object with the fields defined below some dingz settings are enabled or not. The fields included in this JSON object are:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Default</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>rest</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>Setting this parameter to false will disable execution of device control requests. This parameter corresponds to a service config parameter called rest_api.</td>\n</tr>\n<tr>\n<td>panel</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>Setting this parameter to false will disable the use of WebUI. This parameter corresponds to a service config parameter called panel.</td>\n</tr>\n<tr>\n<td>referer</td>\n<td>bool</td>\n<td></td>\n<td>true</td>\n<td>It defines whether the origin of the request is checked, this parameter should be set to true for better security. This parameter corresponds to a system config parameter called origin.</td>\n</tr>\n<tr>\n<td>token</td>\n<td>string</td>\n<td>0..256</td>\n<td>\"\"</td>\n<td>It defines whether the origin of the request is checked, this parameter should be set to true for better security. This parameter corresponds to a system config parameter called token. One mention is that this parameter is not returned in get settings response.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","settings"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"6d2ea780-fedb-4dbf-88ee-dc1dc470708b"}],"id":"c7d109aa-5439-4c6a-ad97-b73fac1d3d8d","description":"<p>Changes settings saved on your dingz.</p>\n","event":[{"listen":"prerequest","script":{"id":"98bb82ef-26e0-4bf2-821b-627fb542d510","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"70d155a3-a344-4a94-b416-670e3881ead4","type":"text/javascript","exec":[""]}}],"_postman_id":"c7d109aa-5439-4c6a-ad97-b73fac1d3d8d"},{"name":"Save default config","id":"a828ba49-53c1-418f-903d-dba0b0b8542b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/save_default_config","description":"<p>It allows you to save the current configuration to the internal memory of the device as a default configuration after resetting its settings using buttons.</p>\n<p>This API does not require any parameters. The success of the operation is determined by the HTTP response code. 200 OK if successful.</p>\n","urlObject":{"path":["api","v1","save_default_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"a828ba49-53c1-418f-903d-dba0b0b8542b"},{"name":"Restore default config","id":"117c9241-4f15-4e0e-8c7a-32e3f0fa393e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/restore_default_config","description":"<p>It allows you to restore the previously saved configuration by \"save the default configuration\".</p>\n<p>The success of the operation can be determined by the response code to the HTTP request.</p>\n","urlObject":{"path":["api","v1","restore_default_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"117c9241-4f15-4e0e-8c7a-32e3f0fa393e"},{"name":"Dump config","id":"0f204903-ca05-449b-93fb-749999ed33fd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/dump_config","description":"<p>It allows you to download a configuration file. This file can be used to restore configuration.</p>\n","urlObject":{"path":["api","v1","dump_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"0f204903-ca05-449b-93fb-749999ed33fd"},{"name":"Restore config","id":"ab8950a3-6633-4bec-bfb7-8f071ca51e63","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/restore_config","description":"<p>Allows you to restore the configuration from the file downloaded by \"Dump config\".</p>\n<p>Returns HTTP 200 OK if the restore was successful.</p>\n","urlObject":{"path":["restore_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"ab8950a3-6633-4bec-bfb7-8f071ca51e63"}],"id":"b86b9150-4c63-4cff-a561-b229e4173e5a","description":"<p>This section describes the API that is used to configure dingz. This part of the API is most commonly used by WebUI, which is an easy way to apply a configuration. There is no need to use this API when executing commands or reading values.</p>\n<p>Each API request described in this section returns JSON as the result of the GET method. After changing the required values, the same object can be put back into the body of the HTTP request using the POST method. The path to the specific configuration module is the same for POST and GET methods.</p>\n","event":[{"listen":"prerequest","script":{"id":"8f108531-9eb8-4cb8-88a4-a3397daa1bcb","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"916b34d8-6dc8-43f4-a958-750b63e4dcf8","type":"text/javascript","exec":[""]}}],"_postman_id":"b86b9150-4c63-4cff-a561-b229e4173e5a"},{"name":"Firmware upgrade","item":[{"name":"Local upgrade","id":"f5032fc1-983d-4eb6-8584-e45b12d8d65f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"file","value":"@[FILE ON DISK]","type":"text"}]},"url":"{{ip}}/load","description":"<p>Upgrade the firmware of the device to the firmware file provided. </p>\n<p>Make sure that the firmware (.bin file) corresponds to your device type before uploading.</p>\n<p>Returns 200 OK if the request was successful.</p>\n<p>The firmware file should be send as multipart/form-data.</p>\n","urlObject":{"path":["load"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"f5032fc1-983d-4eb6-8584-e45b12d8d65f"},{"name":"Remote upgrade","id":"84a0c2d5-381e-4593-9ef4-a7e7a01cfbb1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/download?path={{path}}&sum={{sum}}","description":"<p>Allows to upgrade firmware of the front downloading it from remote serwer.</p>\n<p>Query parameters are described bellow:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>path</td>\n<td>string</td>\n<td>1..127</td>\n<td>URL to firmware image. Only HTTP protocol is supported.</td>\n</tr>\n<tr>\n<td>sum</td>\n<td>sting</td>\n<td>20..20</td>\n<td>SHA1 sum of remote firmware file.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["download"],"host":["{{ip}}"],"query":[{"description":{"content":"<p>URL to firmware image. Only HTTP protocol is supported.</p>\n","type":"text/plain"},"key":"path","value":"{{path}}"},{"description":{"content":"<p>SHA1 sum of remote firmware file.</p>\n","type":"text/plain"},"key":"sum","value":"{{sum}}"}],"variable":[]}},"response":[],"_postman_id":"84a0c2d5-381e-4593-9ef4-a7e7a01cfbb1"}],"id":"ba112f4f-74f7-403d-9fb7-ff307fdf8995","description":"<p>Allows upgrade front firmware.</p>\n","event":[{"listen":"prerequest","script":{"id":"a0130aab-bca5-4ebb-a521-4c4124d7b9cf","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"e7eb10bf-c7da-422a-9c09-e27466e1397c","type":"text/javascript","exec":[""]}}],"_postman_id":"ba112f4f-74f7-403d-9fb7-ff307fdf8995"},{"name":"Buttons","item":[{"name":"Simulate press","id":"c21a0dc5-02de-41c3-a9aa-badde74601ff","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/button/:btn_idx/:btn_action","description":"<p>It allows you to simulate the pressing of a button.</p>\n<p>The following table describes the path parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Name</th>\n<th>Type</th>\n<th>Range</th>\n<th>Remarks</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>btn_idx</td>\n<td>uint</td>\n<td>1..5</td>\n<td>Index of button, index 5 is corresponds to input.</td>\n</tr>\n<tr>\n<td>btn_action</td>\n<td>enum</td>\n<td>single-press<br />double-press<br />long-press<br />press<br />release</td>\n<td>Kind of button/input pattern to simulate.</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["api","v1","button",":btn_idx",":btn_action"],"host":["{{ip}}"],"query":[],"variable":[{"description":{"content":"<p>Index of button, index 5 is corresponds to input [1..5].</p>\n","type":"text/plain"},"type":"string","value":"{{btn_idx}}","key":"btn_idx"},{"description":{"content":"<p>Kind of button/input pattern to simulate [single-press|double-press|long-press|press|release].</p>\n","type":"text/plain"},"type":"string","value":"{{btn_action}}","key":"btn_action"}]}},"response":[],"_postman_id":"c21a0dc5-02de-41c3-a9aa-badde74601ff"}],"id":"7235ded4-a2b8-4588-9f47-68cd02bfea6b","_postman_id":"7235ded4-a2b8-4588-9f47-68cd02bfea6b","description":""},{"name":"Other API","item":[{"name":"Was device rebooted","id":"f3808f4e-f250-4cbc-b4ec-e83f0e3bf087","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/rebooted","description":"<p>Allows to determine if device was rebooted. Executing this request clears the device's reset state.</p>\n","urlObject":{"path":["api","v1","rebooted"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"f3808f4e-f250-4cbc-b4ec-e83f0e3bf087"},{"name":"Login","id":"b474a81a-d11a-4536-9f2e-085ff4fb79e1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/login","description":"<p>If WebUI password protection is enabled this API allows to obtain authentication token.</p>\n","urlObject":{"path":["api","v1","login"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"b474a81a-d11a-4536-9f2e-085ff4fb79e1"},{"name":"Logout","id":"4b398fea-8710-4d3a-9956-74ca4774540d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/logout","description":"<p>If WebUI password is enabled and login API was used to obtain authentication token this API allow to logout.</p>\n","urlObject":{"path":["api","v1","logout"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"4b398fea-8710-4d3a-9956-74ca4774540d"}],"id":"bb2f2892-5e36-43e1-afaf-6338e153cd9e","_postman_id":"bb2f2892-5e36-43e1-afaf-6338e153cd9e","description":""}],"event":[{"listen":"prerequest","script":{"id":"2fe0e012-ad7b-4b5a-850e-664c677204ca","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"57463d10-cd1f-435c-b9ae-f72d11c5e94c","type":"text/javascript","exec":[""]}}]}