From 06b374db5ca0de7fbace2360c375371bd1d9f1de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=2E=20=C3=81rkosi=20R=C3=B3bert?= Date: Thu, 23 Feb 2023 02:31:59 +0100 Subject: [PATCH] Documentation for `kuntze` component (#2411) --- components/kuntze.rst | 88 ++++++++++++++++++++++++++++++++++++++++++ images/kuntze.jpg | Bin 0 -> 17084 bytes 2 files changed, 88 insertions(+) create mode 100644 components/kuntze.rst create mode 100644 images/kuntze.jpg diff --git a/components/kuntze.rst b/components/kuntze.rst new file mode 100644 index 000000000..d204b8671 --- /dev/null +++ b/components/kuntze.rst @@ -0,0 +1,88 @@ +Kuntze pool monitor +=================== + +.. seo:: + :description: Instructions for setting up Kuntze pool monitor in ESPHome. + :image: kuntze.jpg + +The ``kuntze`` component allows you to integrate the Kuntze water measurement +instrument in ESPHome. It uses :ref:`UART ` (ModBUS) for communication. + +Once configured you can use sensors as described below for your projects. + + +.. figure:: ../images/kuntze.jpg + :align: center + + Kuntze Neon® Multi instrument + +Overview +-------- + +Kuntze devices have an RS485 (ModBUS RTU) communication port. Please see the +Kuntze papers for the pinout of the RS485 connector on your unit. ModBUS line +has to be terminated properly (with a ``120Ω`` resistor), and since this is likely +your only unit connected to ESPHome, you should activate bus termination in the +Network menu (this component doesn't support multiple Kuntze devices on the same +bus). ModBUS address should remain at factory default value. + +The device communicates at ``19200`` baud ``8E1``. To connect to ESPHome, an RS485 +transceiver is needed. Choose a type which does not need a trigger to send and +receive data, for example: + +.. figure:: ../images/rs485.jpg + +The controller connects to the UART of the MCU. For ESP32 GPIO `16` to `TXD` and `17` +to RXD are the default ones but any other pins can be used as well. 3.3V to VCC and GND to GND. + +.. warning:: + + If you are using the :doc:`logger` make sure you are not using the same pins for it or otherwise disable the UART + logging with the ``baud_rate: 0`` option. + +Component +--------- + +A configured modbus component is optional. It will be automatically created. + +.. code-block:: yaml + + # Example configuration entry + uart: + - id: uart_bus + tx_pin: GPIO16 + rx_pin: GPIO17 + baud_rate: 19600 + parity: EVEN + + sensor: + - platform: kuntze + id: my_kuntze + ph: + id: ph + temperature: + id: temperature + + +Configuration variables: + +- **ph**: Measured pH value +- **temperature**: Measured temperature value +- **dis1**: Measured DIS 1 value +- **dis2**: Measured DIS 2 value +- **redox**: Measured Redox value +- **ec**: Measured EC value +- **oci**: Measured OCI value + + +All sensors are *Optional* and support all other options from :ref:`Sensor `. + +See Also +-------- + +- :ref:`uart` +- :doc:`logger` +- :ref:`Sensor ` +- `Kuntze manuals `__ +- `Communication protocol `__ +- :ghedit:`Edit` diff --git a/images/kuntze.jpg b/images/kuntze.jpg new file mode 100644 index 0000000000000000000000000000000000000000..29824aaaeec1ef73fbe85b00bb76a60dc1f17c94 GIT binary patch literal 17084 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 literal 0 HcmV?d00001