[{"id":"e3281698.dd4bc","type":"tab","label":"Loxone Integració","disabled":false,"info":""},{"id":"37c77716.a38b38","type":"http request","z":"e3281698.dd4bc","name":"Peticio Loxone","method":"use","ret":"txt","paytoqs":false,"url":"","tls":"","proxy":"","authType":"","x":1020,"y":140,"wires":[["a2e85b41.f381b8","5329af44.74b168"]]},{"id":"c6d68456.d0c1d","type":"inject","z":"e3281698.dd4bc","name":"Cada hora","topic":"","payload":"","payloadType":"date","repeat":"3600","crontab":"","once":false,"onceDelay":0.1,"x":129,"y":116,"wires":[["229344c2.fe6aac"]]},{"id":"229344c2.fe6aac","type":"function","z":"e3281698.dd4bc","name":"Configuració dels sensors amb lectura horària","func":"\nlet SENSORS = [\n{\"lMiniserver\":\"504F94A050B0\",\"lSensor\":\"08213ENS001_MV_BMC1_ENER\",\"lUsr\":\"x\",\"lPass\":\"x\",\"sSensor\":\"08213ENS001_MV_BMC1_ENER\"}\n];\n\n\n\nSENSORS.forEach(function(sensor){\n let newMsg = {};\n newMsg.sensor = sensor;\n node.send(newMsg);\n});\n\nreturn null;","outputs":1,"noerr":0,"x":414,"y":116,"wires":[["66f25e77.f9bd08"]]},{"id":"66f25e77.f9bd08","type":"function","z":"e3281698.dd4bc","name":"Configuració HTTP Loxone","func":"function createBasicAuthHeader(user, password)\n{\n var token = user + \":\" + password;\n var hash = Buffer.from(token).toString('base64');\n return \"Basic \" + hash;\n}\n\nmsg.method = 'GET';\n\nmsg.url = 'https://dns.loxonecloud.com/' + msg.sensor.lMiniserver + '/dev/sps/io/' + msg.sensor.lSensor + '/state';\n\nmsg.headers = {};\nmsg.headers.Authorization = createBasicAuthHeader(msg.sensor.lUsr, msg.sensor.lPass);\n\nmsg.followRedirects = true;\n\nmsg.rejectUnauthorized = false;\n\nreturn msg;","outputs":1,"noerr":0,"x":765,"y":141,"wires":[["99f34985.5e4","37c77716.a38b38"]]},{"id":"a2e85b41.f381b8","type":"debug","z":"e3281698.dd4bc","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1213,"y":47,"wires":[]},{"id":"99f34985.5e4","type":"debug","z":"e3281698.dd4bc","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":985,"y":48,"wires":[]},{"id":"5329af44.74b168","type":"xml","z":"e3281698.dd4bc","name":"Parsejar resposta","property":"payload","attr":"","chr":"","x":580,"y":520,"wires":[["75404ad9.e41384","4c712023.6bf0a"]]},{"id":"75404ad9.e41384","type":"debug","z":"e3281698.dd4bc","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":770,"y":420,"wires":[]},{"id":"61bddeaa.f8655","type":"inject","z":"e3281698.dd4bc","name":"Cada dia","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":180,"wires":[["e5a711f9.b04ee8"]]},{"id":"e5a711f9.b04ee8","type":"function","z":"e3281698.dd4bc","name":"Configuració dels sensors amb lectura diària","func":"\nlet SENSORS = [\n{\"lMiniserver\":\"504F94A050B0\",\"lSensor\":\"08213ENS001_MV_BMC1_ENER\",\"lUsr\":\"x\",\"lPass\":\"x\",\"sSensor\":\"08213ENS001_MV_BMC1_ENER\"}\n];\n\n\n\n\nSENSORS.forEach(function(sensor){\n let newMsg = {};\n newMsg.sensor = sensor;\n node.send(newMsg);\n});\n\nreturn null;","outputs":1,"noerr":0,"x":405,"y":180,"wires":[["66f25e77.f9bd08"]]},{"id":"eee031a4.7b30e8","type":"catch","z":"e3281698.dd4bc","name":"","scope":["37c77716.a38b38"],"uncaught":false,"x":670,"y":248,"wires":[["d2f1245.6d87258"]]},{"id":"d2f1245.6d87258","type":"delay","z":"e3281698.dd4bc","name":"","pauseType":"delay","timeout":"15","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":819,"y":247,"wires":[["37c77716.a38b38"]]},{"id":"147d9ecf.448e11","type":"publish","z":"e3281698.dd4bc","name":"Publica a Sentilo","server":"16812c1c.b340ec","providerId":"ensprova@loxone-test-provider","dataType":"data","identifier":"","obsValue":"","urlRaw":"/data/ensprova@loxone-test-provider","x":1220,"y":520,"wires":[]},{"id":"4c712023.6bf0a","type":"function","z":"e3281698.dd4bc","name":"Preparació crida Sentilo","func":"// Exemple de la resposta espera de Miniserver: \n\nfunction parseValue(loxoneValue) {\n let splitArr = loxoneValue.split(' ')\n if(splitArr.length > 1) {\n \n let value = splitArr[0];\n if(!isNaN(value)){\n return value;\n }\n }\n throw (\"No s'ha pogut obtenir un dígit de la resposta\");\n}\n\n\n// Check a veure si hi ha l'element esperat\nif(!msg.payload.LL) {\n node.error(\"Miniserver no ha retornat la resposta esperada dins del tag , sinó: \"+JSON.stringify(msg.payload), msg);\n return\n}\n\n\n// Missatge a Sentilo\nlet payloadObj = {\"sensors\":[\n {\n \"sensor\":msg.sensor.sSensor,\n \"observations\":[\n {\"value\":parseValue(msg.payload.LL.$.value)},\n ]\n }\n]};\n\n\n// Buidem l'objecte msg\nmsg = {}\nmsg.payload = payloadObj\n\nreturn msg;","outputs":1,"noerr":0,"x":820,"y":520,"wires":[["610cb336.7b4dcc","147d9ecf.448e11"]]},{"id":"610cb336.7b4dcc","type":"debug","z":"e3281698.dd4bc","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1010,"y":580,"wires":[]},{"id":"16812c1c.b340ec","type":"server","z":"","alias":"PreSentiloAPI-Loxone","host":"http://pre-api-sentilo.diba.cat"}]