update esppilight lib

content of the library is not filtered on 433mhz only
This commit is contained in:
Florian committed 2018-11-28 20:41:37 +01:00
1 parent a275e48ee1
commit 67dd7ac078
1030 files changed
+203335 -116

No files matched your search

@@ -0,0 +1,172 @@
.. |yes| image:: ../../../images/yes.png
.. |no| image:: ../../../images/no.png
.. role:: underline
:class: underline
+------------------+-------------+
| **Feature** | **Support** |
+------------------+-------------+
| Sending | |no| |
+------------------+-------------+
| Receiving | |yes| |
+------------------+-------------+
| Config | |yes| |
+------------------+-------------+
.. rubric:: Supported Brands
+------------------+--------------+
| **Brand** | **Protocol** |
+------------------+--------------+
| Alecto WSD17 | alecto_wsd17 |
+------------------+--------------+
.. rubric:: Sender Arguments
*None*
.. rubric:: Config
.. code-block:: json
:linenos:
{
"devices": {
"weather": {
"protocol": [ "alecto_wsd17" ],
"id": [{
"id": 100
}],
"temperature": 23.00
}
},
"gui": {
"weather": {
"name": "Weather Station",
"group": [ "Outside" ],
"media": [ "all" ]
}
}
}
+------------------+-----------------+
| **Option** | **Value** |
+------------------+-----------------+
| id | 0 - 9 |
+------------------+-----------------+
| temperature | -50 - 70 |
+------------------+-----------------+
.. rubric:: Optional Settings
:underline:`Device Settings`
+--------------------+-------------+------------+---------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+--------------------+-------------+------------+---------------------------+
| temperature-offset | 0 | number | Correct temperature value |
+--------------------+-------------+------------+---------------------------+
:underline:`GUI Settings`
+----------------------+-------------+------------+-----------------------------------------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+----------------------+-------------+------------+-----------------------------------------------------------+
| temperature-decimals | 2 | number | How many decimals the GUIs should display for temperature |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-humidity | 1 | 1 or 0 | Don't display the humidity value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-battery | 1 | 1 or 0 | Don't display the battery value |
+----------------------+-------------+------------+-----------------------------------------------------------+
.. rubric:: Comment
This weather station or just the sensor is available from several (mostly Chinese) suppliers on eBay or Alibaba. Description for device is usually like: “Digital Wireless Indoor/Outdoor Weather Station with 3 Remote Sensors”. The sensor can be identified by the option to choose from 3 different channels.
Please be aware that the ID of a sensor changes after you replace the batteries.
.. rubric:: Protocol
The protocol sends 74 pulses like:
.. code-block:: guess
540 1890 540 3780 540 1890 540 3780 540 3780 540 3780 540 3780 540 3780 540 1890 540 1890 540 3780 540 3780 540 3780 540 1890 540 1890 540 1890 540 1890 540 1890 540 1890 540 1890 540 3780 540 3780 540 1890 540 1890 540 4050 540 1890 540 4050 540 4050 540 1890 540 1890 540 4050 540 1890 540 3780 540 1890 540 3780 540 3780 540 9180
There first 8 pulses are the header and the last 2 pulses are the footer. These are meant to identify the pulses as genuine. We don't it for further processing. The next step is to transform this output into 36 groups of 2 pulses (and thereby dropping the footer pulses).
.. code-block:: guess
540 1890
540 3780
540 1890
540 3780
540 3780
540 3780
540 3780
540 3780
540 1890
540 1890
540 3780
540 3780
540 3780
540 1890
540 1890
540 1890
540 1890
540 1890
540 1890
540 1890
540 3780
540 3780
540 1890
540 1890
540 4050
540 1890
540 4050
540 4050
540 1890
540 1890
540 4050
540 1890
540 3780
540 1890
540 3780
540 3780
If we now look at carefully at these groups you can distinguish two types of groups:
#. ``540 1890``
#. ``540 3780``
So the first group is defined by a low 2nd, the second group has a high 2nd pulse. So we take either of these two pulses to define a 0 or a 1. In this case we say a high 2nd pulse means a 1 and a low 2nd pulse means a 0. We then get the following output:
.. code-block:: guess
010111110011000000011001011001010111
Each (group) of numbers has a specific meaning:
- Header 0 till 3
- ID: 4 till 11
- Battery: 12
- TX mode: 13
- Channel: 14 till 15
- Temperature: 16 till 27
- Humidity: 28 till 35
.. code-block:: guess
0101 11110011 0 0 00 000110010110 01010111
- The ID is defined as a binary number
- The Battery identifies the state of the battery
- The TX mode defines whether the signal was sent automatic or manual
- The Channel is defined as a binary number and specifies which channel the sensor uses
- The Temperature is defined as a binary number and represents the temperature
- The Humidity is defined as a binary number and represents the humidity
This protocol was created for pilight with the help of this thread: http://forum.pilight.org/Thread-Fully-Supported-No-brand-temp-humidity-sensor
@@ -0,0 +1,114 @@
.. |yes| image:: ../../../images/yes.png
.. |no| image:: ../../../images/no.png
.. role:: underline
:class: underline
+------------------+-------------+
| **Feature** | **Support** |
+------------------+-------------+
| Sending | |no| |
+------------------+-------------+
| Receiving | |yes| |
+------------------+-------------+
| Config | |yes| |
+------------------+-------------+
.. rubric:: Supported Brands
+------------------+------------------+
| **Brand** | **Protocol** |
+------------------+------------------+
| Alecto WX500 | alecto_wx500 |
+------------------+------------------+
| Auriol H13726 | auriol_h13726 |
+------------------+------------------+
| Hama EWS1500 | hama_ews1500 |
+------------------+------------------+
| Meteoscan W1XXX | meteoscan_w1XX |
+------------------+------------------+
| Balance RF-WS105 | balance_rf_ws105 |
+------------------+------------------+
.. rubric:: Sender Arguments
*None*
.. rubric:: Config
.. code-block:: json
:linenos:
{
"devices": {
"weather": {
"protocol": [ "alecto_wsd17" ],
"id": [{
"id": 100
}],
"temperature": 18.90,
"humidity": 41.00,
"windavg": 10.00,
"winddir": 90.00,
"windgust": 20.00,
"battery": 1
}
},
"gui": {
"weather": {
"name": "Weather Station",
"group": [ "Outside" ],
"media": [ "all" ]
}
}
}
+------------------+-----------------+
| **Option** | **Value** |
+------------------+-----------------+
| id | 0 - 9 |
+------------------+-----------------+
| temperature | -40 - 60 |
+------------------+-----------------+
| humidity | 10 - 99 |
+------------------+-----------------+
| windavg | 0 - 50 |
+------------------+-----------------+
| windavg | 0 - 359 |
+------------------+-----------------+
| windgust | 0 - 50 |
+------------------+-----------------+
.. rubric:: Optional Settings
:underline:`Device Settings`
+--------------------+-------------+------------+---------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+--------------------+-------------+------------+---------------------------+
| humidity-offset | 0 | number | Correct humidity value |
+--------------------+-------------+------------+---------------------------+
| temperature-offset | 0 | number | Correct temperature value |
+--------------------+-------------+------------+---------------------------+
:underline:`GUI Settings`
+----------------------+-------------+------------+-----------------------------------------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+----------------------+-------------+------------+-----------------------------------------------------------+
| temperature-decimals | 2 | number | How many decimals the GUIs should display for temperature |
+----------------------+-------------+------------+-----------------------------------------------------------+
| humidity-decimals | 2 | number | How many decimals the GUIs should display for humidity |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-humidity | 1 | 1 or 0 | Don't display the humidity value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-wind | 1 | 1 or 0 | Don't display the wind value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-battery | 1 | 1 or 0 | Don't display the battery value |
+----------------------+-------------+------------+-----------------------------------------------------------+
.. rubric:: Protocol
A good description on this protocol can be found in `this <http://wiki.pilight.org/auriol_protocol_v20.pdf>`_ PDF.
@@ -0,0 +1,205 @@
.. |yes| image:: ../../../images/yes.png
.. |no| image:: ../../../images/no.png
.. role:: underline
:class: underline
+------------------+-------------+
| **Feature** | **Support** |
+------------------+-------------+
| Sending | |no| |
+------------------+-------------+
| Receiving | |yes| |
+------------------+-------------+
| Config | |yes| |
+------------------+-------------+
.. rubric:: Supported Brands
+-----------------------+----------------+
| **Brand** | **Protocol** |
+-----------------------+----------------+
| Soens Weather Station | soens |
+-----------------------+----------------+
| TFA | tfa |
+-----------------------+----------------+
| Conrad | conrad_weather |
+-----------------------+----------------+
.. rubric:: Sender Arguments
*None*
.. rubric:: Config
.. code-block:: json
:linenos:
{
"devices": {
"weather": {
"protocol": [ "tfa" ],
"id": [{
"id": 108,
"channel": 3
}],
"temperature": 18.90,
"humidity": 41.00,
"battery": 1
}
},
"gui": {
"weather": {
"name": "Weather Station",
"group": [ "Outside" ],
"media": [ "all" ]
}
}
}
+------------------+-----------------+
| **Option** | **Value** |
+------------------+-----------------+
| id | 0 - 9 |
+------------------+-----------------+
| temperature | -39.9 - 59.9 |
+------------------+-----------------+
| humidity | 10 - 99 |
+------------------+-----------------+
| battery | 0 - 1 |
+------------------+-----------------+
.. note:: **Conrad**
This sensor does not support humidity measurements
.. rubric:: Optional Settings
:underline:`Device Settings`
+--------------------+-------------+------------+---------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+--------------------+-------------+------------+---------------------------+
| temperature-offset | 0 | number | Correct temperature value |
+--------------------+-------------+------------+---------------------------+
| humidity-offset | 0 | number | Correct humidity value |
+--------------------+-------------+------------+---------------------------+
:underline:`GUI Settings`
+----------------------+-------------+------------+-----------------------------------------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+----------------------+-------------+------------+-----------------------------------------------------------+
| temperature-decimals | 2 | number | How many decimals the GUIs should display for temperature |
+----------------------+-------------+------------+-----------------------------------------------------------+
| humidity-decimals | 2 | number | How many decimals the GUIs should display for humidity |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-humidity | 1 | 1 or 0 | Don't display the humidity value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-battery | 1 | 1 or 0 | Don't display the battery value |
+----------------------+-------------+------------+-----------------------------------------------------------+
.. rubric:: Protocol
The tfa protocol sends 86 pulses like
.. code-block:: guess
498 1992 498 1992 498 1992 498 1992 498 1992 498 4233 498 4233 498 1992 498 1992 498 2241 498 1992 498 1992 498 2241 498 2241 498 1992 498 1992 498 4233 498 2241 498 2241 498 1992 498 1992 498 4482 498 1992 498 4233 498 4233 498 2241 498 4482 498 1992 498 1992 498 4233 498 1992 498 1992 498 4233 498 4233 498 1992 498 1992 498 1992 498 2241 498 2241 498 1992 498 4233 498 2241 498 8466
The next step is to transform this output into groups of 2 pulses.
.. code-block:: guess
498 1992
498 1992
498 1992
498 1992
498 1992
498 4233
498 4233
498 1992
498 1992
498 2241
498 1992
498 1992
498 2241
498 2241
498 1992
498 1992
498 4233
498 2241
498 2241
498 1992
498 1992
498 4482
498 1992
498 4233
498 4233
498 2241
498 4482
498 1992
498 1992
498 4233
498 1992
498 1992
498 4233
498 4233
498 1992
498 1992
498 1992
498 2241
498 2241
498 1992
498 4233
498 2241
498 8466
If we now look at carefully at these groups you can distinguish two types of groups:
#. ``498 1992``
#. ``498 4233``
So the first group is defined by a low 2nd, the second group has a high 2nd pulse. So we take either of these two pulses to define a 0 or a 1. In this case we say a high 2nd pulse means a 1 and a low 2nd pulse means a 0. We then get the following output:
.. code-block:: guess
000001100000000010000101101001001100000010
Each (group) of numbers has a specific meaning:
- ID: 2 till 9
- Channel: 12 till 13
- Temperature: 14 till 25
- Humidity: 26 till 33
- Battery: 34 till 35
.. code-block:: guess
ID : 00011000 | Channel : 00 | Temp : 011000010010 | Hum : 00111001 | Bat : 00
- The ID is defined as a binary number
- The Channel is defined as a binary number and specifies which channel the sensor uses
- The Temperature is defined as a binary number and represents the temperature (value is given in fahrenheit strating at -90°F). Assuming that the Temp binary value is AAAABBBBCCCC, the formula to calculate the temperature value in °C is
.. code-block:: guess
(((DEC(CCCC)*256) + (DEC(BBBB)*16) + (DEC(AAAA))/10) - 90 - 32) * (5/9)
- The ``Humidity`` is defined as a binary number. Assuming that the Hum binary value is AAAABBBB, the formula to calculate the humidity percentage is DEC(BBBB)*16 + DEC(AAAA)
- The ``Battery`` identifies the state of the battery
.. code-block:: guess
ID : 24 | Channel : 1 | Temp : 18.56°C | Hum : 57% | Bat : OK
This protocol was created for pilight with the help of this thread: http://forum.pilight.org/Thread-New-Protocol-Wireless-Indoor-Outdoor-Weather-Station-with-3-Sensors
.. rubric:: Comments
This weather station or just the sensor is available from several (mostly Chinese) suppliers on eBay or Alibaba. Description for device is usually like: “Digital Wireless Indoor/Outdoor Weather Station with 3 Remote Sensors”. The sensor can be identified by the option to choose from 3 different channels.
Humidity and battery are supported by this protocol. The battery function is not tested 100%. Please be aware that the ID of a sensor changes after you replace the batteries. Conrad sensor only provide temperature (no humidity).
@@ -0,0 +1,227 @@
.. |yes| image:: ../../../images/yes.png
.. |no| image:: ../../../images/no.png
.. role:: underline
:class: underline
+------------------+-------------+
| **Feature** | **Support** |
+------------------+-------------+
| Sending | |no| |
+------------------+-------------+
| Receiving | |yes| |
+------------------+-------------+
| Config | |yes| |
+------------------+-------------+
.. rubric:: Supported Brands
+-----------------------+----------------+
| **Brand** | **Protocol** |
+-----------------------+----------------+
| Dostmann TFA 30.3200 | tfa30 |
+-----------------------+----------------+
| TFA30 | tfa30 |
+-----------------------+----------------+
.. rubric:: Sender Arguments
*None*
.. rubric:: Config
.. code-block:: json
:linenos:
{
"devices": {
"weather": {
"protocol": [ "tfa30" ],
"id": [{
"id": 228
}],
"temperature": 18.90,
"humidity": 41.00
}
},
"gui": {
"weather": {
"name": "Weather Station",
"group": [ "Outside" ],
"media": [ "all" ]
}
}
}
+------------------+-----------------+
| **Option** | **Value** |
+------------------+-----------------+
| id | 0 - 255 |
+------------------+-----------------+
| temperature | -39.9 - 59.9 |
+------------------+-----------------+
| humidity | 10 - 99 |
+------------------+-----------------+
.. rubric:: Optional Settings
:underline:`Device Settings`
+--------------------+-------------+------------+---------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+--------------------+-------------+------------+---------------------------+
| temperature-offset | 0 | number | Correct temperature value |
+--------------------+-------------+------------+---------------------------+
| humidity-offset | 0 | number | Correct humidity value |
+--------------------+-------------+------------+---------------------------+
:underline:`GUI Settings`
+----------------------+-------------+------------+-----------------------------------------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+----------------------+-------------+------------+-----------------------------------------------------------+
| temperature-decimals | 2 | number | How many decimals the GUIs should display for temperature |
+----------------------+-------------+------------+-----------------------------------------------------------+
| humidity-decimals | 2 | number | How many decimals the GUIs should display for humidity |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-humidity | 1 | 1 or 0 | Don't display the humidity value |
+----------------------+-------------+------------+-----------------------------------------------------------+
.. rubric:: Protocol
*After extensive testing it was detected that the Dostman TFA 30.3200 shares most parameters with the tfa and conrad weather station sensors, however due to the differences detected those are described in this document.*
The protocol sends 88 pulses like:
.. code-block:: guess
603 7630 601 1881 605 1897 610 3803 605 3811 651 3798 618 1884 600 1911 597 3806 599 1909 590 1930 595 1906 594 1905 591 1920 584 3804 593 3829 585 3808 600 1905 591 1937 602 3805 594 3809 599 3821 590 1903 595 1908 593 3826 586 1908 596 3837 597 3825 569 1918 594 3809 597 1911 594 1903 594 1909 591 3829 585 1926 592 1907 590 1972 531 1917 586 1911 607 1895 589 1952 556 3818 590 3811 594 7639
The next step is to transform this output into groups of 2 pulses.
.. code-block:: guess
603 7630
601 1881
605 1897
610 3803
605 3811
651 3798
618 1884
600 1911
597 3806
599 1909
590 1930
595 1906
594 1905
591 1920
584 3804
593 3829
585 3808
600 1905
591 1937
602 3805
594 3809
599 3821
590 1903
595 1908
593 3826
586 1908
596 3837
597 3825
569 1918
594 3809
597 1911
594 1903
594 1909
591 3829
585 1926
592 1907
590 1972
531 1917
586 1911
607 1895
589 1952
556 3818
590 3811
594 7639
Analysing the pulsetrain, we can distinguish three types of groups:
- The first group is defined by a short 2nd
- The second group has a long 2nd pulse.
- The third group has an extended long 2nd pulse, this 3rd group forms the header and the footer pulse group.
The duration of the pulses varies between manufacturers.
**Dostmann TFA 30.3200**
#. ``605 1905``
#. ``605 3811``
#. ``594 7639``
Length of pulsetrain is 88.
**TFA30 and conrad_weather**
#. ``498 1992``
#. ``498 4233``
#. ``498 8466``
Length of pulsetrain is 80 or 86.
It is currently unknown wether the ``tfa`` and the ``conrad weather pro`` are using identical protocols or not, due to discrepencies in the documentation. The current version of the tfa protocol module can handle both variants using the tfa30 protocol. The differentiation is analysing the header information and the length of the pulsetrain automatically.
We take either of the two other pulse groups to define a logical 0 or a 1. A long 2nd pulse means a 1 and a short 2nd pulse means a 0.
For the above pulsetrain we get the following binary output:
.. code-block:: console
MSB--LSB AAAABBBBCCCC AAAABBBB
00 11100100 0 001 110011100101 10100010 0 0 000011
Each (group) of numbers has a specific meaning:
**Dostmann TFA 30.3200**
- unknown: 0 till 1
- ID: 2 till 9
- unknown: 10
- Channel: 11 till 13
- Temperature: 14 till 25
- Humidity: 26 till 33
- Tx Button: 34
- Battery low: 35
- unknown: 36 till 41
**tfa30 and conrad_weather**
- unknown: 0 till 1
- ID: 2 till 9
- Channel: 12 till 13
- Temperature: 14 till 25
- Humidity: 26 till 33
- Battery: 34 till 35
- unknown: 36 till 41
.. code-block:: console
ID : 11100100 | Channel : 01 | Temp : 0101 1110 1100 | Hum : 00101010 | Bar : 00
- The ``ID`` is defined as a binary number
- The ``Temperature`` is defined as a binary number and represents the temperature in Fahrenheit, starting at -90°F). Assuming that the Temp binary value is AAAABBBBCCCC, the formula to calculate the temperature value in °C is
.. code-block:: console
( ((DEC(CCCC)*256)+(DEC(BBBB)*16)+(DEC(AAAA)))/10 -90 -32) * (5/9)
The ``Humidity`` is defined as a binary number. Assuming that the Hum binary value is AAAABBBB, the formula to calculate the humidity percentage is DEC(BBBB)*16 + DEC(AAAA)
.. code-block:: console
ID : 228 | Temp : 16.44°C | Hum : 42%
@@ -0,0 +1,4 @@
Alecto WS1700
=============
.. include:: _alecto_ws1700.rst
@@ -0,0 +1,88 @@
.. |yes| image:: ../../../images/yes.png
.. |no| image:: ../../../images/no.png
.. role:: underline
:class: underline
Alecto WSD17
============
+------------------+-------------+
| **Feature** | **Support** |
+------------------+-------------+
| Sending | |no| |
+------------------+-------------+
| Receiving | |yes| |
+------------------+-------------+
| Config | |yes| |
+------------------+-------------+
.. rubric:: Supported Brands
+------------------+----------------+
| **Brand** | **Protocol** |
+------------------+----------------+
| Alecto WSD1700 | alecto_wsd1700 |
+------------------+----------------+
| iBoutique | iboutique |
+------------------+----------------+
.. rubric:: Sender Arguments
*None*
.. rubric:: Config
.. code-block:: json
:linenos:
{
"devices": {
"weather": {
"protocol": [ "alecto_ws1700" ],
"id": [{
"id": 108
}],
"temperature": 18.90,
"humidity": 41.00,
"battery": 1
}
},
"gui": {
"weather": {
"name": "Weather Station",
"group": [ "Outside" ],
"media": [ "all" ]
}
}
}
.. rubric:: Optional Settings
:underline:`Device Settings`
+--------------------+-------------+------------+---------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+--------------------+-------------+------------+---------------------------+
| humidity-offset | 0 | number | Correct humidity value |
+--------------------+-------------+------------+---------------------------+
| temperature-offset | 0 | number | Correct temperature value |
+--------------------+-------------+------------+---------------------------+
:underline:`GUI Settings`
+----------------------+-------------+------------+-----------------------------------------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+----------------------+-------------+------------+-----------------------------------------------------------+
| temperature-decimals | 2 | number | How many decimals the GUIs should display for temperature |
+----------------------+-------------+------------+-----------------------------------------------------------+
| humidity-decimals | 2 | number | How many decimals the GUIs should display for humidity |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
+----------------------+-------------+------------+-----------------------------------------------------------+
.. rubric:: Comment
This protocol was created for pilight with the help of this document: http://www.tfd.hu/tfdhu/files/wsprotocol/auriol_protocol_v20.pdf
Humidity and battery are not supported yet
@@ -0,0 +1,4 @@
Alecto WX500
============
.. include:: _alecto_wx500.rst
@@ -0,0 +1,128 @@
.. |yes| image:: ../../../images/yes.png
.. |no| image:: ../../../images/no.png
.. role:: underline
:class: underline
Auriol 89210
============
+------------------+-------------+
| **Feature** | **Support** |
+------------------+-------------+
| Sending | |no| |
+------------------+-------------+
| Receiving | |yes| |
+------------------+-------------+
| Config | |yes| |
+------------------+-------------+
.. rubric:: Supported Brands
+------------------+------------------+
| **Brand** | **Protocol** |
+------------------+------------------+
| Auriol | auriol |
+------------------+------------------+
.. rubric:: Sender Arguments
*None*
.. rubric:: Config
.. code-block:: json
:linenos:
{
"devices": {
"weather": {
"protocol": [ "auriol" ],
"id": [{
"id": 3
}],
"temperature": 18.90,
"humidity": 41.00,
"battery": 1
}
},
"gui": {
"weather": {
"name": "Weather Station",
"group": [ "Outside" ],
"media": [ "all" ]
}
}
}
+------------------+-----------------+
| **Option** | **Value** |
+------------------+-----------------+
| id | 0 - 9 |
+------------------+-----------------+
| temperature | 0 - 50 |
+------------------+-----------------+
| humidity | 20 - 99 |
+------------------+-----------------+
| battery | 0 - 1 |
+------------------+-----------------+
.. rubric:: Optional Settings
:underline:`Device Settings`
+--------------------+-------------+------------+---------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+--------------------+-------------+------------+---------------------------+
| humidity-offset | 0 | number | Correct humidity value |
+--------------------+-------------+------------+---------------------------+
| temperature-offset | 0 | number | Correct temperature value |
+--------------------+-------------+------------+---------------------------+
:underline:`GUI Settings`
+----------------------+-------------+------------+-----------------------------------------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+----------------------+-------------+------------+-----------------------------------------------------------+
| temperature-decimals | 2 | number | How many decimals the GUIs should display for temperature |
+----------------------+-------------+------------+-----------------------------------------------------------+
| humidity-decimals | 2 | number | How many decimals the GUIs should display for humidity |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-humidity | 1 | 1 or 0 | Don't display the humidity value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-battery | 1 | 1 or 0 | Don't display the battery value |
+----------------------+-------------+------------+-----------------------------------------------------------+
.. rubric:: Comments
This weather station was available at the Lidl. Description for device could be: “Auriol IAN 89210 FUNK-WEATHER STATION/RADIO CONTROLLED WEATHER”, Hama EWS-750 (not confirmed) and IAN 55982 (neither confirmed). The sensor can be identified by the option to choose from 3 different channels.
Humidity and battery assumed to be supported by this protocol, but might not be. The battery function is not tested 100% and humidity seems to vary regularly. Please be aware that the ID of a sensor is actually the channel.
.. rubric:: Protocol
This protocol has similarities with the protocols alecto and threechan.
Each (group of 2) numbers have the following specific meaning:
- Battery ID 0 untill 7 (assumed)
- Battery: 8
- TX mode: 9
- Channel: 10 untill 11 (3 = 10, 2 = 01, 1 = 11)
- Temperature: 12 untill 23
- Humidity: 24 untill 31 (assumed, alternatively this might be a checksum)
- Footer: 32
- The Battery ID is not used
- The Battery identifies the state of the battery
- The TX mode defines whether the signal was sent automatically or manually
- The ID is defined as a binary number and specifies which channel the sensor uses
- The Temperature is defined as a binary number and represents the temperature
- The Humidity is defined as a binary number and represents the humidity (unconfirmed)
.. rubric:: Checksum
We need someone who is able to decipher the checksum and write a c snippet for it.
This protocol was created for pilight with the help of pilight-debug.
@@ -0,0 +1,4 @@
Auriol H12726
=============
.. include:: _alecto_wx500.rst
@@ -0,0 +1,4 @@
Conrad
======
.. include:: _conrad.rst
@@ -0,0 +1,7 @@
Dostmann TFA 30.3200
====================
.. versionchanged:: 8.0
.. include:: _tfa30.rst
@@ -0,0 +1,4 @@
Hama EWS1500
============
.. include:: _alecto_wx500.rst
@@ -0,0 +1,4 @@
iBoutique
=========
.. include:: _alecto_ws1700.rst
@@ -0,0 +1,23 @@
Weather Stations
================
.. toctree::
:maxdepth: 1
alecto_wsd17
alecto_ws1700
alecto_wx500
auriol_89210
auriol_h13726
conrad
dostmann
hama_ews1500
iboutique
kaku
meteoscan_w1xxx
ninja_blocks
soens
tcm
teknihall
tfa
ventus_wsxxx
@@ -0,0 +1,152 @@
.. |yes| image:: ../../../images/yes.png
.. |no| image:: ../../../images/no.png
.. role:: underline
:class: underline
KlikAanKlikUit (Dusk/Dawn)
==========================
+------------------+-------------+
| **Feature** | **Support** |
+------------------+-------------+
| Sending | |no| |
+------------------+-------------+
| Receiving | |yes| |
+------------------+-------------+
| Config | |yes| |
+------------------+-------------+
.. rubric:: Supported Brands
+----------------------+--------------------+
| **Brand** | **Protocol** |
+----------------------+--------------------+
| KlikAanKlikUit | kaku_dusk |
+----------------------+--------------------+
.. rubric:: Sender Arguments
*None*
.. rubric:: Config
.. code-block:: json
:linenos:
{
"devices": {
"dimmer": {
"protocol": [ "kaku_dusk" ],
"id": [{
"id": 100,
"unit": 0
}],
"state": "dusk"
}
}
}
+------------------+-----------------+
| **Option** | **Value** |
+------------------+-----------------+
| id | 0 - 67108863 |
+------------------+-----------------+
| unit | 0 - 15 |
+------------------+-----------------+
| state | dusk / dawn |
+------------------+-----------------+
.. rubric:: Optional Settings
*None*
.. rubric:: Protocol
This protocol sends 132 pulses like this
.. code-block:: console
286 2825 286 201 289 1337 287 209 283 1351 287 204 289 1339 288 207 288 1341 289 207 281 1343 284 205 292 1346 282 212 283 1348 282 213 279 1352 282 211 281 1349 282 210 283 1347 284 211 288 1348 281 211 285 1353 278 213 280 1351 280 232 282 1356 279 213 285 1351 276 215 285 1348 277 216 278 1359 278 216 279 1353 272 214 283 1358 276 216 276 1351 278 214 284 1357 275 217 276 1353 270 217 277 1353 272 220 277 1351 275 220 272 1356 275 1353 273 224 277 236 282 1355 272 1353 273 233 273 222 268 1358 270 219 277 1361 274 218 280 1358 272 1355 271 243 251 11302
The first 2 pulses are the ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine. We don't use them for further processing. The next step is to transform this output into 32 groups of 4 pulses (and thereby dropping the ``header`` and ``footer`` pulses).
.. code-block:: console
286 201 289 1337
287 209 283 1351
287 204 289 1339
288 207 288 1341
289 207 281 1343
284 205 292 1346
282 212 283 1348
282 213 279 1352
282 211 281 1349
282 210 283 1347
284 211 288 1348
281 211 285 1353
278 213 280 1351
280 232 282 1356
279 213 285 1351
276 215 285 1348
277 216 278 1359
278 216 279 1353
272 214 283 1358
276 216 276 1351
278 214 284 1357
275 217 276 1353
270 217 277 1353
272 220 277 1351
275 220 272 1356
275 1353 273 224
277 236 282 1355
272 1353 273 233
273 222 268 1358
270 219 277 1361
274 218 280 1358
272 1355 271 243
If we now look at carefully at these groups you can distinguish two types of groups:
- ``272 1355 271 243``
- ``274 218 280 1358``
So the first group is defined by a high 2nd and the second group has a high 4th pulse. So we take either of these two pulses to define a 0 or a 1. In this case we say a high 2nd pulse means a 1 and a low 2nd pulse means a 0. We then get the following output:
.. code-block:: console
00000000000000000000000001010001
Each (group) of numbers has a specific meaning:
- ID: 0 till 25(Convert the binary code to decimal to get the correct id)
- All: 26
- State: 27
- Unit: 28 till 31
.. code-block:: console
00000000000000000000000001 0 1 0001
- The ``ID`` is defined as a binary number
- The ``All`` tells us if a code was meant for all devices with the same ID
- The ``State`` defines whether a devices needs to be turned On or Off
- The ``Unit`` is also defined as a binary number
So this code represents:
- ID: 1
- All: Single
- State: Dawn
- Unit: 1
Another example:
- ID: 123456
- All: All
- State: Dusk
- Unit: 15
.. code-block:: console
00000000011110001001000000101111
@@ -0,0 +1,4 @@
Meteoscan W1XXX
===============
.. include:: _alecto_wx500.rst
@@ -0,0 +1,146 @@
.. |yes| image:: ../../../images/yes.png
.. |no| image:: ../../../images/no.png
.. role:: underline
:class: underline
Ninja Blocks Weather Sensor
===========================
+------------------+-------------+
| **Feature** | **Support** |
+------------------+-------------+
| Sending | |no| |
+------------------+-------------+
| Receiving | |yes| |
+------------------+-------------+
| Config | |yes| |
+------------------+-------------+
.. rubric:: Supported Brands
+------------------+---------------------+
| **Brand** | **Protocol** |
+------------------+---------------------+
| Ninja Blocks | ninjablocks_weather |
+------------------+---------------------+
.. rubric:: Sender Arguments
*None*
.. rubric:: Config
.. code-block:: json
:linenos:
{
"devices": {
"weather": {
"protocol": [ "ninjablocks_weather" ],
"id": [{
"id": 1,
"unit": 1
}],
"temperature": 18.90,
"humidity": 41.00
}
},
"gui": {
"weather": {
"name": "Weather Station",
"group": [ "Outside" ],
"media": [ "all" ]
}
}
}
+------------------+-----------------+
| **Option** | **Value** |
+------------------+-----------------+
| id | 0 - 3 |
+------------------+-----------------+
| unit | 0 - 15 |
+------------------+-----------------+
| temperature | -50 - 205.99 |
+------------------+-----------------+
| humidity | 0 - 99 |
+------------------+-----------------+
.. rubric:: Optional Settings
:underline:`GUI Settings`
+----------------------+-------------+------------+-----------------------------------------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+----------------------+-------------+------------+-----------------------------------------------------------+
| temperature-decimals | 2 | number | How many decimals the GUIs should display for temperature |
+----------------------+-------------+------------+-----------------------------------------------------------+
| humidity-decimals | 2 | number | How many decimals the GUIs should display for humidity |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-humidity | 1 | 1 or 0 | Don't display the humidity value |
+----------------------+-------------+------------+-----------------------------------------------------------+
.. rubric:: Comments
This weather station was available at the Lidl. Description for device could be: “Auriol IAN 89210 FUNK-WEATHER STATION/RADIO CONTROLLED WEATHER”, Hama EWS-750 (not confirmed) and IAN 55982 (neither confirmed). The sensor can be identified by the option to choose from 3 different channels.
Humidity and battery assumed to be supported by this protocol, but might not be. The battery function is not tested 100% and humidity seems to vary regularly. Please be aware that the ID of a sensor is actually the channel.
.. rubric:: Protocol
The protocol sends 74 pulses like:
.. code-block:: guess
1083 860 966 986 1970 1953 2083 1829 1927 1014 938 1978 1943 993 946 1003 953 1983 2056 877 934 1020 931 1070 884 2013 1893 1012 930 2008 923 1019 1995 1930 925 1026 978 985 1891 1052 907 1036 913 2031 901 1034 916 1067 1881 1988 971 1004 890 1060 754 72330
The pulse stream uses the “Bi-Phase Mark Code” (BMC) or Frequencey/Double Frequency (F2F) principle as defined in ISO/IEC7811.
The first 6 pulses are the SYNC header and the last pulse is the footer. These are meant to identify the pulses as genuine. We check for their presence, an error in the first pulse of the header is tolerated, if the second sync pulse after the Unit code and the parity bit is correct, the length of the footer pulse is used to identify the protocol and as end of data transmission.
The first step is to transform this pulse stream into 36 logical bits We can group the sequence of bits into the following groups A to H:
.. code-block:: guess
AAAA BBBB CC DDD EEEEEEE FFFFFFFFFFFFFFF G H
1100 0001 00 110 0111001 010011011011001 1 F
Each of the groups of bits (A to H) has a specific meaning:
+-----------+-----------+-----------------+------------+----------------------------------------+
| **Group** | **Bit #** | **Config name** | **Range** | **Description** |
+-----------+-----------+-----------------+------------+----------------------------------------+
| A | 0-3 | 12 | SYNC Header |
+-----------+-----------+-----------------+------------+----------------------------------------+
| B | 4-7 | unit | 0 to 15 | Unit Code |
+-----------+-----------+-----------------+------------+----------------------------------------+
| C | 8-9 | id | 0 to 3 | Channel Code |
+-----------+-----------+-----------------+------------+----------------------------------------+
| D | 10-12 | 110 | Sync Data |
+-----------+-----------+-----------------+------------+----------------------------------------+
| E | 13-19 | humidity | 0 to 100 | Humidity in % |
+-----------+-----------+-----------------+------------+----------------------------------------+
| F | 20-34 | temperature | 0 to 32767 | Temperature -50°C to 205,99°C |
+-----------+-----------+-----------------+------------+----------------------------------------+
| G | 35 | 0,1 | Even Parity Bit |
+-----------+-----------+-----------------+------------+----------------------------------------+
| H | 36 | Footer or gap pulse followed by Footer |
+-----------+-----------+-----------------+------------+----------------------------------------+
.. code-block:: console
{
"code": {
"id": 0,
"unit": 1,
"temperature": 2769,
"humidity": 5700
},
"origin": "receiver",
"protocol": "ninjablocks_weather",
"uuid": "0000-00-00-b4-46a46b",
"repeats": 1
}
@@ -0,0 +1,4 @@
Soens Weather Station
=====================
.. include:: _conrad.rst
@@ -0,0 +1,187 @@
.. |yes| image:: ../../../images/yes.png
.. |no| image:: ../../../images/no.png
.. role:: underline
:class: underline
TCM 218943
==========
.. versionadded:: 8.0
+------------------+-------------+
| **Feature** | **Support** |
+------------------+-------------+
| Sending | |no| |
+------------------+-------------+
| Receiving | |yes| |
+------------------+-------------+
| Config | |yes| |
+------------------+-------------+
.. rubric:: Supported Brands
+-------------+----------------+
| **Brand** | **Protocol** |
+-------------+----------------+
| TCM 218943 | tcm |
+-------------+----------------+
.. rubric:: Sender Arguments
*None*
.. rubric:: Config
.. code-block:: json
:linenos:
{
"devices": {
"weather": {
"protocol": [ "tcm" ],
"id": [{
"id": 104,
}],
"temperature": 22.70,
"humidity": 50.00,
"battery": 1
}
},
"gui": {
"weather": {
"name": "Weather Station",
"group": [ "Outside" ],
"media": [ "all" ]
}
}
}
+------------------+-----------------+
| **Option** | **Value** |
+------------------+-----------------+
| id | 0 - 255 |
+------------------+-----------------+
| temperature | -39.9 - 59.9 |
+------------------+-----------------+
| humidity | 0 - 99 |
+------------------+-----------------+
| battery | 0 - 1 |
+------------------+-----------------+
.. rubric:: Optional Settings
:underline:`Device Settings`
+--------------------+-------------+------------+---------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+--------------------+-------------+------------+---------------------------+
| temperature-offset | 0 | number | Correct temperature value |
+--------------------+-------------+------------+---------------------------+
| humidity-offset | 0 | number | Correct humidity value |
+--------------------+-------------+------------+---------------------------+
:underline:`GUI Settings`
+----------------------+-------------+------------+-----------------------------------------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+----------------------+-------------+------------+-----------------------------------------------------------+
| temperature-decimals | 2 | number | How many decimals the GUIs should display for temperature |
+----------------------+-------------+------------+-----------------------------------------------------------+
| humidity-decimals | 2 | number | How many decimals the GUIs should display for humidity |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-humidity | 1 | 1 or 0 | Don't display the humidity value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-battery | 1 | 1 or 0 | Don't display the battery value |
+----------------------+-------------+------------+-----------------------------------------------------------+
.. rubric:: Protocol
The tcm protocol sends 74 pulses like
.. code-block:: guess
194 1035 194 1994 194 1994 194 1035 194 1994 194 1035 194 1035 194 1035 194 1035 194 1035 194 1035 194 1035 194 1035 194 1035 194 1035 194 1035 194 1035 194 1035 194 1994 194 1994 194 1035 194 1035 194 1994 194 1035 194 1035 194 1035 194 1035 194 1035 194 1994 194 1994 194 1994 194 1035 194 1035 194 1035 194 1994 194 1994 194 8037
The next step is to transform this output into groups of 2 pulses.
.. code-block:: guess
194 1035
194 1994
194 1994
194 1035
194 1994
194 1035
194 1035
194 1035
194 1035
194 1035
194 1035
194 1035
194 1035
194 1035
194 1035
194 1035
194 1035
194 1035
194 1994
194 1994
194 1035
194 1035
194 1994
194 1035
194 1035
194 1035
194 1035
194 1035
194 1994
194 1994
194 1994
194 1035
194 1035
194 1035
194 1994
194 1994
194 8037
If we now look at carefully at these groups you can distinguish two types of groups:
#. ``194 1035``
#. ``194 1994``
So the first group is defined by a low 2nd, the second group has a high 2nd pulse. So we take either of these two pulses to define a 0 or a 1. In this case we say a high 2nd pulse means a 1 and a low 2nd pulse means a 0. We then get the following output:
.. code-block:: guess
011010000000000000110010000011100011
Each (group) of numbers has a specific meaning:
- ID: 1 till 8
- Battery: 9
- Button: 12
- Humidity: 17 till 24
- Temperature: 25 till 36
.. code-block:: guess
ID : 01101000 | Bat : 0 | But : 0 | Hum : 00110010 | Temp : 000011100011
- The ID is defined as a binary number.
- The Battery indicates low battery with 1.
- The Button is 1, if the button on the sensor is pressed.
- The Temperature is a 12 bits wide 2's complement signed binary number represents the actual temperature value in 0.1 °C units. DEC(AAAAAAAAAAAA)/10
- The Humidity is defined as a binary number.
.. code-block:: guess
ID : 104 | Bat : OK | But : not pressed | Hum : 50% | Temp : 22.7°C
This protocol was created for pilight with the help of this thread: http://forum.arduino.cc/index.php?topic=136836.0 (german)
.. rubric:: Comments
Please be aware that the ID of a sensor changes after you replace the batteries.
@@ -0,0 +1,185 @@
.. |yes| image:: ../../../images/yes.png
.. |no| image:: ../../../images/no.png
.. role:: underline
:class: underline
Teknihall GT-WT-02
==================
+------------------+-------------+
| **Feature** | **Support** |
+------------------+-------------+
| Sending | |no| |
+------------------+-------------+
| Receiving | |yes| |
+------------------+-------------+
| Config | |yes| |
+------------------+-------------+
.. rubric:: Supported Brands
+--------------------+------------------+
| **Brand** | **Protocol** |
+--------------------+------------------+
| Teknihall GT-WT-02 | teknihall |
+--------------------+------------------+
.. rubric:: Sender Arguments
*None*
.. rubric:: Config
.. code-block:: json
:linenos:
{
"devices": {
"weather": {
"protocol": [ "teknihall" ],
"id": [{
"id": 108
}],
"temperature": 18.90,
"humidity": 41.00,
"battery": 1
}
},
"gui": {
"weather": {
"name": "Weather Station",
"group": [ "Outside" ],
"media": [ "all" ]
}
}
}
+------------------+-----------------+
| **Option** | **Value** |
+------------------+-----------------+
| id | 0 - 3 |
+------------------+-----------------+
| unit | 0 - 15 |
+------------------+-----------------+
| temperature | -15 - 60 |
+------------------+-----------------+
| humidity | 20 - 99 |
+------------------+-----------------+
| battery | 0 - 1 |
+------------------+-----------------+
.. rubric:: Optional Settings
:underline:`Device Settings`
+--------------------+-------------+------------+---------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+--------------------+-------------+------------+---------------------------+
| humidity-offset | 0 | number | Correct humidity value |
+--------------------+-------------+------------+---------------------------+
| temperature-offset | 0 | number | Correct temperature value |
+--------------------+-------------+------------+---------------------------+
:underline:`GUI Settings`
+----------------------+-------------+------------+-----------------------------------------------------------+
| **Setting** | **Default** | **Format** | **Description** |
+----------------------+-------------+------------+-----------------------------------------------------------+
| temperature-decimals | 2 | number | How many decimals the GUIs should display for temperature |
+----------------------+-------------+------------+-----------------------------------------------------------+
| humidity-decimals | 2 | number | How many decimals the GUIs should display for humidity |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-humidity | 1 | 1 or 0 | Don't display the humidity value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-wind | 1 | 1 or 0 | Don't display the wind value |
+----------------------+-------------+------------+-----------------------------------------------------------+
| show-battery | 1 | 1 or 0 | Don't display the battery value |
+----------------------+-------------+------------+-----------------------------------------------------------+
.. rubric:: Comments
This weather station is available at Aldi. Please be aware that there are several types of Teknihall weather stations and sensors available. Not all types might be compatible.
Please be aware that the ID of a sensor could change after you replace the batteries.
.. rubric:: Protocol
The protocol sends 76 pulses like:
.. code-block:: guess
532 2128 532 4256 532 4256 532 2128 532 4256 532 4256 532 2128 532 2128 532 2128 532 2128 532 2128 532 2128 532 2128 532 2128 532 2128 532 2128 532 4256 532 2128 532 4256 532 4256 532 4256 532 4256 532 2128 532 2128 532 2128 532 4256 532 4256 532 4256 532 2128 532 2128 532 2128 532 4256 532 4256 532 2128 532 2128 532 2128 532 2128 532 9044
The last 2 pulses are the footer. These are meant to identify the pulses as genuine. We don't it for further processing. The next step is to transform this output into 38 groups of 2 pulses (and thereby dropping the footer pulses).
.. code-block:: guess
532 2128
532 4256
532 4256
532 2128
532 4256
532 4256
532 2128
532 2128
532 2128
532 2128
532 2128
532 2128
532 2128
532 2128
532 2128
532 2128
532 4256
532 2128
532 4256
532 4256
532 4256
532 4256
532 2128
532 2128
532 2128
532 4256
532 4256
532 4256
532 2128
532 2128
532 2128
532 4256
532 4256
532 2128
532 2128
532 2128
532 2128
532 9044
If we now look at carefully at these groups you can distinguish two types of groups:
- ``540 2128``
- ``540 4256``
So the first group is defined by a low 2nd, the second group has a high 2nd pulse. So we take either of these two pulses to define a 0 or a 1. In this case we say a high 2nd pulse means a 1 and a low 2nd pulse means a 0. The binary conversion could look as follows:
.. code-block:: guess
0101111100111000000011001011001010111
Each (group) of numbers has a specific meaning:
- ID: 0 till 7
- Temperature: 14 till 23
- Humidity: 24 till 30
.. code-block:: guess
01011111 001110 0000001100 1011001 010111
- The ID is defined as a binary number
- The Temperature is defined as a binary number and represents the temperature
- The Humidity is defined as a binary number and represents the humidity
This protocol was created for pilight with the help of this thread: http://forum.pilight.org/Thread-Connect-digital-weather-sensor
@@ -0,0 +1,4 @@
TFA
===
.. include:: _conrad.rst
@@ -0,0 +1,4 @@
Ventus WSXXX
============
.. include:: _alecto_wx500.rst