From 52b2e857ea8a7667f505d85194b07a2a2fee7e7a Mon Sep 17 00:00:00 2001 From: Fabian Date: Tue, 21 Feb 2023 22:49:15 +0100 Subject: [PATCH] Add Mopeka standard to next docs. (#2624) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Your Name Co-authored-by: H. Árkosi Róbert Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com> --- components/sensor/images/mopeka_std_check.jpg | Bin 0 -> 6507 bytes components/sensor/mopeka_pro_check.rst | 6 +- components/sensor/mopeka_std_check.rst | 150 ++++++++++++++++++ images/mopeka_std_check.jpg | Bin 0 -> 6507 bytes index.rst | 1 + 5 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 components/sensor/images/mopeka_std_check.jpg create mode 100644 components/sensor/mopeka_std_check.rst create mode 100644 images/mopeka_std_check.jpg diff --git a/components/sensor/images/mopeka_std_check.jpg b/components/sensor/images/mopeka_std_check.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6619507f252e37a4e5be8782595a937699acbf02 GIT binary patch literal 6507 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 UB9JkDxcL`. + +- **distance** (*Optional*): The raw distance/depth of the liquid for the sensor in mm. + + - All options from :ref:`Sensor `. + +- **temperature** (*Optional*): The information for the temperature sensor. + This temperature is on the sensor and is not calibrated to ambient temperature. + + - All options from :ref:`Sensor `. + +- **battery_level** (*Optional*): The information for the battery percentage + sensor. Sensor uses a standard CR2032 battery. + + - All options from :ref:`Sensor `. + +Tank Types +---------- + +Currently supported Tank types are: + +- ``NORTH_AMERICA_20LB_VERTICAL`` - 20 LB vertical tank +- ``NORTH_AMERICA_30LB_VERTICAL`` - 30 LB vertical tank +- ``NORTH_AMERICA_40LB_VERTICAL`` - 40 LB vertical tank +- ``EUROPE_6KG`` - 6kg vertical tank +- ``EUROPE_11KG`` - 11kg vertical tank +- ``EUROPE_14KG`` - 14kg vertical tank +- ``CUSTOM`` - Allows you to define your own full and empty points + +Setting Up Devices +------------------ + +To set up Mopeka Standard Check devices you first need to find their MAC Address so that +ESPHome can identify them. So first, create a simple configuration with the ``esp32_ble_tracker`` +and the ``mopeka_ble`` component like so: + +.. code-block:: yaml + + esp32_ble_tracker: + + mopeka_ble: + +After uploading, the ESP32 will immediately try to scan for BLE devices. For Mopeka Standard devices you must press and hold the green sync button for it to be identified. +Or alternativly set the configuration flag ``show_sensors_without_sync: true`` to see all devices. +For all sensors found the ``mopeka_ble`` component will print a message like this one: + +.. code:: + + [20:43:26][I][mopeka_ble:056]: MOPEKA STD (CC2540) SENSOR FOUND: D3:75:F2:DC:16:91 + +Then just copy the address (``D3:75:F2:DC:16:91``) into a new +``sensor.mopeka_std_check`` platform entry like in the configuration example at the top. + +.. note:: + + The ESPHome Mopeka Standard Check BLE integration listens passively to packets the Mopeka device sends by itself. + ESPHome therefore has no impact on the battery life of the device. + +See Also +-------- + +- :doc:`/components/esp32_ble_tracker` +- :doc:`/components/sensor/index` +- :apiref:`mopeka_std_check/mopeka_std_check.h` +- :ghedit:`Edit` diff --git a/images/mopeka_std_check.jpg b/images/mopeka_std_check.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6619507f252e37a4e5be8782595a937699acbf02 GIT binary patch literal 6507 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 UB9JkDxcL