{"info":{"_postman_id":"8ba5cfba-35ab-4126-91e5-2c6df89d0c85","name":"dingz","description":"<html><head></head><body><h1 id=\"rest-api\">REST API</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>For some calls you will get <code>success</code> back. This should almost always be <code>true</code>. If it is <code>false</code> however, it means that your dingz has experienced an internal error.</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 a dingz in your network, you have to listen on udp port 7979. Each dingz device will broadcast a message. The first 6 bytes contain the mac address of the device and the following two bytes are a number that corresponds to the device type. Currently all dingz devices have the type number \"108\".</p>\n<h2 id=\"security\">Security</h2>\n<p>The interface is transparent and has no authentication. If someone has access to your local network, <strong>they will be able to control your dingz</strong>.\nPlease 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":"REST API","slug":"rest-api"}],"owner":"11123877","collectionId":"8ba5cfba-35ab-4126-91e5-2c6df89d0c85","publishedId":"Szf55A3X","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"publishDate":"2020-04-18T10:49:19.000Z"},"item":[{"name":"dingz Information ","item":[{"name":"Get Puck version number","id":"2e1e5a76-8843-4732-a6de-011667600783","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":"4cf88963-ca24-4de6-9286-03c8fca6a232","name":"Get Version Number","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":"64"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"fw\": {\n        \"success\": true,\n        \"version\": \"0.6.1\"\n    },\n    \"hw\": {\n        \"success\": false\n    }\n}"}],"_postman_id":"2e1e5a76-8843-4732-a6de-011667600783"},{"name":"General information","id":"e747443e-bebc-44ca-9aa3-9795522abcd5","protocolProfileBehavior":{"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>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","urlObject":{"path":["api","v1","info"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"773b59d8-7f94-4443-85d2-8d51324ab8d6","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":"e747443e-bebc-44ca-9aa3-9795522abcd5"},{"name":"Get (room) temperature","id":"343b0c4b-15cd-42c7-ad5c-5b5ba3ad9d7d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/temp","description":"<p>Returns a JSON object with two fields:</p>\n<ul>\n<li><code>success</code>: Wether or not the request succeeded</li>\n<li><code>temperature</code>: The current (room) temperature</li>\n</ul>\n","urlObject":{"path":["api","v1","temp"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"2d4df259-2348-4145-a30c-9ca87e37e344","name":"Get (room) 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":"49"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"temperature\": 19.799999237060547\n}"}],"_postman_id":"343b0c4b-15cd-42c7-ad5c-5b5ba3ad9d7d"},{"name":"Get motion sensor value","id":"5f9b781e-0bff-4447-b646-90f687cb61c4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/motion","description":"<p>Returns JSON object with 2 fiels:</p>\n<ul>\n<li><code>success</code>: Wether or not the request has succeeded</li>\n<li><code>motion</code>: Wether or noth the motion sensor has recognized motion (for dingz one it will always be <code>false</code>)</li>\n</ul>\n","urlObject":{"path":["api","v1","motion"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"d09d8a83-6a52-42ec-a387-dc2148008785","name":"Get motion sensor value","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":"5f9b781e-0bff-4447-b646-90f687cb61c4"},{"name":"Get device specific information","id":"7f17a37b-f7f7-442c-ab54-876dd461cdf7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/device/","description":"<p>Returns a json object which has one field namely the mac address of the dingz device without any delimiters. In this field there is the following information:</p>\n<ul>\n<li><code>type</code>: Device type</li>\n<li><code>battery</code>: Wether or not the devices is using batteries</li>\n<li><code>reachable</code>: Wether or not the device is reachable from the dingz cloud.</li>\n<li><code>meshroot</code>: Wether or not the dingz device is part of a mesh</li>\n<li><code>fw_version</code>: The current firmware version of the front</li>\n<li><code>fw_version_puck</code>: The current firmware version of the circular back</li>\n<li><code>bl_version_puck</code>: The current bootloader version of the circular back</li>\n<li><code>dip_config</code>: Value corresponding to dip switch configuration of puck</li>\n<li><code>has_pir</code>: Wether or not the device has a pir</li>\n<li><code>hk_activation_code</code>: The homekit activation code</li>\n</ul>\n","urlObject":{"path":["api","v1","device",""],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"2ad2a3b2-0d5a-4a6c-9d3f-59442d483fb4","name":"Get device specific information","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/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":"222"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"840D8E030BF0\": {\n        \"type\": \"dingz\",\n        \"battery\": false,\n        \"reachable\": true,\n        \"meshroot\": true,\n        \"fw_version\": \"3.14.36\",\n        \"fw_version_puck\": \"0.6.1\",\n        \"bl_version_puck\": \"0.0.0\",\n        \"dip_config\": 3,\n        \"has_pir\": false,\n        \"hk_activation_code\": \"443-85-511\"\n    }\n}"}],"_postman_id":"7f17a37b-f7f7-442c-ab54-876dd461cdf7"},{"name":"Get log","id":"3736951b-48b0-4d25-a2dc-e991db87eeb6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/log","description":"<p>Gets a log of everything that has happened. Returned as a raw string.</p>\n","urlObject":{"path":["log"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"9deae169-c782-4197-beb2-a8bdbca13608","name":"Get log","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/log"},"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":"1174"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"\r\nTIMESTAMP\tMODULE\tLEVEL\tCODE\tVALUE\r\n5C1276D4\t1\t4\t19\r\n5C1276D4\t1\t4\t18\t3\r\n5C1276D4\t1\t4\t18\t2\r\n5C1276D4\t1\t4\t18\t13\r\n5C1276DB\t1\t3\t11\r\n5C1276DB\t1\t4\t8\r\n5C1276DB\t1\t4\t18\t3\r\n5C1276DB\t1\t4\t18\t14\r\n5C1276DB\t1\t3\t15\r\n5C1276DB\t1\t4\t28\r\n5C1276DB\t1\t4\t18\t2\r\n5C1276DB\t1\t4\t10\r\n5C127753\t1\t4\t18\t11\r\n5C127754\t1\t3\t5\r\n5C127754\t1\t3\t7\r\n5C127754\t1\t4\t18\t3\r\n5C127754\t1\t4\t18\t2\r\n5C127754\t1\t4\t18\t13\r\n5C127812\t1\t4\t18\t15\r\n5C12781B\t1\t4\t18\t17\r\n5C1278B6\t1\t3\t11\r\n5C1278B6\t1\t4\t8\r\n5C1278B6\t1\t4\t18\t3\r\n5C1278B6\t1\t4\t18\t16\r\n5C1278B6\t1\t4\t18\t14\r\n5C1278B6\t1\t3\t15\r\n5C1278B6\t1\t4\t28\r\n5C1278B6\t1\t4\t18\t2\r\n5C1278B6\t1\t4\t10\r\n5C1278C9\t1\t4\t18\t5\r\n5C1278CA\t1\t4\t18\t9\r\n5C1278CA\t1\t4\t16\r\n5C1278CB\t1\t4\t11\r\n5C1278CB\t1\t4\t3\r\n5C1278CB\t1\t4\t18\t3\r\n5C1278CB\t1\t3\t13\r\n5C1278CB\t1\t4\t26\r\n5C1278CB\t1\t4\t18\t2\r\n5C1278CC\t1\t4\t18\t4\r\n5C1278CC\t1\t4\t18\t7\r\n5C1278CC\t1\t4\t12\r\n5C1278CD\t1\t4\t18\t19\r\n5C1278CD\t1\t4\t14\r\n5C1278CD\t1\t4\t1\r\n5C1278CD\t2\t4\t34\r\n5C1278E2\t1\t4\t18\t19\r\n5C1278E5\t2\t4\t27\r\n5C1278E5\t2\t4\t28\r\n5C1278E5\t2\t4\t30\r\n5C1278E5\t2\t4\t31\r\n5C1278E6\t2\t4\t32\r\n5C1278E6\t2\t4\t22\r\n5C1278E6\t2\t4\t23\r\n5C1278E6\t2\t4\t24\r\n5C1278E6\t2\t4\t5\r\n5C1278E6\t2\t4\t2\t30\r\n5C1278E6\t2\t4\t1\t60\r\n5C1278E7\t2\t4\t4\r\n5C127904\t2\t4\t4\r\n5C127922\t2\t4\t24\r\n5C127922\t2\t4\t7\r\n5C127922\t2\t4\t4\r\n5C127940\t2\t4\t4\r\n5C12795E\t2\t4\t4\r\n"}],"_postman_id":"3736951b-48b0-4d25-a2dc-e991db87eeb6"}],"id":"f8b83ffa-2d6b-4e68-b55b-1a8c20a85986","description":"<p>Requests used to get general information from dingz.</p>\n","event":[{"listen":"prerequest","script":{"id":"17fddc35-c00c-4469-8d9e-44637bbf5bb6","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"62f2cfd1-2c4d-4952-a210-6361050fbcb3","type":"text/javascript","exec":[""]}}],"_postman_id":"f8b83ffa-2d6b-4e68-b55b-1a8c20a85986"},{"name":"dingz Wifi","item":[{"name":"Scan Wifi","event":[{"listen":"test","script":{"id":"def6437f-2629-46e6-9e60-dba2a5fe7df5","exec":[""],"type":"text/javascript"}}],"id":"629dc5da-c3c5-4350-bf26-a39d0f4a74e1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/scan","description":"<p>Scans for nearby wifi networks. Will return a JSON array consisting alternatingly of a wifi name and its signal strength</p>\n","urlObject":{"path":["api","v1","scan"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"ab476431-f2fa-4bdd-9f58-d65fb852881d","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":"629dc5da-c3c5-4350-bf26-a39d0f4a74e1"},{"name":"Scan Wifi (detailed)","id":"29eeaea0-081b-4ef3-beb9-ffafa80c4005","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 signal is a field. \nFor each detected Wifi it returns</p>\n<ul>\n<li><code>name</code>: indicating the name of the wifi</li>\n<li><code>signal</code>: indicating signal strength</li>\n<li><code>encryption-on</code>: wether or not the wifi signal is encrypted</li>\n<li><code>encryption</code>: The used encryption standard</li>\n</ul>\n","urlObject":{"path":["networks"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"49a1cb0b-8fc6-493a-bd1c-ec53f7d0a9f6","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":"29eeaea0-081b-4ef3-beb9-ffafa80c4005"},{"name":"Activate WPS","id":"adfc32b1-a08c-4539-955e-59e89e2b9585","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":"{{setupIP}}/api/v1/wps","description":"<p>Activates WPS on your dingz.</p>\n","urlObject":{"path":["api","v1","wps"],"host":["{{setupIP}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"adfc32b1-a08c-4539-955e-59e89e2b9585"},{"name":"Connect to Wifi","id":"ee597793-5933-464a-9b01-c5ee2f44032c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"ssid\": \"ABEO\",\n    \"passwd\": \"PASSWORD\"\n}"},"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>In order for this command to work you must first exectue the \"Scan Wifi\" or \"Scan Wifi (detailed)\"</p>\n<p>The fields you can enter in the JSON object are:</p>\n<ul>\n<li><code>ssid</code>: The ssid of the network you want your dingz to connect to</li>\n<li><code>passwd</code>: The password of the network you want your dingz to connect to</li>\n<li><code>ip</code>: The static ip address you whish you dingz to have (optional, only needed when using static ips and not using dhcp)</li>\n<li><code>mask</code>: The mask of the network (optional, only needed when using static ips and not using dhcp)</li>\n<li><code>gateway</code>: The gateway of the network (optional, only needed when using static ips and not using dhcp)</li>\n<li><code>dns</code>: The dns server of you network (optional, only needed when using static ips and not using dhcp)</li>\n</ul>\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":"ee597793-5933-464a-9b01-c5ee2f44032c"}],"id":"35be3337-1574-4e6d-9ef7-75807b20f30c","description":"<p>Requests for setting or detecting wifi networks.</p>\n","event":[{"listen":"prerequest","script":{"id":"3446388a-bcb2-4d1a-b684-7937feb3b972","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"11e0f02f-50b3-4432-b969-2c8e009ad554","type":"text/javascript","exec":[""]}}],"_postman_id":"35be3337-1574-4e6d-9ef7-75807b20f30c"},{"name":"dingz Setting","item":[{"name":"Enable/Disable REST API","id":"f7c64fa7-3474-4f52-91bf-00064b0e7ced","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":"f7c64fa7-3474-4f52-91bf-00064b0e7ced"},{"name":"Enable/Disable Web UI","id":"dec477ae-eb26-4af3-aa49-28c46923f956","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":"dec477ae-eb26-4af3-aa49-28c46923f956"},{"name":"Get settings information","id":"eb107ad2-e118-4ec0-a117-a51a31903551","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/settings","description":"<p>Returns a json objects listing wether or not some dingz settings are enabled or not. The fields included in this object are:</p>\n<ul>\n<li><code>rest</code>: Wether or not the rest api is enabled</li>\n<li><code>panel</code>: Wether or not the web ui is enabled</li>\n<li><code>referer</code>: Wether or not we accept requests that have no referrer or do not originate from myStrom server or the dingz device itself </li>\n<li><code>token</code>: API access token (disable by default)</li>\n<li><code>hap_disable</code>: Wether or not homekit is enabled</li>\n</ul>\n","urlObject":{"path":["api","v1","settings"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"a52599de-509b-4770-b96b-7239eee60452","name":"Get settings information","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/settings"},"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":"71"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"rest\": true,\n    \"panel\": true,\n    \"referer\": true,\n    \"token\": \"\",\n    \"hap_disable\": true\n}"}],"_postman_id":"eb107ad2-e118-4ec0-a117-a51a31903551"},{"name":"Manual firmware upgrade","id":"ce0603b8-59d6-45f9-97b7-d86cce225349","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"formdata","formdata":[{"key":"file","type":"text","value":"@[FILE ON DISK]"}]},"url":"{{ip}}/load","description":"<p>Upgrade the firmware of the device to the firmwarefile provided. </p>\n<p>Make sure that the firmware (.bin file) corresponds to your device type before uploading.</p>\n<p>Returns an empty body.</p>\n","urlObject":{"path":["load"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"ce0603b8-59d6-45f9-97b7-d86cce225349"}],"id":"ff154415-3f09-43fd-a6e6-ac8c7e613090","description":"<p>Change settings saved on your dingz.</p>\n","event":[{"listen":"prerequest","script":{"id":"18db8eef-6315-4707-8745-eef0e50070e7","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"c6869be2-4f2d-4c80-8ed3-770ca137c2d8","type":"text/javascript","exec":[""]}}],"_postman_id":"ff154415-3f09-43fd-a6e6-ac8c7e613090"},{"name":"dingz Actions","item":[],"id":"15b80356-5dee-419c-bf8d-fec26e33fcc9","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 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":"0fb6f00a-9725-4bfc-84a3-5be5e1a5c74e","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"26bf4753-ed1f-4fc7-881f-6a14af50a299","type":"text/javascript","exec":[""]}}],"_postman_id":"15b80356-5dee-419c-bf8d-fec26e33fcc9"},{"name":"dingz Dimmers","item":[{"name":"Set dimmer values","id":"0f7bc943-e1d9-4914-b7d8-cbbb0d101edc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":"{{ip}}/api/v1/dimmer/0/on/?value=33&ramp=0","description":"<p>The URL is of the form <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.</p>\n<p>If no post data is specified the corresponding dimmer will be set to either on or off.</p>\n<p>However we can use post data to set <code>value</code> &amp; <code>ramp</code>, in this case the <code>&lt;ENUM off|on&gt;</code> value is disregarded.</p>\n<p>Nothing is returned</p>\n","urlObject":{"path":["api","v1","dimmer","0","on",""],"host":["{{ip}}"],"query":[{"description":{"content":"<p> To which value the corresponding dimmer is set to. Values from [0, 100]</p>\n","type":"text/plain"},"key":"value","value":"33"},{"description":{"content":"<p>How quickly the values change. Values from [0, 255]</p>\n","type":"text/plain"},"key":"ramp","value":"0"}],"variable":[]}},"response":[],"_postman_id":"0f7bc943-e1d9-4914-b7d8-cbbb0d101edc"},{"name":"Get dimmer status","id":"4f1e9b7e-713b-4319-8b4d-df18b745ab23","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/dimmer","description":"<p>Returns a JSON object consisting of one field per dimmer output which in turn consists of 3 values namely </p>\n<ul>\n<li><code>on</code>: Wether or not the dimmer output is currently on</li>\n<li><code>value</code>:  To which value the corresponding dimmer is set to. Values from [0, 100]</li>\n<li><code>ramp</code>: How quickly the values change. Values from [0, 255]</li>\n</ul>\n","urlObject":{"path":["api","v1","dimmer"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"ba31eb68-d4bb-4e36-9397-921d4f7844f0","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":"146"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"0\": {\n        \"on\": true,\n        \"value\": 100,\n        \"ramp\": 0\n    },\n    \"1\": {\n        \"on\": true,\n        \"value\": 39,\n        \"ramp\": 0\n    },\n    \"2\": {\n        \"on\": false,\n        \"value\": 0,\n        \"ramp\": 0\n    },\n    \"3\": {\n        \"on\": false,\n        \"value\": 0,\n        \"ramp\": 0\n    }\n}"}],"_postman_id":"4f1e9b7e-713b-4319-8b4d-df18b745ab23"},{"name":"Get specific dimmer status","id":"f37918c8-0fe3-48d0-94b3-c085896b4f0d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/dimmer/0","description":"<p>URL is of form <code>/api/v1/dimmer/&lt;UINT 0..3&gt;</code></p>\n<p>Returns a JSON object consisting of one field per dimmer output which in turn consists of 3 values namely </p>\n<ul>\n<li><code>on</code>: Wether or not the dimmer output is currently on</li>\n<li><code>value</code>:  To which value the corresponding dimmer is set to. Values from [0, 100]</li>\n<li><code>ramp</code>: How quickly the values change. Values from [0, 255]</li>\n</ul>\n","urlObject":{"path":["api","v1","dimmer","0"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"8fe31568-b083-4c5c-b072-9c6bde12de26","name":"Get specific dimmer status","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/dimmer/0"},"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":"32"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"on\": true,\n    \"value\": 100,\n    \"ramp\": 0\n}"}],"_postman_id":"f37918c8-0fe3-48d0-94b3-c085896b4f0d"}],"id":"a1433d0c-509a-4ba4-b2f5-245257651ad7","description":"<p>Getting or setting the dingz output dimmers.</p>\n","event":[{"listen":"prerequest","script":{"id":"7bed2afc-90ff-4f18-8f7f-c9234fff80a8","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"afa6292d-e7df-462c-b99f-b532be04ae01","type":"text/javascript","exec":[""]}}],"_postman_id":"a1433d0c-509a-4ba4-b2f5-245257651ad7"},{"name":"dingz Front LED","item":[{"name":"Get current front LED information","id":"f51bb760-28a4-4757-8265-8070e8ca3936","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/led/get","description":"<p>Returns a JSON object with 4 fields, namely:</p>\n<ul>\n<li><code>on</code>: Wether or not the led is on</li>\n<li><code>hsv</code>: Color in hsv mode has format <code>&lt;UINT 0..360&gt;;&lt;UINT 0..100&gt;;&lt;UINT 0..100&gt;</code></li>\n<li><code>rgb</code>: Color in rgb mode format is 6 hex numbers</li>\n<li><code>mode</code>: To which mode we are currently set to format <code>&lt;ENUM hsv|rgb&gt;</code></li>\n</ul>\n","urlObject":{"path":["api","v1","led","get"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"e6a81764-e801-4393-9108-31efbd40a300","name":"Get current front LED","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":"56"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"on\": false,\n    \"hsv\": \"0;0;100\",\n    \"rgb\": \"FFFFFF\",\n    \"mode\": \"hsv\"\n}"}],"_postman_id":"f51bb760-28a4-4757-8265-8070e8ca3936"},{"name":"Set RGB channel values for front led","id":"ff00130f-e007-417b-b9ad-062961e3e408","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":"{{ip}}/api/v1/led/red?value=0","description":"<p>URL has form <code>/api/v1/led/&lt;ENUM red|green|blue&gt;</code> for each channel.\nNothing is returned.</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","red"],"host":["{{ip}}"],"query":[{"key":"value","value":"0"},{"disabled":true,"key":"ramp","value":"3000"}],"variable":[]}},"response":[{"id":"546f515d-f8f4-4bea-9e22-2b27b245a6bf","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","host":["{{ip}}"],"path":["api","v1","led","red"],"query":[{"key":"value","value":"200"},{"key":"ramp","value":"4095","disabled":true}]}},"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":""},{"id":"7b28e08d-c52e-48ba-a0d4-90a1060d7bce","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":"ff00130f-e007-417b-b9ad-062961e3e408"}],"id":"3fa95b33-fdb2-4650-bdf9-a7b38ef26c4e","description":"<p>Getting or setting the front LED data.</p>\n","event":[{"listen":"prerequest","script":{"id":"608fd8cd-dc57-49b2-9435-b16fb200b673","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"5ecdda43-7154-4229-960a-ca287c47efd2","type":"text/javascript","exec":[""]}}],"_postman_id":"3fa95b33-fdb2-4650-bdf9-a7b38ef26c4e"},{"name":"dingz Shades/Blinds","item":[{"name":"Get shade information","id":"ac5b3086-7f97-41af-ac31-461eb09b22a0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/shade","description":"<p>Contains a field for every dingz output that is set to \"blinds\" mode (at most two fields one named <code>0</code> and the other <code>1</code>). To do this, remove the front cover of your dingz and set the DIP/toggle switches accordingly.</p>\n<ul>\n<li><code>target</code>: Target state of the shades</li>\n<li><code>current</code>: Current state of the shades</li>\n</ul>\n<p>Each of those again have two fields, namely</p>\n<ul>\n<li><code>blind</code>: Position of the blind [0..100]</li>\n<li><code>lamella</code>: Angle of the lamella [0..90]</li>\n</ul>\n","urlObject":{"path":["api","v1","shade"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"fd6008e7-f66a-4619-9c9a-1a43e88becf1","name":"Get shade information","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":"79"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"0\": {\n        \"target\": {\n            \"blind\": 50,\n            \"lamella\": 100\n        },\n        \"current\": {\n            \"blind\": 0,\n            \"lamella\": 100\n        }\n    }\n}"}],"_postman_id":"ac5b3086-7f97-41af-ac31-461eb09b22a0"},{"name":"Get specific shade information","id":"ae7a7618-58bc-4090-abcb-21682bb5e764","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/shade/0","description":"<p>URL is of form <code>/api/v1/shade/&lt;UINT 0..1&gt;</code></p>\n<p>Get the shade information of the specified shade configuration.</p>\n<ul>\n<li><code>target</code>: Target state of the shades</li>\n<li><code>current</code>: Current state of the shades</li>\n</ul>\n<p>Each of those again have two fields, namely</p>\n<ul>\n<li><code>blind</code>: Position of the blind [0..100]</li>\n<li><code>lamella</code>: Angle of the lamella [0..90]</li>\n</ul>\n","urlObject":{"path":["api","v1","shade","0"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"f7558d6a-a313-4c29-be02-fa003259f769","name":"{{ip}}/api/v1/shade/0","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/shade/0"},"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":"73"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"target\": {\n        \"blind\": 50,\n        \"lamella\": 100\n    },\n    \"current\": {\n        \"blind\": 0,\n        \"lamella\": 100\n    }\n}"}],"_postman_id":"ae7a7618-58bc-4090-abcb-21682bb5e764"},{"name":"Set shade values","id":"52652e1d-fb60-41f9-9aef-1a0106e09e2c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{ip}}/api/v1/shade/0?blind=50&lamella=80","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>Nothing is returned.</p>\n<p>As data we send two field</p>\n<ul>\n<li><code>blind</code>: Position of the blind (in percent)</li>\n<li><code>lamella</code>: Angle of the lamella (in percent)</li>\n</ul>\n","urlObject":{"path":["api","v1","shade","0"],"host":["{{ip}}"],"query":[{"key":"blind","value":"50"},{"key":"lamella","value":"80"}],"variable":[]}},"response":[],"_postman_id":"52652e1d-fb60-41f9-9aef-1a0106e09e2c"}],"id":"816cba98-d6fe-4b7a-83be-53b8b9236b43","description":"<p>Control shades/blinds with your dingz.</p>\n","event":[{"listen":"prerequest","script":{"id":"ebe13d96-eb30-4d68-bdcb-257206d23325","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"2d269b03-053b-4719-a766-fd15b4877370","type":"text/javascript","exec":[""]}}],"_postman_id":"816cba98-d6fe-4b7a-83be-53b8b9236b43"},{"name":"Motion Sensor (PIR)","item":[{"name":"Get PIR configuration","id":"891f315e-fb51-4af6-80fe-e2eb69d45ee8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/pir_config","description":"<p>Gets general information about the motion sensor (PIR). </p>\n<p>When not specified otherwise, time is always in seconds [s].</p>\n<p>Will return a JSON object with:</p>\n<ul>\n<li><code>pir_output</code>: Which output of your dingz will be toggled when motion is detected</li>\n<li><code>pir_feedback</code>: With which color the front led should light up when motion is detected</li>\n<li><code>feedback_intensity</code>: Brightness of the feedback blinking</li>\n<li><code>dark_threshold</code>: lux threshold for which pir output will be turn on if motion occurred</li>\n<li><code>bright_threshold</code>: lux threshold for which pir output  will be turn off</li>\n<li><code>timer</code>: How long the output should be set to on (legacy)</li>\n<li><code>on_time</code>: How long the output should be set to on </li>\n<li><code>off_time</code>: How long the pir should temporarily be disabled</li>\n<li><code>dim_value</code>: The target output dimmer value in percentage set if output is turn on</li>\n<li><code>backoff</code>: Time after a pir trigger until we reset the motion state to \"off\",</li>\n<li><code>feedback_time</code>: How long the front led will light up once the pir is triggered,</li>\n<li><code>fade_in_time</code>: Time in which the output will be set to the target value (unit 0.1s)</li>\n<li><code>fade_out_time</code>: Time in which the output will be turned off (unit 0.1s)</li>\n<li><code>enabled</code>: wether or not the pir is enabled</li>\n</ul>\n","urlObject":{"path":["api","v1","pir_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"c4bf1593-be03-43ed-b3d5-97d52dc1afab","name":"Get PIR information","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":"240"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"pir_output\": 1,\n    \"pir_feedback\": \"green\",\n    \"feedback_intensity\": 100,\n    \"threshold\": 200,\n    \"timer\": 15,\n    \"on_time\": 15,\n    \"off_time\": 600,\n    \"min_dim_value\": 0,\n    \"max_dim_value\": 100,\n    \"smart_dimmer\": false,\n    \"backoff\": 1,\n    \"inhibit_time\": 1,\n    \"feedback_time\": 1,\n    \"enabled\": true\n}"}],"_postman_id":"891f315e-fb51-4af6-80fe-e2eb69d45ee8"},{"name":"Get PIR light sensor","id":"412ed8e3-2ffe-4421-9698-5abd3546239f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/light","description":"<p>Returns a JSON object with 3 fields:</p>\n<ul>\n<li><code>success</code>: Wether or not the request has succeeded</li>\n<li><code>intensity</code>: The current brightness value [lux]</li>\n<li><code>day</code>: Wether or not the dingz thinks its currently daytime based on the brighness it receives</li>\n</ul>\n","urlObject":{"path":["api","v1","light"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"4f8e2a75-c2e3-4d4c-8f91-2d20b9b1bc84","name":"Get light sensor","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":"59"},{"key":"Connection","value":"close"},{"key":"Access-Control-Allow-Origin","value":"*"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"intensity\": 13.399999618530273,\n    \"day\": false\n}"}],"_postman_id":"412ed8e3-2ffe-4421-9698-5abd3546239f"},{"name":"Set PIR configuration","id":"dfb37083-f961-4e00-9cad-6fae839d546a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":""},"url":"{{ip}}/api/v1/pir_config","description":"<p>Request accepts body as JSON with bellow fields</p>\n<ul>\n<li><code>pir_output</code>: Which output of your dingz will be toggled when motion is detected. null to disable, or int value of 1..4 to enable. </li>\n<li><code>pir_feedback</code>: With which color the front led should light up when motion is detected. null to disable, string value of white|reg|green|blue to enable</li>\n<li><code>feedback_intensity</code>: Brightness of the feedback blinking. int value in range 0..100</li>\n<li><code>dark_threshold</code>: lux threshold for which pir output will be turn on if motion occurred. int value &gt; 0, should be smaller than <code>bright_threshold</code></li>\n<li><code>bright_threshold</code>: lux threshold for which pir output will be turn off. int value &gt; 0, should be bigger than <code>dark_threshold</code></li>\n<li><code>timer</code>: How long the output should be set to on (legacy)</li>\n<li><code>on_time</code>: How long the output should be set to on. int value &gt; 0</li>\n<li><code>off_time</code>: How long the pir should temporarily be disabled. int value &gt; 0</li>\n<li><code>dim_value</code>: The target output dimmer value in percentage set if output is turn on, int value in range 0..100</li>\n<li><code>backoff</code>: Time after a pir trigger until we reset the motion state to \"off\", int value &gt; 0</li>\n<li><code>feedback_time</code>: How long the front led will light up once the pir is triggered, int value &gt; 0</li>\n<li><code>fade_in_time</code>: Time in which the output will be set to the target value (unit 0.1s), int value &gt; 0</li>\n<li><code>fade_out_time</code>: Time in which the output will be turned off (unit 0.1s), int value &gt; 0</li>\n<li><code>enabled</code>: wether or not the pir is enabled, bool value</li>\n</ul>\n","urlObject":{"path":["api","v1","pir_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"dfb37083-f961-4e00-9cad-6fae839d546a"}],"id":"8574b7f3-21aa-4601-b093-02611293716e","description":"<p>Getting or setting motion sensor data.</p>\n","event":[{"listen":"prerequest","script":{"id":"db5116b9-8330-4fc0-850d-0e25d92d9346","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"aaec0a15-2be6-4706-b1d3-5af60f126e1e","type":"text/javascript","exec":[""]}}],"_postman_id":"8574b7f3-21aa-4601-b093-02611293716e"},{"name":"Front LED","item":[{"name":"Set front led","id":"80cf63a8-aa85-4dca-85d2-1bee9dfd2c47","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":""},"url":"{{ip}}/api/v1/led/set?action=on&color=0;100;100&mode=hsv&ramp=0","description":"<p>Set the color of the led of the dingz.</p>\n","urlObject":{"path":["api","v1","led","set"],"host":["{{ip}}"],"query":[{"key":"action","value":"on"},{"key":"color","value":"0;100;100"},{"key":"mode","value":"hsv"},{"key":"ramp","value":"0"}],"variable":[]}},"response":[],"_postman_id":"80cf63a8-aa85-4dca-85d2-1bee9dfd2c47"}],"id":"1d7d2caa-4853-4cd3-90f1-f00f9c92cf50","_postman_id":"1d7d2caa-4853-4cd3-90f1-f00f9c92cf50","description":""},{"name":"Thermostat","item":[{"name":"Get thermostat configuration","id":"bdfd55aa-3986-4d7d-83bd-d16bbd10ae0a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/thermostat_config","description":"<p>Will return a JSON object with:</p>\n<ul>\n<li><code>active</code> <em>bool</em>: if the thermostat function is active</li>\n<li><code>output</code> <em>uint</em>: output on which thermostat function will be present</li>\n<li><code>on</code> <em>bool</em>: describe current status of thermostat output, true if output is on</li>\n<li><code>min_temp</code> <em>int</em>: temperature below which the output will be turned on</li>\n<li><code>max_temp</code> <em>int</em>: temperature below which the output will be turned off</li>\n<li><code>reverse</code> <em>bool</em>: reverse polarity of output, on is off, off is on</li>\n<li><code>enable</code> <em>bool</em>: if thermostat output is controled</li>\n</ul>\n","urlObject":{"path":["api","v1","thermostat_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"4d8196a7-0696-4b9c-b590-49f8ab18ccac","name":"Get thermostat configuration","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/thermostat_config"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\"active\":false,\"output\":1,\"on\":false,\"min_temp\":20,\"max_temp\":22,\"reverse\":false}"}],"_postman_id":"bdfd55aa-3986-4d7d-83bd-d16bbd10ae0a"},{"name":"Set thermostat configuration","id":"0ead9eef-9de8-4028-a8ec-d9f46fc51e93","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"active\": <true|false>,\n\t\"output\": <0..3>,\n\t\"min_temp\": <-100..99>,\n\t\"max_temp\": <-99..100>,\n\t\"reverse\": <true|false>\n\t\"enable\": <true|false>\n}"},"url":"{{ip}}/api/v1/thermostat_config","description":"<p>Body should be JSON with fields bellow:</p>\n<ul>\n<li><code>active</code> <em>bool</em>: if the thermostat function is active on given output</li>\n<li><code>output</code> <em>uint</em>: output on which thermostat function will be present</li>\n<li><code>min_temp</code> <em>int</em>: temperature below which the output will be turned on</li>\n<li><code>max_temp</code> <em>int</em>: temperature below which the output will be turned off</li>\n<li><code>reverse</code> <em>bool</em>: reverse polarity of output, on is off, off is on</li>\n<li><code>enable</code> <em>bool</em>: if thermostat enabled/disabled</li>\n</ul>\n","urlObject":{"path":["api","v1","thermostat_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"0ead9eef-9de8-4028-a8ec-d9f46fc51e93"}],"id":"753a238f-d16c-4d47-9874-8696ed021b90","_postman_id":"753a238f-d16c-4d47-9874-8696ed021b90","description":""},{"name":"Input","item":[{"name":"Get input configutaion","id":"9c8d7967-d0e6-4795-ae23-bd5549be5e74","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/input_config","description":"<p>Return collection of inputs settings in JSON format:</p>\n<ul>\n<li><code>output</code>: output which will be triggered by input, null if function is disabled, 1..4 if function is enabled</li>\n<li><code>feedback</code>: if input event will be cause LED feedback, null if no, white|reg|green|blue describe LED feedback color</li>\n<li><code>feedback_intensify</code>: intensity of LED feedback, 0..100</li>\n<li><code>active</code>: if input function is enabled, boolean value</li>\n</ul>\n","urlObject":{"path":["api","v1","input_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"8359364f-b8fa-442c-af32-2e16e7463434","name":"Get input configutaion","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/input_config"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"inputs\": [\n        {\n            \"output\": null,\n            \"feedback\": \"white\",\n            \"feedback_intensity\": 100,\n            \"active\": false\n        }\n    ]\n}"}],"_postman_id":"9c8d7967-d0e6-4795-ae23-bd5549be5e74"},{"name":"Set input configuration","id":"52f3c773-472c-4fc6-93c8-bf05caf74bc4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":""},"url":"{{ip}}/api/v1/input_config","description":"<p>require JSON as body:</p>\n<ul>\n<li><code>output</code>: output which will be triggered by input, null if function is disabled, 1..4 if function is enabled</li>\n<li><code>feedback</code>: if input event will be cause LED feedback, null if no, white|reg|green|blue describe LED feedback color</li>\n<li><code>feedback_intensify</code>: intensity of LED feedback, 0..100</li>\n<li><code>active</code>: if input function is enabled, boolean value</li>\n</ul>\n","urlObject":{"path":["api","v1","input_config"],"host":["{{ip}}"],"query":[],"variable":[]}},"response":[{"id":"5a4798f5-45b8-4d4c-9ca0-038754315b52","name":"Set input configuration","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","type":"text","value":"application/json"}],"body":{"mode":"raw","raw":""},"url":"{{ip}}/api/v1/input_config"},"_postman_previewlanguage":"json","header":null,"cookie":[],"responseTime":null,"body":"{\n    \"inputs\": [\n        {\n            \"output\": 1,\n            \"feedback\": \"white\",\n            \"feedback_intensity\": 100,\n            \"active\": false\n        }\n    ]\n}"}],"_postman_id":"52f3c773-472c-4fc6-93c8-bf05caf74bc4"}],"id":"9b6ecf0d-34ff-49e6-acd7-f9a7a3744e24","_postman_id":"9b6ecf0d-34ff-49e6-acd7-f9a7a3744e24","description":""},{"name":"Timer","item":[{"name":"Get active timers","id":"8786ed3c-d0dd-4ba7-aedc-a5209965e41c","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":"de1fb633-01db-4d5c-8470-4e8e0978c979","name":"Get active timmers","originalRequest":{"method":"GET","header":[],"url":"{{ip}}/api/v1/timer"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"8786ed3c-d0dd-4ba7-aedc-a5209965e41c"},{"name":"Create and activate timer","id":"744f4b75-7922-4e31-8048-29c2072f1971","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":"744f4b75-7922-4e31-8048-29c2072f1971"},{"name":"Stop timer","id":"62cc6f98-dac3-487c-8c90-367a388f6adc","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>Allow 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":"62cc6f98-dac3-487c-8c90-367a388f6adc"}],"id":"988f15c4-48af-4adb-b7a9-9bd463a304d7","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":"22ce2398-611f-458d-bae5-38df7fd17cc0","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"757a24a4-7eb6-47c8-be28-cb18ea8deea9","type":"text/javascript","exec":[""]}}],"_postman_id":"988f15c4-48af-4adb-b7a9-9bd463a304d7"},{"name":"Scheduler","item":[{"name":"Set schedule","id":"8f5cb3b9-d568-426b-8c3b-0a11ea19ffaf","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>Allow 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":"8f5cb3b9-d568-426b-8c3b-0a11ea19ffaf"},{"name":"Get schedule","id":"a803fffe-dbe3-45e6-b8a0-f80267fc0427","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{ip}}/api/v1/schedule","description":"<p>Return 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":"a803fffe-dbe3-45e6-b8a0-f80267fc0427"},{"name":"Add schedule item","id":"fc3bfdab-b885-4eca-b69e-c235ba98de09","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":"fc3bfdab-b885-4eca-b69e-c235ba98de09"},{"name":"Remove schedule item","id":"e9ee28ca-145b-4d57-aec7-289c4e6f9cbe","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":"e9ee28ca-145b-4d57-aec7-289c4e6f9cbe"}],"id":"ab75cbf5-1b2f-4836-be82-4c7f45b8b1de","_postman_id":"ab75cbf5-1b2f-4836-be82-4c7f45b8b1de","description":""}],"event":[{"listen":"prerequest","script":{"id":"2fce17f7-98d1-46e7-afdf-29c0e1d3f0b9","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"b6861549-6cbc-424e-a702-f1e8f58ae1b8","type":"text/javascript","exec":[""]}}]}