LinknLink (eTHS2 & eRemote) Temperature and Humidity into HA (Bluetooth / Modbus)

Introduction

I bought these devices and was struggling to integrate into HA. I reached out to LinknLink via their Facebook Page. The response was instant and a very helpful Australian based tech support. They rapidly modified the Mobile App with multiple versions to get my devices running in HA with Modbus.

I originally integrated the eTHS2 sensors via a HA modbus sensor following this LinknLink BLE sensor: modbus - HA guide. This did work immediately but did not seem to be surviving HA Host Machine Reboots. The LinknLink eRemote refuses to let go of the connection internally (thinks it is still connected) unless power cycling the eRemote.

I have to commend LinknLink on their commitment to ensuring their devices work with Home Assistant

This flow will allow integration of the following:

  • LinknLink eTHS2 (Bluetooth Temperature, Humidity, Battery & Status)
  • LinknLink eRemote (Bluetooth Hub for eTHS - WIFI-Modbus into HA)
  • Survives HA Host Machine Reboots.

Confirmed working distance of 15m through two walls, between the eRemote and the eTHS2. Seems to be very solid connection with two months of testing and very low power comsumption. Even works inside the fridge.

image

Hardware Requirements

image

Home Assistant Requirements

NodeRED Requirements

eRemote Setup

1. Add your eRemote to your LinknLink App

  • Follow instrcutions in App

2. Update firmware of eRemote

3. Connect your eTHS2 sensors to eRemote

  • Follow instructions in App

4. Setup Modbus TCP

  • Go to the device page, select the eRemote connected to your eTHS devices
  • Click the "..." → "Modbus" to set a fixed IP address (Host) for eRemote.

image

image

image

Configure NodeRED Flow

1. Update the Modbus-Read Nodes with your Server with the fixed IP address (Host) of your eRemote

image

image

2. Update the Sensor Nodes, ensure your Home Assistant Server is added

image

image.

3. All should work and survive, Host Reboots, Node Red Restarts and HA Restarts

  • Note the Poll times have been reduced to prime numbers (61, 67, 73 & 83) to prevent overloading the eRemote. You can adjust these to your liking larger numbers will reduce your database size. LinknLink defaults (30, 35, 40, 60)
  • According to LinknLink each eRemote will support 10 eTHS2 devices

image

[{"id":"9b641ded88436097","type":"group","z":"55edb171192a3946","name":"Roof eTHS connected to LinknLink eRemote via Bluetooth (LinknLink eRemote set to Modbus Mode)","style":{"label":true},"nodes":["modbus-roof-temp","modbus-roof-temp-scale","debug-temp","modbus-roof-humidity","modbus-roof-humidity-scale","debug-humidity","modbus-roof-battery","modbus-roof-battery-scale","debug-battery","modbus-roof-status","modbus-roof-status-pass","debug-status","3401f687daf26256","c0768e8129261bac","65900a3da33dba8c"],"x":174,"y":59,"w":1072,"h":282},{"id":"modbus-roof-temp","type":"modbus-read","z":"55edb171192a3946","g":"9b641ded88436097","name":"Roof Temp","topic":"eths_roof_temp","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"1","dataType":"HoldingRegister","adr":"3034","quantity":"1","rate":"61","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"4ce06ac65b87c8a7","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":280,"y":120,"wires":[["modbus-roof-temp-scale"],[]]},{"id":"modbus-roof-temp-scale","type":"function","z":"55edb171192a3946","g":"9b641ded88436097","name":"Scale Temp (x0.01)","func":"let raw = msg.payload[0];\nmsg.payload = (raw * 0.01).toFixed(1);\nmsg.topic = \"roof_temperature\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":120,"wires":[["debug-temp","3401f687daf26256"]]},{"id":"debug-temp","type":"debug","z":"55edb171192a3946","g":"9b641ded88436097","name":"Roof Temp Debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":790,"y":100,"wires":[]},{"id":"modbus-roof-humidity","type":"modbus-read","z":"55edb171192a3946","g":"9b641ded88436097","name":"Roof Humidity","topic":"eths_roof_humidity","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"1","dataType":"HoldingRegister","adr":"3035","quantity":"1","rate":"67","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"4ce06ac65b87c8a7","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":290,"y":180,"wires":[["modbus-roof-humidity-scale"],[]]},{"id":"modbus-roof-humidity-scale","type":"function","z":"55edb171192a3946","g":"9b641ded88436097","name":"Scale Humidity (x0.01)","func":"let raw = msg.payload[0];\nmsg.payload = (raw * 0.01).toFixed(1);\nmsg.topic = \"roof_humidity\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":540,"y":180,"wires":[["debug-humidity","c0768e8129261bac"]]},{"id":"debug-humidity","type":"debug","z":"55edb171192a3946","g":"9b641ded88436097","name":"Roof Humidity Debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":800,"y":160,"wires":[]},{"id":"modbus-roof-battery","type":"modbus-read","z":"55edb171192a3946","g":"9b641ded88436097","name":"Roof Battery","topic":"eths_roof_battery","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"1","dataType":"HoldingRegister","adr":"3036","quantity":"1","rate":"73","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"4ce06ac65b87c8a7","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":290,"y":240,"wires":[["modbus-roof-battery-scale"],[]]},{"id":"modbus-roof-battery-scale","type":"function","z":"55edb171192a3946","g":"9b641ded88436097","name":"Scale Battery (%)","func":"msg.payload = msg.payload[0];\nmsg.topic = \"roof_battery\";\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":240,"wires":[["debug-battery","65900a3da33dba8c"]]},{"id":"debug-battery","type":"debug","z":"55edb171192a3946","g":"9b641ded88436097","name":"Roof Battery Debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":790,"y":220,"wires":[]},{"id":"modbus-roof-status","type":"modbus-read","z":"55edb171192a3946","g":"9b641ded88436097","name":"Roof Status","topic":"eths_roof_status","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"1","dataType":"HoldingRegister","adr":"3038","quantity":"1","rate":"83","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"4ce06ac65b87c8a7","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":290,"y":300,"wires":[["modbus-roof-status-pass"],[]]},{"id":"modbus-roof-status-pass","type":"function","z":"55edb171192a3946","g":"9b641ded88436097","name":"Pass Status (raw)","func":"const raw = msg.payload[0];\nmsg.payload = raw === 1 ? \"Online\" : \"Offline\";\nmsg.topic = \"roof_status\";\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":300,"wires":[["debug-status"]]},{"id":"debug-status","type":"debug","z":"55edb171192a3946","g":"9b641ded88436097","name":"Roof Status Debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":790,"y":300,"wires":[]},{"id":"3401f687daf26256","type":"ha-sensor","z":"55edb171192a3946","g":"9b641ded88436097","name":"Roof eTHS2 Temperature","entityConfig":"2c13bea117a1602a","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":1110,"y":120,"wires":[[]],"server":"Select_Your_Server"},{"id":"c0768e8129261bac","type":"ha-sensor","z":"55edb171192a3946","g":"9b641ded88436097","name":"Roof eTHS2 Humidity","entityConfig":"47ae5125180a4a73","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":1100,"y":180,"wires":[[]],"server":"Select_Your_Server"},{"id":"65900a3da33dba8c","type":"ha-sensor","z":"55edb171192a3946","g":"9b641ded88436097","name":"Roof eTHS2 Battery","entityConfig":"2328881ea1150f55","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":1100,"y":240,"wires":[[]],"server":"Select_Your_Server"},{"id":"4ce06ac65b87c8a7","type":"modbus-client","name":"LinknLink eTHs2","clienttype":"tcp","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"failureLogEnabled":true,"tcpHost":"192.168.1.206","tcpPort":502,"tcpType":"DEFAULT","serialPort":"/dev/ttyUSB","serialType":"RTU-BUFFERD","serialBaudrate":9600,"serialDatabits":8,"serialStopbits":1,"serialParity":"none","serialConnectionDelay":100,"serialAsciiResponseStartDelimiter":"0x3A","unit_id":1,"commandDelay":1,"clientTimeout":"10000","reconnectOnTimeout":true,"reconnectTimeout":2000,"parallelUnitIdsAllowed":true,"showErrors":false,"showWarnings":true,"showLogs":true},{"id":"2c13bea117a1602a","type":"ha-entity-config","server":"Select_Your_Server","deviceConfig":"8d3b2701016f1e78","name":"Roof eTHS2 Temperature","version":6,"entityType":"sensor","haConfig":[{"property":"name","value":"Roof eTHS2 Temperature"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"temperature"},{"property":"unit_of_measurement","value":"°C"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"47ae5125180a4a73","type":"ha-entity-config","server":"Select_Your_Server","deviceConfig":"e6a0db5fbe934bed","name":"Roof eTHS2 Humidity","version":6,"entityType":"sensor","haConfig":[{"property":"name","value":"Roof eTHS2 Humidity"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"humidity"},{"property":"unit_of_measurement","value":"%"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"2328881ea1150f55","type":"ha-entity-config","server":"Select_Your_Server","deviceConfig":"b5cfb114bb0d0bba","name":"Roof eTHS2 Battery","version":6,"entityType":"sensor","haConfig":[{"property":"name","value":"Roof eTHS2 Battery"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"battery"},{"property":"unit_of_measurement","value":"%"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"8d3b2701016f1e78","type":"ha-device-config","name":"Roof eTHS2 Temperature","hwVersion":"","manufacturer":"Node-RED","model":"LinknLink","swVersion":"","server":"Select_Your_Server"},{"id":"e6a0db5fbe934bed","type":"ha-device-config","name":"Roof eTHS2 Humidity","hwVersion":"","manufacturer":"Node-RED","model":"LinknLink","swVersion":"","server":"Select_Your_Server"},{"id":"b5cfb114bb0d0bba","type":"ha-device-config","name":"Roof eTHS2 Battery","hwVersion":"","manufacturer":"Node-RED","model":"LinknLink","swVersion":"","server":"Select_Your_Server"},{"id":"bbad43747554b934","type":"group","z":"55edb171192a3946","name":"Master Bedroom eTHS connected to LinknLink eRemote via Bluetooth (LinknLink eRemote set to Modbus Mode)","style":{"label":true},"nodes":["bedroom-temp","bedroom-temp-scale","debug-bedroom-temp","bedroom-humidity","bedroom-humidity-scale","debug-bedroom-humidity","bedroom-battery","bedroom-battery-scale","debug-bedroom-battery","bedroom-status","bedroom-status-pass","debug-bedroom-status","b8499bbc2bd404dc","d5f111ba46f4a85c","6f6f7b65cc2aef25"],"x":174,"y":399,"w":1152,"h":282},{"id":"bedroom-temp","type":"modbus-read","z":"55edb171192a3946","g":"bbad43747554b934","name":"Bedroom Temp","topic":"eths_bedroom_temp","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"1","dataType":"HoldingRegister","adr":"3008","quantity":"1","rate":"61","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"4ce06ac65b87c8a7","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":300,"y":460,"wires":[["bedroom-temp-scale"],[]]},{"id":"bedroom-temp-scale","type":"function","z":"55edb171192a3946","g":"bbad43747554b934","name":"Scale Bedroom Temp","func":"msg.payload = (msg.payload[0] * 0.01).toFixed(1);\nmsg.topic = \"bedroom_temperature\";\nreturn msg;","outputs":1,"noerr":0,"x":540,"y":460,"wires":[["debug-bedroom-temp","b8499bbc2bd404dc"]]},{"id":"debug-bedroom-temp","type":"debug","z":"55edb171192a3946","g":"bbad43747554b934","name":"Bedroom Temp Debug","active":true,"tosidebar":true,"complete":"true","targetType":"full","x":800,"y":440,"wires":[]},{"id":"bedroom-humidity","type":"modbus-read","z":"55edb171192a3946","g":"bbad43747554b934","name":"Bedroom Humidity","topic":"eths_bedroom_humidity","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"1","dataType":"HoldingRegister","adr":"3009","quantity":"1","rate":"67","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"4ce06ac65b87c8a7","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":310,"y":520,"wires":[["bedroom-humidity-scale"],[]]},{"id":"bedroom-humidity-scale","type":"function","z":"55edb171192a3946","g":"bbad43747554b934","name":"Scale Bedroom Humidity","func":"msg.payload = (msg.payload[0] * 0.01).toFixed(1);\nmsg.topic = \"bedroom_humidity\";\nreturn msg;","outputs":1,"noerr":0,"x":550,"y":520,"wires":[["debug-bedroom-humidity","d5f111ba46f4a85c"]]},{"id":"debug-bedroom-humidity","type":"debug","z":"55edb171192a3946","g":"bbad43747554b934","name":"Bedroom Humidity Debug","active":true,"tosidebar":true,"complete":"true","targetType":"full","x":810,"y":500,"wires":[]},{"id":"bedroom-battery","type":"modbus-read","z":"55edb171192a3946","g":"bbad43747554b934","name":"Bedroom Battery","topic":"eths_bedroom_battery","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"1","dataType":"HoldingRegister","adr":"3010","quantity":"1","rate":"73","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"4ce06ac65b87c8a7","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":300,"y":580,"wires":[["bedroom-battery-scale"],[]]},{"id":"bedroom-battery-scale","type":"function","z":"55edb171192a3946","g":"bbad43747554b934","name":"Scale Bedroom Battery","func":"msg.payload = msg.payload[0];\nmsg.topic = \"bedroom_battery\";\nreturn msg;","outputs":1,"noerr":0,"x":550,"y":580,"wires":[["debug-bedroom-battery","6f6f7b65cc2aef25"]]},{"id":"debug-bedroom-battery","type":"debug","z":"55edb171192a3946","g":"bbad43747554b934","name":"Bedroom Battery Debug","active":true,"tosidebar":true,"complete":"true","targetType":"full","x":810,"y":560,"wires":[]},{"id":"bedroom-status","type":"modbus-read","z":"55edb171192a3946","g":"bbad43747554b934","name":"Bedroom Status","topic":"eths_bedroom_status","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"1","dataType":"HoldingRegister","adr":"3012","quantity":"1","rate":"83","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"4ce06ac65b87c8a7","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":300,"y":640,"wires":[["bedroom-status-pass"],[]]},{"id":"bedroom-status-pass","type":"function","z":"55edb171192a3946","g":"bbad43747554b934","name":"Pass Bedroom Status","func":"const raw = msg.payload[0];\nmsg.payload = raw === 1 ? \"Online\" : \"Offline\";\nmsg.topic = \"bedroom_status\";\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":540,"y":640,"wires":[["debug-bedroom-status"]]},{"id":"debug-bedroom-status","type":"debug","z":"55edb171192a3946","g":"bbad43747554b934","name":"Bedroom Status Debug","active":true,"tosidebar":true,"complete":"true","targetType":"full","x":810,"y":640,"wires":[]},{"id":"b8499bbc2bd404dc","type":"ha-sensor","z":"55edb171192a3946","g":"bbad43747554b934","name":"Master Bedroom eTHS2 Temperature","entityConfig":"c5b8f83b0bb4b2a2","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":1150,"y":460,"wires":[[]],"server":"Select_Your_Server"},{"id":"d5f111ba46f4a85c","type":"ha-sensor","z":"55edb171192a3946","g":"bbad43747554b934","name":"Master Bedroom eTHS2 Humidity","entityConfig":"ac5fc97330a9cc8d","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":1140,"y":520,"wires":[[]],"server":"Select_Your_Server"},{"id":"6f6f7b65cc2aef25","type":"ha-sensor","z":"55edb171192a3946","g":"bbad43747554b934","name":"Master Bedroom eTHS2 Battery","entityConfig":"6704c22b951eafc9","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":1130,"y":580,"wires":[[]],"server":"Select_Your_Server"},{"id":"c5b8f83b0bb4b2a2","type":"ha-entity-config","server":"Select_Your_Server","deviceConfig":"e8295067a0c373be","name":"Master Bedroom eTHS2 Temperature","version":6,"entityType":"sensor","haConfig":[{"property":"name","value":"Master Bedroom eTHS2 Temperature"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"temperature"},{"property":"unit_of_measurement","value":"°C"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"ac5fc97330a9cc8d","type":"ha-entity-config","server":"Select_Your_Server","deviceConfig":"fb87a3e7a48f8ae5","name":"Master Bedroom eTHS2 Humidity","version":6,"entityType":"sensor","haConfig":[{"property":"name","value":"Master Bedroom eTHS2 Humidity"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"humidity"},{"property":"unit_of_measurement","value":"%"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"6704c22b951eafc9","type":"ha-entity-config","server":"Select_Your_Server","deviceConfig":"985b283ea45cbe08","name":"Master Bedroom eTHS2 Battery","version":6,"entityType":"sensor","haConfig":[{"property":"name","value":"Master Bedroom eTHS2 Battery"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"battery"},{"property":"unit_of_measurement","value":"%"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"e8295067a0c373be","type":"ha-device-config","name":"Master Bedroom eTHS2 Temperature","hwVersion":"","manufacturer":"Node-RED","model":"LinknLink","swVersion":"","server":"Select_Your_Server"},{"id":"fb87a3e7a48f8ae5","type":"ha-device-config","name":"Master Bedroom eTHS2 Humidity","hwVersion":"","manufacturer":"Node-RED","model":"LinknLink","swVersion":"","server":"Select_Your_Server"},{"id":"985b283ea45cbe08","type":"ha-device-config","name":"Master Bedroom eTHS2 Battery","hwVersion":"","manufacturer":"Node-RED","model":"LinknLink","swVersion":"","server":"Select_Your_Server"},{"id":"9630aa4c88aa2451","type":"group","z":"55edb171192a3946","name":"Master Bathroom eTHS connected to LinknLink eRemote via Bluetooth (LinknLink eRemote set to Modbus Mode)","style":{"label":true},"nodes":["bathroom-temp","bathroom-temp-scale","debug-bathroom-temp","bathroom-humidity","bathroom-humidity-scale","debug-bathroom-humidity","bathroom-battery","bathroom-battery-scale","debug-bathroom-battery","bathroom-status","bathroom-status-pass","debug-bathroom-status","48e2f7950eef36d6","f4fad04c0e2ef95a","ff86afc264de47e7"],"x":174,"y":739,"w":1152,"h":282},{"id":"bathroom-temp","type":"modbus-read","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Bathroom Temp","topic":"eths_bathroom_temp","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"1","dataType":"HoldingRegister","adr":"3021","quantity":"1","rate":"61","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"4ce06ac65b87c8a7","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":300,"y":800,"wires":[["bathroom-temp-scale"],[]]},{"id":"bathroom-temp-scale","type":"function","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Scale Bathroom Temp","func":"msg.payload = (msg.payload[0] * 0.01).toFixed(1);\nmsg.topic = \"bathroom_temperature\";\nreturn msg;","outputs":1,"noerr":0,"x":540,"y":800,"wires":[["debug-bathroom-temp","48e2f7950eef36d6"]]},{"id":"debug-bathroom-temp","type":"debug","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Bathroom Temp Debug","active":true,"tosidebar":true,"complete":"true","targetType":"full","x":810,"y":780,"wires":[]},{"id":"bathroom-humidity","type":"modbus-read","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Bathroom Humidity","topic":"eths_bathroom_humidity","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"1","dataType":"HoldingRegister","adr":"3022","quantity":"1","rate":"67","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"4ce06ac65b87c8a7","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":310,"y":860,"wires":[["bathroom-humidity-scale"],[]]},{"id":"bathroom-humidity-scale","type":"function","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Scale Bathroom Humidity","func":"msg.payload = (msg.payload[0] * 0.01).toFixed(1);\nmsg.topic = \"bathroom_humidity\";\nreturn msg;","outputs":1,"noerr":0,"x":550,"y":860,"wires":[["debug-bathroom-humidity","f4fad04c0e2ef95a"]]},{"id":"debug-bathroom-humidity","type":"debug","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Bathroom Humidity Debug","active":true,"tosidebar":true,"complete":"true","targetType":"full","x":820,"y":840,"wires":[]},{"id":"bathroom-battery","type":"modbus-read","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Bathroom Battery","topic":"eths_bathroom_battery","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"1","dataType":"HoldingRegister","adr":"3023","quantity":"1","rate":"73","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"4ce06ac65b87c8a7","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":300,"y":920,"wires":[["bathroom-battery-scale"],[]]},{"id":"bathroom-battery-scale","type":"function","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Scale Bathroom Battery","func":"msg.payload = msg.payload[0];\nmsg.topic = \"bathroom_battery\";\nreturn msg;","outputs":1,"noerr":0,"x":550,"y":920,"wires":[["debug-bathroom-battery","ff86afc264de47e7"]]},{"id":"debug-bathroom-battery","type":"debug","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Bathroom Battery Debug","active":true,"tosidebar":true,"complete":"true","targetType":"full","x":810,"y":900,"wires":[]},{"id":"bathroom-status","type":"modbus-read","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Bathroom Status","topic":"eths_bathroom_status","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"showWarnings":true,"unitid":"1","dataType":"HoldingRegister","adr":"3025","quantity":"1","rate":"83","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"4ce06ac65b87c8a7","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":300,"y":980,"wires":[["bathroom-status-pass"],[]]},{"id":"bathroom-status-pass","type":"function","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Pass Bathroom Status","func":"const raw = msg.payload[0];\nmsg.payload = raw === 1 ? \"Online\" : \"Offline\";\nmsg.topic = \"bathroom_status\";\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":540,"y":980,"wires":[["debug-bathroom-status"]]},{"id":"debug-bathroom-status","type":"debug","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Bathroom Status Debug","active":true,"tosidebar":true,"complete":"true","targetType":"full","x":810,"y":980,"wires":[]},{"id":"48e2f7950eef36d6","type":"ha-sensor","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Master Bathroom eTHS2 Temperature","entityConfig":"33a8cdfb1cfa5d89","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":1150,"y":800,"wires":[[]],"server":"Select_Your_Server"},{"id":"f4fad04c0e2ef95a","type":"ha-sensor","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Master Bathroom eTHS2 Humidity","entityConfig":"830433c92f7eb4df","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":1140,"y":860,"wires":[[]],"server":"Select_Your_Server"},{"id":"ff86afc264de47e7","type":"ha-sensor","z":"55edb171192a3946","g":"9630aa4c88aa2451","name":"Master Bathroom eTHS2 Battery","entityConfig":"38fbab412d2cf611","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":1130,"y":920,"wires":[[]],"server":"Select_Your_Server"},{"id":"33a8cdfb1cfa5d89","type":"ha-entity-config","server":"Select_Your_Server","deviceConfig":"0b477f82df94cbfd","name":"Master Bathroom eTHS2 Temperature","version":6,"entityType":"sensor","haConfig":[{"property":"name","value":"Master Bathroom eTHS2 Temperature"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"temperature"},{"property":"unit_of_measurement","value":"°C"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"830433c92f7eb4df","type":"ha-entity-config","server":"Select_Your_Server","deviceConfig":"df65d96a815dec3f","name":"Master Bathroom eTHS2 Humidity","version":6,"entityType":"sensor","haConfig":[{"property":"name","value":"Master Bathroom eTHS2 Humidity"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"humidity"},{"property":"unit_of_measurement","value":"%"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"38fbab412d2cf611","type":"ha-entity-config","server":"Select_Your_Server","deviceConfig":"69e9f9203cd34aef","name":"Master Bathroom eTHS2 Battery","version":6,"entityType":"sensor","haConfig":[{"property":"name","value":"Master Bathroom eTHS2 Battery"},{"property":"icon","value":""},{"property":"entity_picture","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"battery"},{"property":"unit_of_measurement","value":"%"},{"property":"state_class","value":"measurement"}],"resend":false,"debugEnabled":false},{"id":"0b477f82df94cbfd","type":"ha-device-config","name":"Master Bathroom eTHS2 Temperature","hwVersion":"","manufacturer":"Node-RED","model":"LinknLink","swVersion":"","server":"Select_Your_Server"},{"id":"df65d96a815dec3f","type":"ha-device-config","name":"Master Bathroom eTHS2 Humidity","hwVersion":"","manufacturer":"Node-RED","model":"LinknLink","swVersion":"","server":"Select_Your_Server"},{"id":"69e9f9203cd34aef","type":"ha-device-config","name":"Master Bathroom eTHS2 Battery","hwVersion":"","manufacturer":"Node-RED","model":"LinknLink","swVersion":"","server":"Select_Your_Server"}]

Flow Info

Created 1 month, 3 weeks ago
Rating: 5 1

Actions

Rate:

Node Types

Core
  • debug (x12)
  • function (x12)
Other
  • group (x3)
  • ha-device-config (x9)
  • ha-entity-config (x9)
  • ha-sensor (x9)
  • modbus-client (x1)
  • modbus-read (x12)

Tags

  • modbus
  • linknlink
  • home
  • assistant
  • homeassistant
  • eths2
  • eremote
  • bluetooth
  • temperature
  • humidity
  • hygrometer
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option