Hab hier mal meinen aktualisierten Flow zum LinkTap… die API und die zulässigen Abfrageintervalle sind echt ein Krampf… grrrr
[{"id":"74c872a1.76cb1c","type":"tab","label":"Linktap (9040)","disabled":false,"info":""},{"id":"2b1d717f.ce17a6","type":"homeeDevice","z":"74c872a1.76cb1c","virtual-homee":"","name":"Rasensprenger","nodeId":"9040","showNodeId":true,"profile":"1001","icon":"nodeicon_watervalve","attributes":[{"type":1,"state":1,"instance":0,"minimum":0,"maximum":1,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"Instant","unit":"","step_value":1,"editable":1,"last_changed":1619203468,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9040,"node_id":9040},{"type":1,"state":1,"instance":1,"minimum":0,"maximum":1,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"Eco","unit":"","step_value":1,"editable":1,"last_changed":1619203510,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9041,"node_id":9040},{"type":2,"state":1,"instance":0,"minimum":10,"maximum":180,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"Bewässungsdauer","unit":"min","step_value":10,"editable":1,"last_changed":1619203773,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9042,"node_id":9040},{"type":2,"state":1,"instance":3,"minimum":5,"maximum":60,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"Dauer Eco an","unit":"min","step_value":5,"editable":1,"last_changed":1619203778,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9043,"node_id":9040},{"type":2,"state":1,"instance":2,"minimum":5,"maximum":60,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"Dauer Eco aus","unit":"min","step_value":5,"editable":1,"last_changed":1619203714,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9044,"node_id":9040},{"type":65,"state":1,"instance":0,"minimum":0,"maximum":25,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"Flussrate","unit":"ltr.%2Fh","step_value":1,"editable":0,"last_changed":1619202443,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9045,"node_id":9040},{"type":65,"state":1,"instance":1,"minimum":0,"maximum":1000,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"Menge aktuell","unit":"ltr.","step_value":1,"editable":0,"last_changed":1619202493,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9046,"node_id":9040},{"type":66,"state":1,"instance":2,"minimum":0,"maximum":10000,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"Menge Monat","unit":"ltr.","step_value":1,"editable":0,"last_changed":1619202782,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9047,"node_id":9040},{"type":68,"state":1,"instance":0,"minimum":0,"maximum":1,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"Alarm/Fehler","unit":"n%2Fa","step_value":1,"editable":0,"last_changed":1619202359,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9048,"node_id":9040},{"type":8,"state":1,"instance":0,"minimum":0,"maximum":100,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"","unit":"%25","step_value":1,"editable":0,"last_changed":1619202310,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9049,"node_id":9040},{"type":2,"state":1,"instance":1,"minimum":0,"maximum":1,"current_value":0,"target_value":0,"last_value":0,"data":"watering","name":"Status","unit":"text","step_value":1,"editable":1,"last_changed":1619208746,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9050,"node_id":9040},{"type":5,"state":1,"instance":0,"minimum":0,"maximum":180,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"Restzeit aktuell","unit":"min","step_value":1,"editable":0,"last_changed":1619210404,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9051,"node_id":9040},{"type":5,"state":1,"instance":1,"minimum":0,"maximum":180,"current_value":0,"target_value":0,"last_value":0,"data":"","name":"Bewässerungsintervall","unit":"min","step_value":1,"editable":0,"last_changed":1619210460,"changed_by":1,"changed_by_id":0,"based_on":1,"options":[],"id":9052,"node_id":9040}],"statusTemplate":"","x":960,"y":360,"wires":[["ceaef43d.6213a8"]]},{"id":"ceaef43d.6213a8","type":"function","z":"74c872a1.76cb1c","name":"","func":"if (msg.payload.attributeId === 9042) //InstantModeDuration \n{return[{payload:msg.payload.targetValue}]}\nif (msg.payload.attributeId === 9043) //EcoOn\n{return[null,{payload:msg.payload.targetValue}];}\nif (msg.payload.attributeId === 9044) //EcoOff\n{return[null,null,{payload:msg.payload.targetValue}];}\nif (msg.payload.attributeId === 9040 && msg.payload.targetValue === 1) //StartInstantMode\n{return[null,null,null,{payload: true }];}\nif (msg.payload.attributeId === 9040 && msg.payload.targetValue === 0 || msg.payload.attributeId === 9041 && msg.payload.targetValue === 0) //StopInstantEcoMode\n{return[null,null,null,null,{payload: true }];}\nif (msg.payload.attributeId === 9041 && msg.payload.targetValue === 1) //StartEcoInstandMode\n{return[null,null,null,null,null,{payload: true }];}\n\n","outputs":6,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1240,"y":460,"wires":[["d3d11e71.065cd8","15d8d56a.bc5deb"],["b6371bf2.4f4b8","db0b679.9ec9498"],["3c2d2d80.0ed28a","66318eae.a8de58"],["d46dcff0.f4b28"],["c375b015.17624"],["f7e71c1a.8ed43"]]},{"id":"735dcdd3.0514e4","type":"function","z":"74c872a1.76cb1c","name":"","func":"var nodeid = 669; // node ID in homee vom Gerät\nvar attributid = 2113; // attribut ID in homee vom Gerät\nvar Status = msg.payload;\n{return {payload: \"PUT:/nodes/\"+nodeid+\"/attributes/\"+attributid+\"?data=\"+Status+\"\"}}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1040,"y":80,"wires":[["c0869198.703a4"]]},{"id":"c0869198.703a4","type":"link out","z":"74c872a1.76cb1c","name":"","links":["1f6d5452.168fbc","497bfd12.01344c","37366213.1e7b26"],"x":1135,"y":80,"wires":[]},{"id":"94bd9b19.51c1d8","type":"function","z":"74c872a1.76cb1c","name":"API Request Watering - every 30 s","func":"{return {payload: {\n \"username\": \"XXX\",\n \"apiKey\": \"XXX\",\n \"taplinkerId\": \"XXX\"\n}}}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":380,"y":120,"wires":[["ae91adcd.c8254"]]},{"id":"d3d11e71.065cd8","type":"function","z":"74c872a1.76cb1c","name":"InstantModeDuration","func":"var duration = msg.payload;\nreturn {payload: {\n \"username\": \"XXX\",\n \"apiKey\": \"XXX\",\n \"gatewayId\": \"XXX\",\n \"taplinkerId\": \"XXX\",\n \"action\": false,\n \"duration\": (msg.payload),\n \"eco\": false\n}}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1520,"y":440,"wires":[["eff2e3c3.b981e8"]]},{"id":"15d8d56a.bc5deb","type":"function","z":"74c872a1.76cb1c","name":"Globale waterdur","func":"global.set(\"InstantModeDuration\",msg.payload);\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1490,"y":300,"wires":[[]]},{"id":"ae91adcd.c8254","type":"http request","z":"74c872a1.76cb1c","name":"Linktap","method":"POST","ret":"txt","paytoqs":"ignore","url":"https://www.link-tap.com/api/getWateringStatus","tls":"","persist":false,"proxy":"","authType":"","x":600,"y":120,"wires":[["c3411375.6679d8"]]},{"id":"4e91d959.4e245","type":"debug","z":"74c872a1.76cb1c","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1950,"y":540,"wires":[]},{"id":"eff2e3c3.b981e8","type":"http request","z":"74c872a1.76cb1c","name":"Linktap","method":"POST","ret":"txt","paytoqs":false,"url":"https://www.link-tap.com/api/activateInstantMode","tls":"","persist":false,"proxy":"","authType":"","x":1780,"y":540,"wires":[["4e91d959.4e245"]]},{"id":"d46dcff0.f4b28","type":"function","z":"74c872a1.76cb1c","name":"StartInstantMode","func":"var waterdur = global.get(\"InstantModeDuration\");\nreturn {payload: {\n \"username\": \"XXX\",\n \"apiKey\": \"XXX\",\n \"gatewayId\": \"XXX\",\n \"taplinkerId\": \"XXX\",\n \"action\": true,\n \"duration\": waterdur,\n \"eco\":false\n}}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1530,"y":580,"wires":[["eff2e3c3.b981e8"]]},{"id":"b6371bf2.4f4b8","type":"function","z":"74c872a1.76cb1c","name":"EcoInstantModeOn","func":"var waterdur = global.get(\"InstantModeDuration\");\nvar ecooff = global.get(\"EcoInstantModeOff\");\nvar ecoon = msg.payload;\nreturn {payload: {\n \"username\": \"XXX\",\n \"apiKey\": \"XXX\",\n \"gatewayId\": \"XXX\",\n \"taplinkerId\": \"XXX\",\n \"action\": false,\n \"duration\": waterdur,\n \"eco\": false,\n \"ecoOn\": (msg.payload),\n \"ecoOff\": ecooff\n}}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1530,"y":480,"wires":[["eff2e3c3.b981e8"]]},{"id":"3c2d2d80.0ed28a","type":"function","z":"74c872a1.76cb1c","name":"EcoInstantModeOff","func":"var waterdur = global.get(\"InstantModeDuration\");\nvar ecoon = global.get(\"EcoInstantModeOn\");\nvar ecooff = msg.payload;\nreturn {payload: {\n \"username\": \"XXX\",\n \"apiKey\": \"XXX\",\n \"gatewayId\": \"XXX\",\n \"taplinkerId\": \"XXX\",\n \"action\": false,\n \"duration\": waterdur,\n \"eco\": false,\n \"ecoOff\": (msg.payload),\n \"ecoOn\": ecoon\n}}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1530,"y":520,"wires":[["eff2e3c3.b981e8"]]},{"id":"c375b015.17624","type":"function","z":"74c872a1.76cb1c","name":"StopInstantMode","func":"return {payload: {\n \"username\": \"XXX\",\n \"apiKey\": \"XXX\",\n \"gatewayId\": \"XXX\",\n \"taplinkerId\": \"XXX\",\n \"action\": false,\n \"duration\": 0,\n \"eco\": false\n}}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1530,"y":620,"wires":[["eff2e3c3.b981e8"]]},{"id":"f7e71c1a.8ed43","type":"function","z":"74c872a1.76cb1c","name":"StartEcoMode","func":"var waterdur = global.get(\"InstantModeDuration\");\nvar ecoon = global.get(\"EcoInstantModeOn\");\nvar ecooff = global.get(\"EcoInstantModeOff\");\nreturn {payload: {\n \"username\": \"XXX\",\n \"apiKey\": \"XXX\",\n \"gatewayId\": \"XXX\",\n \"taplinkerId\": \"XXX\",\n \"action\": true,\n \"duration\": waterdur,\n \"eco\": true,\n \"ecoOn\": ecoon,\n \"ecoOff\": ecooff\n}}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1540,"y":660,"wires":[["eff2e3c3.b981e8"]]},{"id":"db0b679.9ec9498","type":"function","z":"74c872a1.76cb1c","name":"Globale ecoon","func":"global.set(\"EcoInstantModeOn\",msg.payload);\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1480,"y":340,"wires":[[]]},{"id":"66318eae.a8de58","type":"function","z":"74c872a1.76cb1c","name":"Globale ecooff","func":"global.set(\"EcoInstantModeOff\",msg.payload);\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1480,"y":380,"wires":[[]]},{"id":"d2ef7f67.7ef3a8","type":"inject","z":"74c872a1.76cb1c","name":"API Request","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":120,"wires":[["94bd9b19.51c1d8"]]},{"id":"d5dc5a0c.31339","type":"function","z":"74c872a1.76cb1c","name":"API Request Device - every 30 s","func":"{return {payload: {\n \"username\": \"XXX\",\n \"apiKey\": \"XXX\"\n}}}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":380,"y":180,"wires":[["872d9f96.6d1d68"]]},{"id":"872d9f96.6d1d68","type":"http request","z":"74c872a1.76cb1c","name":"Linktap","method":"POST","ret":"txt","paytoqs":"ignore","url":"https://www.link-tap.com/api/getAllDevices","tls":"","persist":false,"proxy":"","authType":"","x":600,"y":180,"wires":[["50c487b8.bd14f8"]]},{"id":"1cb5a3e.2faa15c","type":"inject","z":"74c872a1.76cb1c","name":"API Request","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"30","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":180,"wires":[["d5dc5a0c.31339"]]},{"id":"b2b197c8.f2ed3","type":"http request","z":"74c872a1.76cb1c","name":"Linktap","method":"POST","ret":"txt","paytoqs":"ignore","url":"https://www.link-tap.com/api/getWateringHistory","tls":"","persist":false,"proxy":"","authType":"","x":600,"y":240,"wires":[["7f88321f.a7c224"]]},{"id":"5f7e2479.7fb7c4","type":"inject","z":"74c872a1.76cb1c","name":"API Request","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"600","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":240,"wires":[["b83c7bf6.5b8378"]]},{"id":"50c487b8.bd14f8","type":"json","z":"74c872a1.76cb1c","name":"","property":"payload","action":"","pretty":false,"x":730,"y":180,"wires":[["f17958ce.36a8f8"]]},{"id":"b83c7bf6.5b8378","type":"function","z":"74c872a1.76cb1c","name":"API Request History - every 600 s","func":"{return {payload: {\n \"username\": \"XXX\",\n \"apiKey\": \"XXX\",\n \"taplinkerId\": \"XXX\"\n}}}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":380,"y":240,"wires":[["b2b197c8.f2ed3"]]},{"id":"f17958ce.36a8f8","type":"split","z":"74c872a1.76cb1c","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":850,"y":180,"wires":[["571dd001.be7348"]]},{"id":"571dd001.be7348","type":"function","z":"74c872a1.76cb1c","name":"","func":"return[{payload:Number(msg.payload[0].taplinker[0].batteryStatus.replace(\"%\",\"\"))},{\n payload:msg.payload[0].taplinker[0].valveBroken},{\n payload:msg.payload[0].taplinker[0].noWater},{\n payload:msg.payload[0].taplinker[0].leakFlag\n }]","outputs":4,"noerr":0,"initialize":"","finalize":"","libs":[],"x":460,"y":380,"wires":[["2556a59.891d25a"],["ee023c5d.83f318"],["ee023c5d.83f318"],["ee023c5d.83f318"]]},{"id":"c3411375.6679d8","type":"json","z":"74c872a1.76cb1c","name":"","property":"payload","action":"","pretty":false,"x":730,"y":120,"wires":[["bc8bc1d4.4899c8","962a423c.9507"]]},{"id":"bc8bc1d4.4899c8","type":"function","z":"74c872a1.76cb1c","name":"","func":"if (msg.payload.status != null)\n return {payload:\"aktiv\"};\nif (msg.payload.status === null)\n return {payload:\"gestoppt\"};","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":880,"y":80,"wires":[["735dcdd3.0514e4"]]},{"id":"2556a59.891d25a","type":"function","z":"74c872a1.76cb1c","name":"","func":"node.send({payload:{\"attribute\":{\"id\":9049,\"value\":msg.payload}}})","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":620,"y":360,"wires":[["2b1d717f.ce17a6"]]},{"id":"ee023c5d.83f318","type":"function","z":"74c872a1.76cb1c","name":"alarm/ failure","func":"if (msg.payload === true)\n return {payload:{\"attribute\":{\"id\":9048,\"value\":1}}};\nif (msg.payload === false)\n return {payload:{\"attribute\":{\"id\":9048,\"value\":0}}};","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":630,"y":400,"wires":[["df9bc3a4.3a4c7"]]},{"id":"df9bc3a4.3a4c7","type":"rbe","z":"74c872a1.76cb1c","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":770,"y":360,"wires":[["2b1d717f.ce17a6"]]},{"id":"7f88321f.a7c224","type":"json","z":"74c872a1.76cb1c","name":"","property":"payload","action":"","pretty":false,"x":730,"y":240,"wires":[[]]},{"id":"962a423c.9507","type":"function","z":"74c872a1.76cb1c","name":"","func":"node.send({payload:{\"attribute\":{\"id\":9046,\"value\":Number(msg.payload.status.vol)}}})\nnode.send({payload:{\"attribute\":{\"id\":9045,\"value\":Number(msg.payload.status.vel)}}})\nnode.send({payload:{\"attribute\":{\"id\":9051,\"value\":Number(msg.payload.status.onDuration)}}})\nnode.send({payload:{\"attribute\":{\"id\":9042,\"value\":Number(msg.payload.status.total)}}})\nnode.send({payload:{\"attribute\":{\"id\":9043,\"value\":Number(msg.payload.status.ecoOn)}}})\nnode.send({payload:{\"attribute\":{\"id\":9044,\"value\":Number(msg.payload.status.ecoOff)}}})\nnode.send({payload:{\"attribute\":{\"id\":9052,\"value\":Number(msg.payload.status.total)}}})","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":880,"y":120,"wires":[["2b1d717f.ce17a6"]]}]
Wichtig bei der Steuerung:
Weil die API neue Befehle erst nach 15 s wieder annimmt, muss man zwischen den Schaltaktionen eine kleine Pause einlegen… 