{"id":104,"date":"2026-01-24T00:56:07","date_gmt":"2026-01-23T11:56:07","guid":{"rendered":"https:\/\/rcbeacon.nz\/?page_id=104"},"modified":"2026-01-27T13:14:08","modified_gmt":"2026-01-27T00:14:08","slug":"weewx","status":"publish","type":"page","link":"https:\/\/rcbeacon.nz\/index.php\/weewx\/","title":{"rendered":"Weewx"},"content":{"rendered":"<p>To get Weewx to read Modbus sensors using a EW11 (RS485-wifi), Weewx-ModbusTcp and pymodbus.<br \/>\nAs at 26-Jan-2026 I had to make a fix to Weewx-ModbusTcp. Replace &#8220;device_id&#8221; with &#8220;slave&#8221; at line 294.<\/p>\n<pre style=\"background-color: #e3e3e3;\"><code style=\"background-color: #e3e3e3;\">\r\n             #  rr_read = self.read_holding_registers(address=register, count=length, device_id=slave_id)\r\n                rr_read = self.read_holding_registers(address=register, count=length, slave=slave_id)\r\n<\/code><\/pre>\n<p>To test a Modbus temperature\/humidity sensor connected to a EW11 wifi-to-RS48 adapter.<br \/>\nThis reads the first 2 holding registers from the Modbus sensor with address 4.\u00a0 To run it:\u00a0 $ sudo python3 pymodbus_modbus-temp-example.py<\/p>\n<p>The yellow LED on the EW11 RJ45 connector indicates activity.\u00a0 The green LED indicates wifi activity.<\/p>\n<pre style=\"background-color: #e3e3e3;\"><code style=\"background-color: #e3e3e3;\">\r\n#!\/usr\/bin\/env python3\r\n\"\"\"Read temperature from a Modbus sensor.\"\"\"\r\n\r\nfrom pymodbus.client import ModbusTcpClient\r\n\r\ndef read_temperature():\r\n    # Connect to device\r\n    client = ModbusTcpClient('192.168.1.90', port=502)\r\n\r\n    if client.connect():\r\n        print(\"\u2713 Connected to device\")\r\n\r\n        # Read temperature (assuming it's at register 0)\r\n        # result = client.read_holding_registers(address=0, count=2) - original example missing slave id.\r\n        result = client.read_holding_registers(address=0, count=2, slave=4)\r\n\r\n        if not result.isError():\r\n            # Convert register value to temperature\r\n            # Many devices store temperature * 10\r\n            temperature = result.registers[0] \/ 100.0\r\n            print(f\"Temperature: {temperature}\u00b0C\")\r\n            humidity = result.registers[1] \/ 10.0\r\n            print(f\"Humidity: {humidity}%\")\r\n        else:\r\n            print(f\"Error: {result}\")\r\n\r\n        client.close()\r\n    else:\r\n        print(\"\u2717 Failed to connect\")\r\n\r\nif __name__ == \"__main__\":\r\n    read_temperature()\r\n<\/code><\/pre>\n<p>.<\/p>\n<pre style=\"background-color: #d9cccc;\"><code style=\"background-color: #d9cccc;\">\r\n.\r\n<\/code><\/pre>\n<p>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To get Weewx to read Modbus sensors using a EW11 (RS485-wifi), Weewx-ModbusTcp and pymodbus. As at 26-Jan-2026 I had to make a fix to Weewx-ModbusTcp. Replace &#8220;device_id&#8221; with &#8220;slave&#8221; at line 294. # rr_read = self.read_holding_registers(address=register, count=length, device_id=slave_id) rr_read = self.read_holding_registers(address=register, count=length, slave=slave_id) To test a Modbus temperature\/humidity sensor connected to a EW11 wifi-to-RS48 adapter. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-104","page","type-page","status-publish","czr-hentry"],"_links":{"self":[{"href":"https:\/\/rcbeacon.nz\/index.php\/wp-json\/wp\/v2\/pages\/104","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rcbeacon.nz\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rcbeacon.nz\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rcbeacon.nz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rcbeacon.nz\/index.php\/wp-json\/wp\/v2\/comments?post=104"}],"version-history":[{"count":6,"href":"https:\/\/rcbeacon.nz\/index.php\/wp-json\/wp\/v2\/pages\/104\/revisions"}],"predecessor-version":[{"id":111,"href":"https:\/\/rcbeacon.nz\/index.php\/wp-json\/wp\/v2\/pages\/104\/revisions\/111"}],"wp:attachment":[{"href":"https:\/\/rcbeacon.nz\/index.php\/wp-json\/wp\/v2\/media?parent=104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}