update esppilight lib
content of the library is not filtered on 433mhz only
This commit is contained in:
1 parent
a275e48ee1
commit
67dd7ac078
1030 files changed
+203335
-116
No files matched your search
@@ -0,0 +1,7 @@
|
||||
Alarm
|
||||
=====
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
secudo
|
||||
@@ -0,0 +1,117 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Secudo
|
||||
======
|
||||
|
||||
.. versionadded:: 8.0
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+-----------------------+----------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+-----------------------+----------------+
|
||||
| Secudo | secudo |
|
||||
+-----------------------+----------------+
|
||||
| FlammEx | secudo |
|
||||
+-----------------------+----------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"alarm": {
|
||||
"protocol": [ "secudo" ],
|
||||
"id": [{
|
||||
"id": 493
|
||||
}],
|
||||
"state": "alarm"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 1023 |
|
||||
+------------------+-----------------+
|
||||
| state | alarm |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 26 pulses like this:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
314 314 628 628 314 314 628 314 628 628 314 314 628 314 628 314 628 314 628 628 314 628 314 314 628 10676
|
||||
|
||||
The first pulse is the ``header`` and the last pulse is 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 the remaining pulses into 12 groups of two pulses (and thereby dropping the ``header`` and ``footer`` pulses):
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
314 628
|
||||
628 314
|
||||
314 628
|
||||
314 628
|
||||
628 314
|
||||
314 628
|
||||
314 628
|
||||
314 628
|
||||
314 628
|
||||
628 314
|
||||
628 314
|
||||
314 628
|
||||
|
||||
If we now look carefully at these groups you can distinguish two types of groups:
|
||||
|
||||
#. 314 628
|
||||
#. 628 314
|
||||
|
||||
So the first group is defined by a high 2nd and the second group by a high 1st 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
|
||||
|
||||
101101111001
|
||||
|
||||
The first 10 bits correspond to the setting of the ten dip switches inside the smoke sensor.
|
||||
If a dip switch is ON, this corresponds to 1 and 0 otherwise.
|
||||
The meaning of the two last bits is unknown.
|
||||
When reversing the first 10 bits because the first bits are least signifant we get the smoke sensors ID as binary number
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
0111101101
|
||||
|
||||
which is 493 as decimal number.
|
||||
This means that the 2nd, 5th and 10th dip switch is OFF and all others are ON.
|
||||
@@ -0,0 +1,142 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Elro HE Contact
|
||||
===============
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+------------------+------------------+
|
||||
| Elro 800 Series | elro_800_contact |
|
||||
+------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"contact": {
|
||||
"protocol": [ "elro_800_contact" ],
|
||||
"id": [{
|
||||
"systemcode": 31,
|
||||
"unitcode": 0
|
||||
}],
|
||||
"state": "closed"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| code | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| state | opened / closed |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 148 pulses like this
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 960 320 320 960 960 320 320 960 960 320 320 960 960 320 320 960 320 960 320 960 960 320 320 9920
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 960 320
|
||||
320 960 960 320
|
||||
320 960 960 320
|
||||
320 960 960 320
|
||||
320 960 320 960
|
||||
320 960 960 320
|
||||
320 9920
|
||||
|
||||
If we now look at carefully at these groups you can distinguish two types of groups:
|
||||
|
||||
#. 320 960 320 960
|
||||
#. 320 960 960 320
|
||||
|
||||
So the first group is defined by a high 4th pulse and the second group has a low 4th pulse. In this case we say a high 4th pulse means a 1 and a low 4th pulse means a 0. We then get the following output:
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
11111 10000 1 0
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- SystemCode: 0 till 5
|
||||
- UnitCode: 6 till 10
|
||||
- State: 11
|
||||
- Check: 12 (inverse state)
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
11111 10000 1 0
|
||||
|
||||
- The ``SystemCode`` is defined as a binary number
|
||||
- The ``UnitCode`` is defined as a binary number
|
||||
- The ``State`` defines whether a devices needs to be turned On or Off
|
||||
- The ``Check`` defines whether a devices needs to be turned On or Off (but is inverse)
|
||||
|
||||
So this code represents:
|
||||
|
||||
- SystemCode: 31
|
||||
- UnitCode: 1
|
||||
- State: Opened
|
||||
- Check: Opened (inverse state)
|
||||
|
||||
Another example:
|
||||
|
||||
- SystemCode: 0
|
||||
- UnitCode: 4
|
||||
- State: Closed
|
||||
- Check: Closed (inverse state)
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
00000 00100 0 1
|
||||
|
||||
Furthermore the protocol filters out false positives by checking if:
|
||||
|
||||
- Every 1st bit of the first 12 groups of 4 bits is always LOW (0)
|
||||
- 2nd bit of the first 12 groups of 4 bits is always HIGH (1)
|
||||
- 3rd and 4th bit of the first 12 groups of 4 bits are different (NOT EQUAL)
|
||||
- Bits 49 and 50 are LOW (0) and HIGH (1) respectively (fixed footer)
|
||||
|
||||
This makes the protocol more accurate because it will respond less when arctech_old commands are sent.
|
||||
@@ -0,0 +1,129 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
EV1527 Contact
|
||||
==============
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+------------------+--------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+------------------+--------------+
|
||||
| EV1527 | ev1527 |
|
||||
+------------------+--------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"contact": {
|
||||
"protocol": [ "ev1527" ],
|
||||
"id": [{
|
||||
"unitcode": 0
|
||||
}],
|
||||
"state": "closed"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| code | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| state | opened / closed |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
253 759 759 253 759 253 253 759 253 759 253 759 253 759 253 759 253 759 759 253 253 759 253 759 759 253 759 253 759 253 253 759 253 759 759 253 253 759 759 253 253 759 253 759 759 253 253 8602
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
The first six pulses are the address bits, followed by upto another 6 Address/Data Bits. Address Bits can have three states: 0, 1, F (tri-state). Data Bits have only two states: 0 or 1.
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
253 759
|
||||
759 253
|
||||
759 253
|
||||
253 759
|
||||
253 759
|
||||
253 759
|
||||
253 759
|
||||
253 759
|
||||
253 759
|
||||
759 253
|
||||
253 759
|
||||
253 759
|
||||
759 253
|
||||
759 253
|
||||
759 253
|
||||
253 759
|
||||
253 759
|
||||
759 253
|
||||
253 759
|
||||
759 253
|
||||
253 759
|
||||
253 759
|
||||
759 253
|
||||
|
||||
If we now take a careful look at these groups you can distinguish three types of groups:
|
||||
|
||||
#. ``253 759``
|
||||
#. ``759 253``
|
||||
|
||||
So the first group is defined by a high second pulse, the second group has a low second pulse. We then get the following output:
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
10001111110110001101 0110
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- UnitCode: 0 till 20
|
||||
- State: 20
|
||||
|
||||
Bits 21-24 are not used.
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
10001111110110001101 0
|
||||
|
||||
- The ``UnitCode`` is defined as a binary number
|
||||
- The ``State`` defines whether a sensor state is opened or closed
|
||||
|
||||
So this code represents:
|
||||
|
||||
- UnitCode: 589197
|
||||
- State: opened
|
||||
@@ -0,0 +1,10 @@
|
||||
Contact
|
||||
=======
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
kaku
|
||||
elro
|
||||
sc2262
|
||||
ev1527
|
||||
@@ -0,0 +1,147 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
KlikAanKlikUit
|
||||
==============
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+------------------+--------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+------------------+--------------+
|
||||
| KlikAanKlikUit | kaku_contact |
|
||||
+------------------+--------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"contact": {
|
||||
"protocol": [ "kaku_contact" ],
|
||||
"id": [{
|
||||
"id": 100,
|
||||
"unit": 0
|
||||
}],
|
||||
"state": "closed"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 67108863 |
|
||||
+------------------+-----------------+
|
||||
| code | 0 - 15 |
|
||||
+------------------+-----------------+
|
||||
| state | opened / closed |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 148 pulses like this
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
294 2646 294 294 294 1176 294 294 294 1176 294 1176 294 294 294 294 294 1176 294 1176 294 294 294 294 294 1176 294 1176 294 294 294 1176 294 294 294 1176 294 294 294 294 294 1176 294 1176 294 294 294 1176 294 294 294 294 294 1176 294 294 294 1176 294 1176 294 294 294 294 294 1176 294 294 294 1176 294 1176 294 294 294 294 294 1176 294 294 294 1176 294 294 294 1176 294 1176 294 294 294 294 294 1176 294 294 294 1176 294 1176 294 294 294 294 294 1176 294 294 294 1176 294 1176 294 294 294 1176 294 294 294 294 294 1176 294 294 294 1176 294 1176 294 294 294 294 294 1176 294 1176 294 294 294 1176 294 294 294 1176 294 294 294 9996
|
||||
|
||||
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 36 groups of 4 pulses (and thereby dropping the ``header`` and ``footer`` pulses).
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
294 294 294 1176
|
||||
294 294 294 1176
|
||||
294 1176 294 294
|
||||
294 294 294 1176
|
||||
294 1176 294 294
|
||||
294 294 294 1176
|
||||
294 1176 294 294
|
||||
294 1176 294 294
|
||||
294 1176 294 294
|
||||
294 294 294 1176
|
||||
294 1176 294 294
|
||||
294 1176 294 294
|
||||
294 294 294 1176
|
||||
294 294 294 1176
|
||||
294 1176 294 294
|
||||
294 294 294 1176
|
||||
294 294 294 1176
|
||||
294 1176 294 294
|
||||
294 294 294 1176
|
||||
294 294 294 1176
|
||||
294 294 294 1176
|
||||
294 1176 294 294
|
||||
294 294 294 1176
|
||||
294 294 294 1176
|
||||
294 1176 294 294
|
||||
294 294 294 1176
|
||||
294 294 294 1176
|
||||
294 1176 294 294
|
||||
294 1176 294 294
|
||||
294 294 294 1176
|
||||
294 294 294 1176
|
||||
294 1176 294 294
|
||||
294 294 294 1176
|
||||
294 1176 294 294
|
||||
294 1176 294 294
|
||||
294 1176 294 294
|
||||
|
||||
If we now look at carefully at these groups you can distinguish two types of groups:
|
||||
|
||||
#. 294 1176 294 294
|
||||
#. 294 294 294 1176
|
||||
|
||||
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:: guess
|
||||
|
||||
001010111011001001000100100110010111
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- ID: 0 till 25
|
||||
- All: 26
|
||||
- State: 27
|
||||
- Unit: 28 till 31
|
||||
- Unknown: 32 till 35
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
00101011101100100100010010 0 1 1001 0111
|
||||
|
||||
- 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 is opened or closed
|
||||
- The ``Unit`` is also defined as a binary number
|
||||
- The ``Unknown`` is also defined as a binary number(bits are missing in the closed state)
|
||||
|
||||
So this code represents:
|
||||
|
||||
- ID: 11454738
|
||||
- All: Single
|
||||
- State: Opened
|
||||
- Unit: 9
|
||||
@@ -0,0 +1,158 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
SC2262 Contact
|
||||
==============
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+------------------+--------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+------------------+--------------+
|
||||
| SC2262 | sc2262 |
|
||||
+------------------+--------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"contact": {
|
||||
"protocol": [ "sc2262" ],
|
||||
"id": [{
|
||||
"systemcode": 31,
|
||||
"unitcode": 0
|
||||
}],
|
||||
"state": "closed"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| code | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| state | opened / closed |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1728 1296 432 432 1296 432 1296 432 1296 1296 432 1296 432 1296 432 1296 432 1296 432 432 13392
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
The first six pulses are the address bits, followed by upto another 6 Address/Data Bits. Address Bits can have three states: 0, 1, F (tri-state). Data Bits have only two states: 0 or 1.
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
432 1296 1296 432
|
||||
432 1296 1296 432
|
||||
432 1296 1296 432
|
||||
432 1296 1296 432
|
||||
432 1296 1296 432
|
||||
432 1296 1296 432
|
||||
432 1296 1296 432
|
||||
432 1728 1296 432
|
||||
432 1296 432 1296
|
||||
432 1296 1296 432
|
||||
1296 432 1296 432
|
||||
1296 432 1296 432
|
||||
432 14688
|
||||
|
||||
If we now take a careful look at these groups you can distinguish three types of groups:
|
||||
|
||||
#. ``432 1296 432 1296`` - Logical Zero
|
||||
#. ``1296 432 1296 432`` - Logical One
|
||||
#. ``432 1296 1296 432`` - Logical Tri-State
|
||||
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
FFFFFF FF0F11
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- SystemCode: 0 till 5
|
||||
- UnitCode: 6 till 10
|
||||
- State: 11
|
||||
|
||||
Depending on the device the Unit Code my be shorter in order to provide more bits for state / data value conditions.
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
FFFFFF FF0F11
|
||||
|
||||
- The SystemCode is defined as a binary number
|
||||
- The UnitCode is defined as a binary number
|
||||
- The State defines whether a devices state is considered to be opened or closed
|
||||
|
||||
So this code represents:
|
||||
|
||||
- SystemCode: 0
|
||||
- UnitCode: 2
|
||||
- State: Closed
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"window": {
|
||||
"protocol": [ "sc2262" ],
|
||||
"id": [{
|
||||
"systemcode": 0,
|
||||
"unitcode": 8
|
||||
}],
|
||||
"state": "closed"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"window": {
|
||||
"name": "Bedroom",
|
||||
"group": [ "Windows" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
This code sets the state to opened:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p raw -c "432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1728 1296 432 432 1296 432 1296 432 1296 1296 432 1296 432 1296 432 1296 432 1296 432 432 14680"
|
||||
|
||||
This code sets the state to closed:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p raw -c "432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1296 1296 432 432 1728 1296 432 432 1296 432 1296 432 1296 1296 432 1296 432 1296 432 432 1296 432 1296 432 14681"
|
||||
@@ -0,0 +1,223 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+--------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+--------------+
|
||||
| KlikAanKlikUit | kaku_dimmer |
|
||||
+----------------------+--------------+
|
||||
| Nexa WMR-252 | kaku_dimmer |
|
||||
+----------------------+--------------+
|
||||
| Intertechno ITDM-250 | kaku_dimmer |
|
||||
+----------------------+--------------+
|
||||
| Intertechno ITDM-150 | kaku_dimmer |
|
||||
+----------------------+--------------+
|
||||
| Intertechno ITL-210 | kaku_dimmer |
|
||||
+----------------------+--------------+
|
||||
| Intertechno ITL-250 | kaku_dimmer |
|
||||
+----------------------+--------------+
|
||||
| Intertechno ITLR-300 | kaku_dimmer |
|
||||
+----------------------+--------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-u --unit=unit control a device with this unit code
|
||||
-i --id=id control a device with this id
|
||||
-a --all send command to all devices with this id
|
||||
-d --dimlevel=dimlevel send a specific dimlevel
|
||||
-l --learn send multiple streams so dimmer can learn
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "kaku_dimmer" ],
|
||||
"id": [{
|
||||
"id": 100,
|
||||
"unit": 0
|
||||
}],
|
||||
"state": "off",
|
||||
"dimlevel": 15
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"dimmer": {
|
||||
"name": "Dimmer",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 67108863 |
|
||||
+------------------+-----------------+
|
||||
| code | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| dimlevel | 0 - 15 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| dimlevel-minimum | 0 | number | Minimum dimlevel |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| dimlevel-maximum | 15 | number | Maximum dimlevel |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| all | 0 | 1 or 0 | | If specified this will trigger the "group" |
|
||||
| | | | | function of the advanced remotes and trigger |
|
||||
| | | | | all registered devices for the given unitcode |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Notes
|
||||
|
||||
If you want your switch to learn new codes, you can use the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p kaku_dimmer -i 1 -u 1 -t -l
|
||||
|
||||
If you want your switch to remove a learned code, you can use the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p kaku_dimmer -i 1 -u 1 -f -l
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 148 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 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 36 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 1353
|
||||
272 1353 273 277
|
||||
273 222 268 1358
|
||||
270 219 277 1361
|
||||
274 218 280 1358
|
||||
272 1355 271 243
|
||||
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 three types of groups:
|
||||
|
||||
- ``272 1355 271 243``
|
||||
- ``274 218 280 1358``
|
||||
- ``277 236 282 277``
|
||||
|
||||
So the first group is defined by a high 2nd, the second group has a high 4th pulse, and the third group has a low 2nd and a low 4th pulse. This third group is a special one but not much of a use while receiving. However, it must be taken care of when sending arctech dimmer codes. 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
|
||||
|
||||
000000000000000000000000010100010001
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- ID: 0 till 25
|
||||
- All: 26
|
||||
- Check: 27
|
||||
- Unit: 28 till 31
|
||||
- Dimlevel: 32 till 35
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
00000000000000000000000001 0 1 0001 0001
|
||||
|
||||
- The ``ID`` is defined as a binary number
|
||||
- The ``All`` special pulse to identify the code was meant for a dimmer
|
||||
- The ``Check`` defines whether a devices needs to be turned On or Off
|
||||
- The ``Unit`` is also defined as a binary number
|
||||
- The ``Dimlevel`` defines the specific dimlevel
|
||||
|
||||
So this code represents:
|
||||
|
||||
- ID: 1
|
||||
- All: Single
|
||||
- Check: Valid
|
||||
- Unit: 1
|
||||
- Dimlevel: 1
|
||||
|
||||
Another example:
|
||||
|
||||
- ID: 123456
|
||||
- All: All
|
||||
- Check: Valid
|
||||
- Unit: 15
|
||||
- Dimlevel: 8
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
000000000111100010010000001011111000
|
||||
@@ -0,0 +1,9 @@
|
||||
Dimmers
|
||||
=======
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
intertechno
|
||||
kaku
|
||||
nexa
|
||||
@@ -0,0 +1,4 @@
|
||||
Intertechno
|
||||
===========
|
||||
|
||||
.. include:: _kaku.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
KlikAanKlikUit
|
||||
==============
|
||||
|
||||
.. include:: _kaku.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
Nexa WMR-252
|
||||
============
|
||||
|
||||
.. include:: _kaku.rst
|
||||
@@ -0,0 +1,13 @@
|
||||
433.92Mhz
|
||||
=========
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
|
||||
alarm/index
|
||||
contact/index
|
||||
dimmer/index
|
||||
motion/index
|
||||
screen/index
|
||||
weather/index
|
||||
switch/index
|
||||
@@ -0,0 +1,127 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
EV1527 Motion
|
||||
=============
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+------------------+--------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+------------------+--------------+
|
||||
| EV1527 | ev1527 |
|
||||
+------------------+--------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"contact": {
|
||||
"protocol": [ "ev1527" ],
|
||||
"id": [{
|
||||
"unitcode": 0
|
||||
}],
|
||||
"state": "closed"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| unitcode | 0 - 1048575 |
|
||||
+------------------+-----------------+
|
||||
| state | opened / closed |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
253 759 759 253 759 253 253 759 253 759 253 759 253 759 253 759 253 759 759 253 253 759 253 759 759 253 759 253 759 253 253 759 253 759 759 253 253 759 759 253 253 759 253 759 759 253 253 8602
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
The first six pulses are the address bits, followed by upto another 6 Address/Data Bits. Address Bits can have three states: 0, 1, F (tri-state). Data Bits have only two states: 0 or 1.
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
253 759
|
||||
759 253
|
||||
759 253
|
||||
253 759
|
||||
253 759
|
||||
253 759
|
||||
253 759
|
||||
253 759
|
||||
253 759
|
||||
759 253
|
||||
253 759
|
||||
253 759
|
||||
759 253
|
||||
759 253
|
||||
759 253
|
||||
253 759
|
||||
253 759
|
||||
759 253
|
||||
253 759
|
||||
759 253
|
||||
253 759
|
||||
253 759
|
||||
759 253
|
||||
|
||||
If we now take a careful look at these groups you can distinguish three types of groups:
|
||||
|
||||
#. ``253 759``
|
||||
#. ``759 253``
|
||||
|
||||
So the first group is defined by a high second pulse, the second group has a low second pulse. We then get the following output:
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
10001111110110001101 0110
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- UnitCode: 0 till 20
|
||||
- State: 20
|
||||
|
||||
Bits 21-24 are not used.
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
10001111110110001101 0
|
||||
|
||||
- The ``UnitCode`` is defined as a binary number
|
||||
- The ``State`` defines whether a sensor state is opened or closed
|
||||
|
||||
So this code represents:
|
||||
|
||||
- UnitCode: 589197
|
||||
- State: opened
|
||||
@@ -0,0 +1,8 @@
|
||||
Motion
|
||||
=======
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
ev1527
|
||||
kaku
|
||||
@@ -0,0 +1,150 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
KlikAanKlikUit
|
||||
==============
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+------------------+--------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+------------------+--------------+
|
||||
| KlikAanKlikUit | kaku_motion |
|
||||
+------------------+--------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"contact": {
|
||||
"protocol": [ "kaku_motion" ],
|
||||
"id": [{
|
||||
"id": 100,
|
||||
"unit": 0
|
||||
}],
|
||||
"state": "on"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| unitcode | 0 - 67108863 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 148 pulses like this
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
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 36 groups of 4 pulses (and thereby dropping the ``header`` and ``footer`` pulses).
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
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:: guess
|
||||
|
||||
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:: guess
|
||||
|
||||
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 is opened or closed
|
||||
- The ``Unit`` is also defined as a binary number
|
||||
|
||||
So this code represents:
|
||||
|
||||
- ID: 1
|
||||
- All: Single
|
||||
- State: On
|
||||
- Unit: 1
|
||||
|
||||
Another example:
|
||||
|
||||
- ID: 123456
|
||||
- All: All
|
||||
- State: Off
|
||||
- Unit: 15
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
00000000011110001001000000101111
|
||||
@@ -0,0 +1,187 @@
|
||||
.. |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** |
|
||||
+------------------+--------------+
|
||||
| KlikAanKlikUit | kaku_screen |
|
||||
+------------------+--------------+
|
||||
| DI-O (Chacon) | dio_screen |
|
||||
+------------------+--------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
-t --up send an up signal
|
||||
-f --down send an down signal
|
||||
-u --unit=unit control a device with this unit code
|
||||
-i --id=id control a device with this id
|
||||
-a --all send command to all devices with this id
|
||||
-l --learn send multiple streams so screen can learn
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"screen": {
|
||||
"protocol": [ "kaku_screen" ],
|
||||
"id": [{
|
||||
"id": 100,
|
||||
"unit": 0
|
||||
}],
|
||||
"state": "down"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"screen": {
|
||||
"name": "Screen",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 67108863 |
|
||||
+------------------+-----------------+
|
||||
| unit | 0 - 15 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| readonly | 0 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| confirm | 0 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
|
||||
.. rubric:: Notes
|
||||
|
||||
If you want your switch to learn new codes, you can use the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p kaku_screen -i 1 -u 1 -t -l
|
||||
|
||||
If you want your switch to remove a learned code, you can use the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p kaku_screen -i 1 -u 1 -f -l
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 132 pulses like this
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
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 36 groups of 4 pulses (and thereby dropping the ``header`` and ``footer`` pulses).
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
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:: guess
|
||||
|
||||
00000000000000000000000001010001
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- ID: 0 till 25
|
||||
- All: 26
|
||||
- State: 27
|
||||
- Unit: 28 till 31
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
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 is opened or closed
|
||||
- The ``Unit`` is also defined as a binary number
|
||||
|
||||
So this code represents:
|
||||
|
||||
- ID: 1
|
||||
- All: Single
|
||||
- State: Up
|
||||
- Unit: 1
|
||||
|
||||
Another example:
|
||||
|
||||
- ID: 123456
|
||||
- All: All
|
||||
- State: Down
|
||||
- Unit: 15
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
00000000011110001001000000101111
|
||||
@@ -0,0 +1,4 @@
|
||||
D-IO (Chacon)
|
||||
=============
|
||||
|
||||
.. include:: _kaku.rst
|
||||
@@ -0,0 +1,9 @@
|
||||
Screens
|
||||
=======
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
kaku
|
||||
d_io
|
||||
kaku_old
|
||||
@@ -0,0 +1,4 @@
|
||||
KlikAanKlikUit
|
||||
==============
|
||||
|
||||
.. include:: _kaku.rst
|
||||
@@ -0,0 +1,173 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
KlikAanKlikUit (Old)
|
||||
====================
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+------------------+------------------+
|
||||
| KlikAanKlikUit | kaku_screen_old |
|
||||
+------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
-t --up send an up signal
|
||||
-f --down send an down signal
|
||||
-u --unit=unit control a device with this unit code
|
||||
-i --id=id control a device with this id
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"screen": {
|
||||
"protocol": [ "kaku_screen_old" ],
|
||||
"id": [{
|
||||
"id": 16,
|
||||
"unit": 0
|
||||
}],
|
||||
"state": "down"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"screen": {
|
||||
"name": "Screen",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| unit | 0 - 15 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| readonly | 0 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| confirm | 0 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
|
||||
.. rubric:: Notes
|
||||
|
||||
|
||||
The old KlikAanKlikUit devices work setting two wheels: group (0-H) and device number (0-16). To control a device from pilight you need to send the correct group and unit id, these do not correspond 1:1.
|
||||
|
||||
A-1 on the unit corresponds with unit 0 id 0 in pilight A-2 on the unit corresponds with unit 0 id 1 in pilight etc.
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
295 1180 295 1180 295 1180 1180 295 295 1180 295 1180 295 1180 1180 295 295 1180 1180 295 295 1180 1180 295 295 1180 1180 295 295 1180 1180 295 295 1180 295 1180 295 1180 1180 295 295 1180 1180 295 295 1180 1180 295 295 11210
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
295 1180 295 1180
|
||||
295 1180 1180 295
|
||||
295 1180 295 1180
|
||||
295 1180 1180 295
|
||||
295 1180 1180 295
|
||||
|
||||
295 1180 1180 295
|
||||
295 1180 1180 295
|
||||
295 1180 1180 295
|
||||
295 1180 295 1180
|
||||
295 1180 1180 295
|
||||
|
||||
295 1180 1180 295
|
||||
295 1180 1180 295
|
||||
|
||||
295 11210
|
||||
|
||||
If we now look at carefully at these groups you can distinguish two types of groups:
|
||||
|
||||
#. 295 1180 1180 295
|
||||
#. 295 1180 295 1180
|
||||
|
||||
So the first group is defined by a high 3th pulse and the second group has a low 3rd pulse. In this case we say a high 3rd pulse means a 0 and a high 3rd pulse means a 1. We then get the following output:
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
10100 00010 0 0
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- Unit: 0 till 5 (inversed)
|
||||
- ID: 6 till 10 (inversed)
|
||||
- Fixed: 11 (always 0)
|
||||
- State: 12 (inversed)
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
10100 00010 0 0
|
||||
|
||||
- The ``Unit`` is defined as a binary number
|
||||
- The ``ID`` is defined as a binary number
|
||||
- The ``Fixed`` is always 0
|
||||
- The ``State`` defines whether a devices needs to be go Up or Down
|
||||
|
||||
So this code represents:
|
||||
|
||||
- Unit: 20
|
||||
- ID: 1
|
||||
- Fixed: always 0
|
||||
- State: Down
|
||||
|
||||
Another example:
|
||||
|
||||
- Unit: 0
|
||||
- ID: 4
|
||||
- Fixed: always 0
|
||||
- State: Up
|
||||
|
||||
.. code-block:: guess
|
||||
|
||||
00000 00100 0 1
|
||||
|
||||
Furthermore the protocol filters out false positives by checking if:
|
||||
|
||||
#. Every 1st bit of the first 12 groups of 4 bits is always LOW (0)
|
||||
#. 2nd bit of the first 12 groups of 4 bits is always HIGH (1)
|
||||
#. 3rd and 4th bit of the first 12 groups of 4 bits are different (NOT EQUAL)
|
||||
#. Bits 49 and 50 are LOW (0) and HIGH (1) respectively (fixed footer)
|
||||
|
||||
This makes the protocol more accurate because it will respond rarely now when sartano commands are sent.
|
||||
@@ -0,0 +1,178 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+------------------+
|
||||
| Elro 800 Series | elro_800_switch |
|
||||
+----------------------+------------------+
|
||||
| Brennenstuhl | brennenstuhl |
|
||||
+----------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-s --systemcode=systemcode control a device with this systemcode
|
||||
-u --unitcode=unitcode control a device with this unitcode
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "elro_800_switch" ],
|
||||
"id": [{
|
||||
"systemcode": 31,
|
||||
"unitcode": 0
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| systemcode | 0 - 1023 |
|
||||
+------------------+-----------------+
|
||||
| unitcode | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. Note:: Workaround for 800 Series
|
||||
|
||||
1. Set your remote DIP switches like this off|off|on|off (AB660 Code) if possible
|
||||
2. Now look for systemcode and unitcode with pilight-receive
|
||||
3. Setup the config.json with the received results
|
||||
4. Get the switches in learning mode and push the buttons on the webgui accordingly to the unit.
|
||||
5. This should work until there is a protocol for the 800 series.
|
||||
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 960 320 320 960 960 320 320 960 960 320 320 960 960 320 320 960 320 960 320 960 960 320 320 9920
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 960 320
|
||||
320 960 960 320
|
||||
320 960 960 320
|
||||
320 960 960 320
|
||||
320 960 320 960
|
||||
320 960 960 320
|
||||
320 9920
|
||||
|
||||
If we now look at carefully at these groups you can distinguish three types of groups:
|
||||
|
||||
- ``320 960 320 960``
|
||||
- ``320 960 960 320``
|
||||
|
||||
So the first group is defined by a high 4th pulse and the second group has a low 4th pulse. In this case we say a high 4th pulse means a 1 and a low 4th pulse means a 0. We then get the following output:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
11111 10000 1 0
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- SystemCode: 0 till 5
|
||||
- UnitCode: 6 till 10
|
||||
- State: 11
|
||||
- Check: 12 (inverse state)
|
||||
|
||||
|
||||
- The ``SystemCode`` is defined as a binary number
|
||||
- The ``UnitCode`` is defined as a binary number
|
||||
- The ``State`` defines whether a devices needs to be turned On or Off
|
||||
- The ``Check`` defines whether a devices needs to be turned On or Off (but is inverse)
|
||||
|
||||
So this code represents:
|
||||
|
||||
- SystemCode: 31
|
||||
- UnitCode: 1
|
||||
- State: On
|
||||
- Check: On (inverse state)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
00000 00100 0 1
|
||||
|
||||
Another example:
|
||||
|
||||
- SystemCode: 0
|
||||
- UnitCode: 4
|
||||
- State: Off
|
||||
- Check: Off (inverse state)
|
||||
|
||||
Furthermore the protocol filters out false positives by checking if:
|
||||
|
||||
- Every 1st bit of the first 12 groups of 4 bits is always LOW (0)
|
||||
- 2nd bit of the first 12 groups of 4 bits is always HIGH (1)
|
||||
- 3rd and 4th bit of the first 12 groups of 4 bits are different (NOT EQUAL)
|
||||
- Bits 49 and 50 are LOW (0) and HIGH (1) respectively (fixed footer)
|
||||
|
||||
This makes the protocol more accurate because it will respond less when arctech_old commands are sent.
|
||||
|
||||
The numeric mapping of a button on the remote control is binary counted, as follows:
|
||||
|
||||
- A = 1
|
||||
- B = 2
|
||||
- C = 4
|
||||
- D = 8
|
||||
- E = 16
|
||||
|
||||
All possible combinations of dip switches on the socket can be used with pilight. For instance, if you set the switches that correspond to A and E, the socket will react on unit code “A+E”: 17 (1+16). By pushing A and E simultaneously on the remote, you can also switch the corresponding socket. However, this may also trigger sockets that are listening to A and/or E if you don't push both buttons at exactly the same time.
|
||||
@@ -0,0 +1,208 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+--------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+--------------------+
|
||||
| CoCo Technologies | coco_switch |
|
||||
+----------------------+--------------------+
|
||||
| D-IO (Chacon) | dio_switch |
|
||||
+----------------------+--------------------+
|
||||
| Intertechno | intertechno_switch |
|
||||
+----------------------+--------------------+
|
||||
| KlikAanKlikUit | kaku_switch |
|
||||
+----------------------+--------------------+
|
||||
| Nexa | nexa_switch |
|
||||
+----------------------+--------------------+
|
||||
| Rev Ritter 8341LC | intertechno_switch |
|
||||
+----------------------+--------------------+
|
||||
| Rev Ritter 8342LC | intertechno_switch |
|
||||
+----------------------+--------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
-u --unit=unit control a device with this unit code
|
||||
-i --id=id control a device with this id
|
||||
-a --all send command to all devices with this id
|
||||
-l --learn send multiple streams so switch can learn
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "kaku_switch" ],
|
||||
"id": [{
|
||||
"id": 100,
|
||||
"unit": 0
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 67108863 |
|
||||
+------------------+-----------------+
|
||||
| unit | 0 - 15 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| all | 0 | 1 or 0 | | If specified this will trigger the "group" |
|
||||
| | | | | function of the advanced remotes and trigger |
|
||||
| | | | | all registered devices for the given unitcode |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Notes
|
||||
|
||||
If you want your switch to learn new codes, you can use the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p kaku_switch -i 1 -u 1 -t -l
|
||||
|
||||
If you want your switch to remove a learned code, you can use the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p kaku_switch -i 1 -u 1 -f -l
|
||||
|
||||
.. 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: On
|
||||
- Unit: 1
|
||||
|
||||
Another example:
|
||||
|
||||
- ID: 123456
|
||||
- All: All
|
||||
- State: Off
|
||||
- Unit: 15
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
00000000011110001001000000101111
|
||||
@@ -0,0 +1,201 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+------------------+
|
||||
| Cogex | cogex |
|
||||
+----------------------+------------------+
|
||||
| Dúwi Terminal | duwi |
|
||||
+----------------------+------------------+
|
||||
| Eurodomest | kaku_switch_old |
|
||||
+----------------------+------------------+
|
||||
| Intertechno | intertechno_old |
|
||||
+----------------------+------------------+
|
||||
| Dúwi Terminal | duwi |
|
||||
+----------------------+------------------+
|
||||
| KlikAanKlikUit | kaku_switch_old |
|
||||
+----------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
-u --unit=unit control a device with this unit code
|
||||
-i --id=id control a device with this id
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "kaku_switch_old" ],
|
||||
"id": [{
|
||||
"id": 10,
|
||||
"unit": 0
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| unit | 0 - 15 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Notes
|
||||
|
||||
The old KlikAanKlikUit devices work setting two wheels: group (0-H) and device number (0-16). To control a device from pilight you need to send the correct group and unit id, these do not correspond 1:1.
|
||||
|
||||
A-1 on the unit corresponds with unit 0 id 0 in pilight A-2 on the unit corresponds with unit 0 id 1 in pilight etc.
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
295 1180 295 1180 295 1180 1180 295 295 1180 295 1180 295 1180 1180 295 295 1180 1180 295 295 1180 1180 295 295 1180 1180 295 295 1180 1180 295 295 1180 295 1180 295 1180 1180 295 295 1180 1180 295 295 1180 1180 295 295 11210
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
295 1180 295 1180
|
||||
295 1180 1180 295
|
||||
295 1180 295 1180
|
||||
295 1180 1180 295
|
||||
295 1180 1180 295
|
||||
|
||||
295 1180 1180 295
|
||||
295 1180 1180 295
|
||||
295 1180 1180 295
|
||||
295 1180 295 1180
|
||||
295 1180 1180 295
|
||||
|
||||
295 1180 1180 295
|
||||
295 1180 1180 295
|
||||
|
||||
295 11210
|
||||
|
||||
If we now look at carefully at these groups you can distinguish two types of groups:
|
||||
|
||||
- ``295 1180 1180 295``
|
||||
- ``295 1180 295 1180``
|
||||
|
||||
So the first group is defined by a high 3th pulse and the second group has a low 3rd pulse. In this case we say a high 3rd pulse means a 0 and a low 3rd pulse means a 1. We then get the following output:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
10100 00010 0 0
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- Unit: 0 till 5 (inversed)
|
||||
- ID: 6 till 10 (inversed)
|
||||
- Fixed: 11 (always 0)
|
||||
- State: 12 (inversed)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
10100 00010 0 0
|
||||
|
||||
- The ``Unit`` is defined as a binary number
|
||||
- The ``ID`` is defined as a binary number
|
||||
- The ``Fixed`` is always 0
|
||||
- The ``State`` defines whether a devices needs to be turned On or Off
|
||||
|
||||
So this code represents:
|
||||
|
||||
- Unit: 20
|
||||
- ID: 1
|
||||
- Fixed: always 0
|
||||
- State: Off
|
||||
|
||||
Another example:
|
||||
|
||||
- Unit: 0
|
||||
- ID: 4
|
||||
- Fixed: always 0
|
||||
- State: On
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
00000 00100 0 1
|
||||
|
||||
Furthermore the protocol filters out false positives by checking if:
|
||||
|
||||
- Every 1st bit of the first 12 groups of 4 bits is always LOW (0)
|
||||
- 2nd bit of the first 12 groups of 4 bits is always HIGH (1)
|
||||
- 3rd and 4th bit of the first 12 groups of 4 bits are different (NOT EQUAL)
|
||||
- Bits 49 and 50 are LOW (0) and HIGH (1) respectively (fixed footer)
|
||||
|
||||
This makes the protocol more accurate because it will respond rarely now when sartano commands are sent.
|
||||
|
||||
.. note:: **Eurodomest**
|
||||
|
||||
The Eurodomest (Intertechno) switches listens to the kaku_switch_old protocol, but the remote doesn't send using the kaku_switch_old protocol. When using pilight-receive, the following protocols are received using the remote:
|
||||
|
||||
- elro_800_contact
|
||||
- elro_800_switch
|
||||
- ehome
|
||||
- cleverwatts
|
||||
|
||||
To use the Eurodomest switches with the kaku_switch_old protocol on pilight, the following steps have to be performed:
|
||||
|
||||
- Hold the On/Off button until the LED flashes.
|
||||
- In a terminal window do:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p kaku_switch_old -i <choose your own ID between 1~30> -u 0 -t
|
||||
|
||||
- If everything is Ok the switch is programmed.
|
||||
- For wall-plug 2 & 3 change the value -u
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+------------------+
|
||||
| Rising Sun RSL366 | rsl366 |
|
||||
+----------------------+------------------+
|
||||
| Brennenstuhl | brennenstuhl |
|
||||
+----------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-s --systemcode=systemcode control a device with this systemcode
|
||||
-u --programcode=programcode control a device with this programcode
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"switch": {
|
||||
"protocol": [ "promax" ],
|
||||
"id": [{
|
||||
"systemcode": 4,
|
||||
"programcode": 1
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| systemcode | 0 - 4 |
|
||||
+------------------+-----------------+
|
||||
| unitcode | 0 - 4 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. note:: **RSL366**
|
||||
|
||||
The RSL366 switches come with two dials, one selecting the Systemcode (1 to 4) and the Programcode (1 to 4). The systemcode allows one remote to control up to 16 switches. The systemcode parameter designates the dial on top of the back side of the switch, and the small lever on the back of the remote. The programcode parameter designates the lower dial on the back of the switch, and the individual buttons on the face of the remote. So if your switch has the higher dial set to 4, and the lower one set to 1, you should use:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
systemcode: 4
|
||||
programcode: 1
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
390 1170 1170 390 390 1170 1170 390 390 1170 1170 390 390 1170 390 1170 390 1170 390 1170 390 1170 1170 390 390 1170 1170 390 390 1170 1170 390 390 1170 1170 390 390 1170 1170 390 390 1170 1170 390 390 1170 1170 390 390 13260
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
390 1170 1170 390
|
||||
390 1170 1170 390
|
||||
390 1170 1170 390
|
||||
390 1170 390 1170
|
||||
|
||||
390 1170 390 1170
|
||||
390 1170 1170 390
|
||||
390 1170 1170 390
|
||||
390 1170 1170 390
|
||||
|
||||
390 1170 1170 390
|
||||
390 1170 1170 390
|
||||
390 1170 1170 390
|
||||
|
||||
390 1170 1170 390
|
||||
|
||||
If we now look at carefully at these groups you can distinguish three types of groups:
|
||||
|
||||
- ``390 1170 1170 390``
|
||||
- ``390 1170 390 1170``
|
||||
|
||||
#. The first group is defined by a low 1st and low 4th pulse, and we call it low.
|
||||
#. The second group has a high 2nd and 4th pulse, and we call it high.
|
||||
|
||||
We then get the following output:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
LLLH HLLL LL LL
|
||||
|
||||
All H's can be translated to 1. All L's can be translated to 0.
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- Systemcode: 1 till 4
|
||||
- Programcode: 5 till 8
|
||||
- 9 to 11 are always low and don't convey any information
|
||||
- State: 12 (state)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
0001 1000 000 0
|
||||
|
||||
- The ``SystemCode`` is defined as position of the pulse group that bears the **high** signal in the first grouping (i.e. if the third pulse group is high then systemcode is 3)
|
||||
- The ``ProgramCode`` is defined as the position of the pulse group that bears the **high** signal in the second grouping (i.e. if the second pulse group is high then systemcode is 2)
|
||||
- The ``State`` defines whether a devices needs to be turned On or Off. If it bears the **high** pulse group - the device must be turned off, if it bears the **low** pulse group it must be turned on
|
||||
|
||||
So this code represents:
|
||||
|
||||
- SystemCode: 4
|
||||
- ProgramCode: 1
|
||||
- State: On
|
||||
|
||||
Another example:
|
||||
|
||||
- Unit: 1
|
||||
- ID: 3
|
||||
- State: Off
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
1000 0010 000 1
|
||||
@@ -0,0 +1,221 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Beamish
|
||||
=======
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+------------------+
|
||||
| Beamish 4-AE4 | beamish_switch |
|
||||
+----------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-t --on send a toggle state signal to the device
|
||||
-f --off send a toggle state signal to the device
|
||||
-i --id=id control the device with this system id (1 ... 65535)
|
||||
-u --unit=unit control the device with this unit code (1 ... 4)
|
||||
-a --all send on/off command to all device units belonging to this system id
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "beamish_switch" ],
|
||||
"id": [{
|
||||
"id": 8,
|
||||
"unit": 2
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| systemcode | 1 - 65535 |
|
||||
+------------------+-----------------+
|
||||
| unit | 1 - 4 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
323 1292 323 1292 323 1292 323 1292 323 1292 323 1292 323 1292 323 1292 323 1292 323 1292 323 1292 323 1292 1292 323 323 1292 323 1292 323 1292 323 1292 323 1292 1292 323 1292 323 323 1292 323 1292 323 1292 323 1292 323 10982
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
1292 323
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
1292 323
|
||||
1292 323
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 1292
|
||||
323 10982
|
||||
|
||||
If we now look at carefully at these groups you can distinguish three types of groups:
|
||||
|
||||
- ``323 1292``
|
||||
- ``1292 323``
|
||||
|
||||
The 1st group is defined by a short-long sequence (logical 0) The 2nd group is defined by a long-short sequence (logical 1):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
000000000000100000110000
|
||||
|
||||
We can group the sequence of bits into the following groups A and B:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
AAAAAAAAAAAAAAAA BBBB BBBB
|
||||
0000000000001000 0011 0000
|
||||
|
||||
Each of the groups of bits (A and B) has a specific meaning:
|
||||
|
||||
+-----------+-----------+-----------------+------------+-----------------+
|
||||
| **Group** | **Bit #** | **Config name** | **Range** | **Description** |
|
||||
+-----------+-----------+-----------------+------------+-----------------+
|
||||
| A | 1 to 16 | id | 1 to 65535 | SystemCode id |
|
||||
+-----------+-----------+-----------------+------------+-----------------+
|
||||
| B | 17 to 24 | unit | 1 to 4 | ButtonCode unit |
|
||||
+-----------+-----------+-----------------+------------+-----------------+
|
||||
|
||||
The protocol driver creates the binary presentation as required by the device
|
||||
|
||||
+------+------+-------+-------------------------------+
|
||||
| 1100 | 0000 | -u 1 | Button A Toggle device status |
|
||||
+------+------+-------+-------------------------------+
|
||||
| 0011 | 0000 | -u 2 | Button B Toggle device status |
|
||||
+------+------+-------+-------------------------------+
|
||||
| 0000 | 1100 | -u 3 | Button C Toggle device status |
|
||||
+------+------+-------+-------------------------------+
|
||||
| 0000 | 0011 | -u 4 | Button D Toggle device status |
|
||||
+------+------+-------+-------------------------------+
|
||||
| 0000 | 1111 | -a -t | Button ALL ON |
|
||||
+------+------+-------+-------------------------------+
|
||||
| 1100 | 0011 | -a -f | Button ALL OFF |
|
||||
+------+------+-------+-------------------------------+
|
||||
|
||||
So this code represents:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
{
|
||||
"code": {
|
||||
"id": 8,
|
||||
"unit": 2
|
||||
},
|
||||
"origin": "receiver",
|
||||
"protocol": "beamish_switch",
|
||||
"uuid": "0000-00-00-00-000000",
|
||||
"repeats": 2
|
||||
}
|
||||
|
||||
.. rubric:: Examples
|
||||
|
||||
CLI command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p beamish_switch -i 8 -u 1
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
{
|
||||
"code": {
|
||||
"systemcode": 2,
|
||||
"id": 8,
|
||||
"unit": 1
|
||||
},
|
||||
"origin": "receiver",
|
||||
"protocol": "beamish_switch",
|
||||
"uuid": "0000-00-00-00-000000",
|
||||
"repeats": 1
|
||||
}
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p beamish_switch -i 8 -a -t
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
{
|
||||
"origin": "sender",
|
||||
"protocol": "beamish_switch",
|
||||
"code": {
|
||||
"id": 8,
|
||||
"all": 1,
|
||||
"state": "on"
|
||||
},
|
||||
"repeat": 1,
|
||||
"uuid": "0000-00-00-00-000000"
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
Brennenstuhl
|
||||
=============
|
||||
|
||||
.. include:: _elro_800.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
ByeByeStandby
|
||||
=============
|
||||
|
||||
.. include:: _kaku_old.rst
|
||||
@@ -0,0 +1,160 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Clarus
|
||||
======
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+------------------+
|
||||
| Clarus | clarus_switch |
|
||||
+----------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-i --id=id control a device with this systemcode
|
||||
-u --unit=unit control a device with this programcode
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "clarus_switch" ],
|
||||
"id": [{
|
||||
"id": "A2",
|
||||
"unit": 10
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | A0 - F32 |
|
||||
+------------------+-----------------+
|
||||
| unit | 0 - 63 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
189 567 567 189 189 567 567 189 189 567 189 567 189 567 567 189 189 567 189 567 189 567 567 189 189 567 567 189 189 567 567 189 189 567 189 567 567 189 567 189 189 567 189 567 567 189 567 189 189 6426
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
189 567 567 189
|
||||
189 567 567 189
|
||||
189 567 189 567
|
||||
189 567 567 189
|
||||
189 567 189 567
|
||||
|
||||
189 567 567 189
|
||||
189 567 567 189
|
||||
189 567 567 189
|
||||
189 567 189 567
|
||||
567 189 567 189
|
||||
|
||||
189 567 189 567
|
||||
567 189 567 189
|
||||
|
||||
189 6426
|
||||
|
||||
If we now look at carefully at these groups you can distinguish three types of groups:
|
||||
|
||||
#. ``189 567 567 189``
|
||||
#. ``567 189 567 189``
|
||||
#. ``189 567 189 567``
|
||||
|
||||
- The first group is defined by a low 1st and low 4rd pulse pulse, hence we call it low.
|
||||
- The second group has a high 1st and 3rd pulse, hence we call it med.
|
||||
- The final group has a low 1st and low 3rd pulse, hence we call it high.
|
||||
|
||||
We then get the following output:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
LLHLH LLLHM HM
|
||||
|
||||
All L's can be translated to 0, the H's to 1's, and M's to 2.
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- Unit: 0 till 5
|
||||
- ID: 6 till 10
|
||||
- State: 12 (state)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
00101 00012 12
|
||||
|
||||
- The ``Unit`` is defined as a binary number
|
||||
- The ``ID`` is defined as a binary number combined with a letter
|
||||
- The ``State`` defines whether a devices needs to be turned On or Off
|
||||
|
||||
So this code represents:
|
||||
|
||||
- Unit: 10
|
||||
- ID: A2
|
||||
- State: On
|
||||
|
||||
Another example:
|
||||
|
||||
- Unit: 0
|
||||
- ID: B1
|
||||
- State: Off
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
00101 00021 21
|
||||
@@ -0,0 +1,178 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Cleverwatts
|
||||
===========
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+------------------+
|
||||
| Cleverwatts | cleverwatts |
|
||||
+----------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-i --id=id control a device with this id
|
||||
-u --unit=unit control a device with this unit
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
-a --all send an all signal
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "cleverwatts" ],
|
||||
"id": [{
|
||||
"id": 73404,
|
||||
"unit": 0
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 1 - 1048575 |
|
||||
+------------------+-----------------+
|
||||
| unit | 0 - 3 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
270 810 810 270 810 270 270 810 810 270 810 270 810 270 270 810 810 270 270 810 810 270 270 810 810 270 270 810 270 810 810 270 270 810 270 810 270 810 270 810 810 270 810 270 810 270 270 810 270 9180
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
270 810
|
||||
810 270
|
||||
810 270
|
||||
270 810
|
||||
810 270
|
||||
810 270
|
||||
810 270
|
||||
270 810
|
||||
810 270
|
||||
270 810
|
||||
810 270
|
||||
270 810
|
||||
810 270
|
||||
270 810
|
||||
270 810
|
||||
810 270
|
||||
270 810
|
||||
270 810
|
||||
270 810
|
||||
270 810
|
||||
810 270
|
||||
810 270
|
||||
810 270
|
||||
270 810
|
||||
|
||||
If we now look at carefully at these groups you can distinguish three types of groups:
|
||||
|
||||
#. ``270 810``
|
||||
#. ``810 270``
|
||||
|
||||
- The first group is defined by a low 1st and high 2nd pulse, hence we call it low.
|
||||
- The second group has a high 1st and low 2nd pulse, hence we call it high.
|
||||
|
||||
We then get the following output:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
0 1
|
||||
1 0
|
||||
1 0
|
||||
0 1
|
||||
1 0
|
||||
1 0
|
||||
1 0
|
||||
0 1
|
||||
1 0
|
||||
0 1
|
||||
1 0
|
||||
0 1
|
||||
1 0
|
||||
0 1
|
||||
0 1
|
||||
1 0
|
||||
0 1
|
||||
0 1
|
||||
0 1
|
||||
0 1
|
||||
1 0
|
||||
1 0
|
||||
1 0
|
||||
0 1
|
||||
|
||||
We then remove the first column of numbers and then put the remaining numbers in a row:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
1001000101011011110001
|
||||
|
||||
Each (group) of numbers has a specific meaning and are defined in binary format:
|
||||
|
||||
- ID: 0 till 19
|
||||
- State: 20
|
||||
- Unit: 21 and 22
|
||||
- All: 23
|
||||
|
||||
So this code represents:
|
||||
|
||||
- Unit: 595311
|
||||
- ID: 0
|
||||
- State: On
|
||||
- All: Single
|
||||
@@ -0,0 +1,4 @@
|
||||
CoCo Technologies
|
||||
=================
|
||||
|
||||
.. include:: _kaku.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
Cogex
|
||||
=====
|
||||
|
||||
.. include:: _kaku_old.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
D-IO (Chacon)
|
||||
=============
|
||||
|
||||
.. include:: _kaku.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
Dúwi Terminal
|
||||
=============
|
||||
|
||||
.. include:: _kaku_old.rst
|
||||
@@ -0,0 +1,274 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Elro HE (300 Series)
|
||||
====================
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+------------------+
|
||||
| Elro 300 Series | elro_300_switch |
|
||||
+----------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-s --systemcode=systemcode control a device with this systemcode
|
||||
-u --unitcode=unitcode control a device with this unitcode
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
-a --all trigger group switching
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "elro_300_switch" ],
|
||||
"id": [{
|
||||
"systemcode": 123456,
|
||||
"unitcode": 0
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| systemcode | 0 - 4294967295 |
|
||||
+------------------+-----------------+
|
||||
| unitcode | 0 - 99 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+----------------------+-------------+------------+------------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+------------------------------------------------------------+
|
||||
| all | 1 | 1 or 0 | | If specified this will trigger the **group** function of |
|
||||
| | | | | the advanced remotes and trigger all registered devices |
|
||||
| | | | | for the given Systemcode |
|
||||
+----------------------+-------------+------------+------------------------------------------------------------+
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. Note::
|
||||
|
||||
The group button appears to be sending the unitcode of I-1 (First band, first unit) no matter to which band the remote is currently set.
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 116 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
302 1208 302 1208 302 302 302 302 302 302 302 1208 302 1208 302 1208 302 1208 302 302 302 302 302 1208 302 302 302 1208 302 1208 302 1208 302 1208 302 302 302 302 302 1208 302 302 302 1208 302 1208 302 302 302 302 302 1208 302 302 302 1208 302 1208 302 1208 302 1208 302 302 302 302 302 1208 302 1208 302 302 302 1208 302 1208 302 302 302 302 302 1208 302 302 302 1208 302 1208 302 302 302 1208 302 1208 302 302 302 1208 302 302 302 1208 302 302 302 302 302 1208 302 1208 302 1208 302 302 302 10268
|
||||
|
||||
These pulses are separated into groups of 2:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
302 1208
|
||||
302 1208
|
||||
302 302
|
||||
302 302
|
||||
302 302
|
||||
302 1208
|
||||
302 1208
|
||||
302 1208
|
||||
302 1208
|
||||
302 302
|
||||
302 302
|
||||
302 1208
|
||||
302 302
|
||||
302 1208
|
||||
302 1208
|
||||
302 1208
|
||||
302 1208
|
||||
302 302
|
||||
302 302
|
||||
302 1208
|
||||
302 302
|
||||
302 1208
|
||||
302 1208
|
||||
302 302
|
||||
302 302
|
||||
302 1208
|
||||
302 302
|
||||
302 1208
|
||||
302 1208
|
||||
302 1208
|
||||
302 1208
|
||||
302 302
|
||||
302 302
|
||||
302 1208
|
||||
302 1208
|
||||
302 302
|
||||
302 1208
|
||||
302 1208
|
||||
302 302
|
||||
302 302
|
||||
302 1208
|
||||
302 302
|
||||
302 1208
|
||||
302 1208
|
||||
302 302
|
||||
302 1208
|
||||
302 1208
|
||||
302 302
|
||||
302 1208
|
||||
302 302
|
||||
302 1208
|
||||
302 302
|
||||
302 302
|
||||
302 1208
|
||||
302 1208
|
||||
302 1208
|
||||
302 302
|
||||
302 10268
|
||||
|
||||
There are several easily identifiable facts here:
|
||||
|
||||
- ``320 960 320 960``
|
||||
- ``320 960 960 320``
|
||||
|
||||
#. The baseline is at 302
|
||||
#. The high Pulse is basline * 4 = 1208
|
||||
#. The last 2-pulse sequence is special, it's the footer of the message
|
||||
|
||||
Using a translation pattern of **302 1208** → 1 and **302 302** → 0 we translate this sequence into the following pattern
|
||||
|
||||
.. code-block::console
|
||||
|
||||
1100011110010111100101100101111001101100101101101010011101
|
||||
|
||||
Testing and some outside info reveals the following sections:
|
||||
|
||||
.. code-block: console
|
||||
|
||||
AAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCDDEEFFFFFFG
|
||||
|
||||
A = Startbits/preamble
|
||||
B = Address (32 Bit system code)
|
||||
C = Group Code (Grouped: 1100, Non-Grouped: 1011)
|
||||
D = Command, (On: 01, Off: 10)
|
||||
E = Group Code 2 (Grouped: 11, Non Grouped: 01)
|
||||
F = UnitCode
|
||||
G = Stopbit
|
||||
|
||||
So this code represents:
|
||||
|
||||
- SystemCode: 3165844325
|
||||
- UnitCode: 28
|
||||
- State: Off
|
||||
- UnitCode: NotSet
|
||||
|
||||
The protocol filters out false positives by checking if:
|
||||
|
||||
#. Every 1st pulse in groups of 2 is a low pulse
|
||||
#. The last two pulses are 302 and 10268 (fixed footer)
|
||||
|
||||
This is the readout from the writer's reference HE300 remote
|
||||
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| **Band** | **Code** | **UnitCode** | **GroupA** | **GroupB** |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| I | 1 | 56 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| I | 2 | 52 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| I | 3 | 44 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| I | 4 | 28 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| II | 1 | 50 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| II | 2 | 42 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| II | 3 | 26 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| II | 4 | 38 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| III | 1 | 22 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| III | 2 | 14 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| III | 3 | 49 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| III | 4 | 41 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| IV | 1 | 25 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| IV | 2 | 37 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| IV | 3 | 21 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
| IV | 4 | 13 | 13 | 2 |
|
||||
+----------+----------+--------------+------------+------------+
|
||||
|
||||
This is translated:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
1-1 11000111100 10111100101100101111001101100101 1011 10 01 000111 1
|
||||
1-2 11000111100 10111100101100101111001101100101 1011 10 01 001011 1
|
||||
1-3 11000111100 10111100101100101111001101100101 1011 10 01 001101 1
|
||||
1-4 11000111100 10111100101100101111001101100101 1011 10 01 001110 1
|
||||
2-1 11000111100 10111100101100101111001101100101 1011 10 01 010011 1
|
||||
2-2 11000111100 10111100101100101111001101100101 1011 10 01 010101 1
|
||||
2-3 11000111100 10111100101100101111001101100101 1011 10 01 010110 1
|
||||
2-4 11000111100 10111100101100101111001101100101 1011 10 01 011001 1
|
||||
3-1 11000111100 10111100101100101111001101100101 1011 10 01 011010 1
|
||||
3-2 11000111100 10111100101100101111001101100101 1011 10 01 011100 1
|
||||
3-3 11000111100 10111100101100101111001101100101 1011 10 01 100011 1
|
||||
3-4 11000111100 10111100101100101111001101100101 1011 10 01 100101 1
|
||||
4-1 11000111100 10111100101100101111001101100101 1011 10 01 100110 1
|
||||
4-2 11000111100 10111100101100101111001101100101 1011 10 01 101001 1
|
||||
4-3 11000111100 10111100101100101111001101100101 1011 10 01 101010 1
|
||||
4-4 11000111100 10111100101100101111001101100101 1011 10 01 101100 1
|
||||
|
||||
G1 11000111100 10111100101100101111001101100101 1100 10 11 000111 1
|
||||
G2 11000111100 10111100101100101111001101100101 1100 10 11 000111 1
|
||||
G3 11000111100 10111100101100101111001101100101 1100 10 11 000111 1
|
||||
G4 11000111100 10111100101100101111001101100101 1100 10 11 000111 1
|
||||
@@ -0,0 +1,154 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Elro HE (300 Series)
|
||||
====================
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+------------------+
|
||||
| Elro 400 Series | elro_400_switch |
|
||||
+----------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-s --systemcode=systemcode control a device with this systemcode
|
||||
-u --unitcode=unitcode control a device with this unitcode
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "elro_400_switch" ],
|
||||
"id": [{
|
||||
"systemcode": 31,
|
||||
"unitcode": 0
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| systemcode | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| unitcode | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 320 960 960 320 320 960 960 320 320 960 960 320 320 960 960 320 320 960 320 960 320 960 960 320 320 9920
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 320 960
|
||||
320 960 960 320
|
||||
320 960 960 320
|
||||
320 960 960 320
|
||||
320 960 960 320
|
||||
320 960 320 960
|
||||
320 960 960 320
|
||||
320 9920
|
||||
|
||||
If we now look at carefully at these groups you can distinguish two types of groups:
|
||||
|
||||
- ``320 960 320 960``
|
||||
- ``320 960 960 320``
|
||||
|
||||
So the first group is defined by a high 4th pulse and the second group has a low 4th pulse. In this case we say a high 4th pulse means a 0 and a low 4th pulse means a 1. We then get the following output:
|
||||
|
||||
.. code-block::console
|
||||
|
||||
00000 01111 0 1
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- SystemCode: 0 till 5
|
||||
- UnitCode: 6 till 10
|
||||
- State: 11 (inverse state)
|
||||
- Check: 12
|
||||
|
||||
.. code-block: console
|
||||
|
||||
00000 01111 0 1
|
||||
|
||||
- The ``SystemCode`` is defined as a binary number
|
||||
- The ``UnitCode`` is defined as a binary number
|
||||
- The ``State`` defines whether a devices needs to be turned On or Off
|
||||
- The ``Check`` defines whether a devices needs to be turned On or Off (but is inverse)
|
||||
|
||||
So this code represents:
|
||||
|
||||
- SystemCode: 31 (inversed)
|
||||
- UnitCode: 1 (inversed)
|
||||
- State: On (inverse state)
|
||||
- Check: On
|
||||
|
||||
Another example:
|
||||
|
||||
- SystemCode: 0 (inversed)
|
||||
- UnitCode: 4 (inversed)
|
||||
- State: Off (inverse state)
|
||||
- Check: Off
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
11111 11011 1 0
|
||||
@@ -0,0 +1,4 @@
|
||||
Elro HE (800 Series)
|
||||
====================
|
||||
|
||||
.. include:: _elro_800.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
Eurodomest
|
||||
==========
|
||||
|
||||
.. include:: _kaku_old.rst
|
||||
@@ -0,0 +1,178 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Impuls
|
||||
======
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+------------------+
|
||||
| Impuls | impuls |
|
||||
+----------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-s --systemcode=systemcode control a device with this systemcode
|
||||
-u --programcode=programcode control a device with this programcode
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "impuls" ],
|
||||
"id": [{
|
||||
"programcode": 8,
|
||||
"unitcode": 12
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| systemcode | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| unitcode | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Notes
|
||||
|
||||
The default settings for a set of Impuls switches are:
|
||||
|
||||
#. SystemCode: 11111 and ProgramCode: 10000
|
||||
#. ProgramCode: 01000
|
||||
#. ProgramCode: 00100
|
||||
|
||||
This translates into the following pilight systemcode and unitcode:
|
||||
|
||||
#. systemcode: 31, programcode: 1
|
||||
#. systemcode: 31, programcode: 2
|
||||
#. systemcode: 31, programcode: 4
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
885 295 885 295 885 295 885 295 885 295 885 295 295 885 885 295 295 885 885 295 295 885 295 885 295 885 885 295 295 885 295 885 295 885 885 295 295 885 885 295 295 885 885 295 295 885 295 885 295 9735
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
885 295 885 295
|
||||
885 295 885 295
|
||||
885 295 885 295
|
||||
295 885 885 295
|
||||
295 885 885 295
|
||||
|
||||
295 885 295 885
|
||||
295 885 885 295
|
||||
295 885 295 885
|
||||
295 885 885 295
|
||||
295 885 885 295
|
||||
|
||||
295 885 885 295
|
||||
295 885 295 885
|
||||
|
||||
295 9735
|
||||
|
||||
If we now look at carefully at these groups you can distinguish three types of groups:
|
||||
|
||||
#. ``295 885 295 885``
|
||||
#. ``885 295 885 295``
|
||||
#. ``295 885 885 295``
|
||||
|
||||
- The first group is defined by a low 1th and low 3rd pulse pulse, hence we call it low.
|
||||
- The second group has a high 1st and 3rd pulse, hence we call it med.
|
||||
- The final group has a low 1st and high 3rd pulse, hence we call it high.
|
||||
|
||||
We then get the following output:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
MMMHH LHLHH H L
|
||||
|
||||
All M's and H's can be translated to 1. All L's can be translated to 0.
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- Unit: 0 till 5
|
||||
- ID: 6 till 10
|
||||
- Check: 11 (inverse state)
|
||||
- State: 12 (state)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
11100 10100 1 0
|
||||
|
||||
- The ``SystemCode`` is defined as a binary number
|
||||
- The ``ProgramCode`` is defined as a binary number
|
||||
- The ``Check`` is always inverse state
|
||||
- The ``State`` defines whether a devices needs to be turned On or Off
|
||||
|
||||
So this code represents:
|
||||
|
||||
- SystemCode: 7
|
||||
- ProgramCode: 5
|
||||
- Check: Inverse state
|
||||
- State: Off
|
||||
|
||||
Another example:
|
||||
|
||||
- Unit: 0
|
||||
- ID: 4
|
||||
- Fixed: Inverse state
|
||||
- State: On
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
00000 00100 0 1
|
||||
@@ -0,0 +1,32 @@
|
||||
Switches
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
beamish
|
||||
brennenstuhl
|
||||
byebyestandby
|
||||
clarus
|
||||
cleverwatts
|
||||
coco
|
||||
cogex
|
||||
dio
|
||||
duwi
|
||||
elro_300
|
||||
elro_400
|
||||
elro_800
|
||||
eurodomest
|
||||
quigg_1000
|
||||
quigg_7000
|
||||
impuls
|
||||
intertechno
|
||||
intertechno_old
|
||||
kaku_old
|
||||
kaku
|
||||
nexa
|
||||
rsl366
|
||||
selectremote
|
||||
silvercrest
|
||||
techlico
|
||||
x10
|
||||
@@ -0,0 +1,4 @@
|
||||
Intertechno
|
||||
===========
|
||||
|
||||
.. include:: _kaku.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
Intertechno (Old Version)
|
||||
=========================
|
||||
|
||||
.. include:: _kaku_old.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
KlikAanKlikUit
|
||||
==============
|
||||
|
||||
.. include:: _kaku.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
KlikAanKlikUit (Old Version)
|
||||
============================
|
||||
|
||||
.. include:: _kaku_old.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
Nexa
|
||||
====
|
||||
|
||||
.. include:: _kaku.rst
|
||||
@@ -0,0 +1,119 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Globaltronics Quigg GT-1000
|
||||
===========================
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+-------------------------------+---------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+-------------------------------+---------------+
|
||||
| Globaltronics GmbH GT-1000 RC | quigg_gt1000 |
|
||||
+-------------------------------+---------------+
|
||||
| Globaltronics GmbH GT-FSI-08 | quigg_gt1000 |
|
||||
+-------------------------------+---------------+
|
||||
| Silvercrest AAA3680-A IP20 DE | quigg_gt1000 |
|
||||
+-------------------------------+---------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-t send an on signal to a device
|
||||
-f send an off signal to a device
|
||||
-i control the device with this system id (1 ... 15)
|
||||
-u control the device with this unit code (0 ... 3)
|
||||
-a control all switches in the given group
|
||||
-s control all switches in all groups
|
||||
|
||||
The next two parameters are optional:
|
||||
|
||||
-n specify the code sequence to use (0 ... 3)
|
||||
-s specify the super codes (0 ... 7)
|
||||
|
||||
If the specified sequence does not exists, sequence 0 will be used instead.
|
||||
If not specified a sequence will be selected at random.
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "quigg_gt1000" ],
|
||||
"id": [{
|
||||
"id": 15,
|
||||
"unit": 0
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 15 |
|
||||
+------------------+-----------------+
|
||||
| unit | 0 - 3 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Examples
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p quigg_gt1000 -i [0..15] -u [0..3] [-t|-f] {-n [0..3]}
|
||||
|
||||
Switch on or off the specified switch (-u) belonging to group (-i) optionally using specified codeseq (-n)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p quigg_gt1000 -i [0..15] -a [-t|-f] {-n [0..3]}
|
||||
|
||||
Switch on or off all switches belonging to group (-i) optionally using specified codeseq (-n)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p quigg_gt1000 -s [-t|-f] {-n [0..7]}
|
||||
|
||||
Switch on or off all compatible switches optionally using specified codeseq (-n)
|
||||
|
||||
When using the Web-GUI use "unit": 4 in the config.json file for the master switch ("all": 1) and "id”: 16 with "unit”: 5 for the super code switch ("super”: 1).
|
||||
@@ -0,0 +1,232 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Globaltronics Quigg GT-7000
|
||||
===========================
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+-------------------------------+---------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+-------------------------------+---------------+
|
||||
| Aldi Quigg GT-7000 | quigg_gt7000 |
|
||||
+-------------------------------+---------------+
|
||||
| Globaltronics GT-7000 | quigg_gt7000 |
|
||||
+-------------------------------+---------------+
|
||||
| Globaltronics GT-8000 | quigg_gt7000 |
|
||||
+-------------------------------+---------------+
|
||||
| Globaltronics GT-FSI-02 | quigg_gt7000 |
|
||||
+-------------------------------+---------------+
|
||||
| Globaltronics GT-FSI-04a | quigg_gt7000 |
|
||||
+-------------------------------+---------------+
|
||||
| Globaltronics GT-FSI-05 | quigg_gt7000 |
|
||||
+-------------------------------+---------------+
|
||||
| Globaltronics GT-FSI-05d | quigg_gt7000 |
|
||||
+-------------------------------+---------------+
|
||||
| Globaltronics 7008AS | quigg_gt7000 |
|
||||
+-------------------------------+---------------+
|
||||
| Conrad RC-710 | quigg_gt7000 |
|
||||
+-------------------------------+---------------+
|
||||
| Globaltronics GT-FSI-05 | quigg_gt7000 |
|
||||
+-------------------------------+---------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-t --on send an on signal to a device
|
||||
-f --off send an off signal to a device
|
||||
-i --id=id control the device with this system id (1 ... 4095)
|
||||
-u --unit=unit control the device with this unit code (0 ... 3)
|
||||
-a --all send command to all device units belonging to this system id
|
||||
-l --learn send multiple streams so switch can learn
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "quigg_gt7000" ],
|
||||
"id": [{
|
||||
"id": 15,
|
||||
"unit": 0
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 1 - 4095 |
|
||||
+------------------+-----------------+
|
||||
| unit | 1 - 3 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. versionchanged:: 8.0 Allow ID 0
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 4095 |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| all | 0 | 1 or 0 | | If specified this will trigger the "group" |
|
||||
| | | | | function of the advanced remotes and trigger |
|
||||
| | | | | all registered devices for the given unitcode |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
The quigg_switch protocol sends 42 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
700 1400 700 700 1400 1400 700 1400 700 700 1400 700 1400 700 1400 700 1400 700 1400 700 1400 700 1400 700 1400 700 1400 700 1400 700 1400 1400 700 700 1400 700 1400 700 1400 1400 700 81000
|
||||
|
||||
The first pulse is the ``header`` and the last pulse is 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 20 groups of 2 pulses (and thereby dropping the ``header`` and ``footer`` pulse).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
1400 700
|
||||
700 1400
|
||||
1400 700
|
||||
1400 700
|
||||
700 1400
|
||||
700 1400
|
||||
700 1400
|
||||
700 1400
|
||||
700 1400
|
||||
700 1400
|
||||
700 1400
|
||||
700 1400
|
||||
700 1400
|
||||
700 1400
|
||||
700 1400
|
||||
1400 700
|
||||
700 1400
|
||||
700 1400
|
||||
700 1400
|
||||
1400 700
|
||||
|
||||
If we now analyse these groups we can distinguish two types of groups:
|
||||
|
||||
#. ``700 1400``
|
||||
#. ``1400 700``
|
||||
|
||||
So the first group is defined by a short 1st and 2nd long and the second group by a long 1st and 2nd short pulse. So we take either of these two pulses to define a logical 0 or 1. In our case a long 1st pulse means a 1 and a short 1st pulse means a 0. We then get the following output:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
10110000000000010001
|
||||
|
||||
We can group the sequence of bits into the following groups A to H:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
AAAAAAAAAAAA BB C D E F G H
|
||||
101100000000 00 0 1 0 0 0 1
|
||||
|
||||
Each of the groups of bits (A to H) has a specific meaning:
|
||||
|
||||
+-----------+-----------+-----------------+------------+-----------------------------+
|
||||
| **Group** | **Bit #** | **Config name** | **Range** | **Description** |
|
||||
+-----------+-----------+-----------------+------------+-----------------------------+
|
||||
| A | 1 to 12 | id | 1 to 4095 | SystemCode |
|
||||
+-----------+-----------+-----------------+------------+-----------------------------+
|
||||
| B | 13, 14 | unit | 1 to 3 | UnitCode |
|
||||
+-----------+-----------+-----------------+------------+-----------------------------+
|
||||
| C | 15 | id | 1 | Command to all devices |
|
||||
+-----------+-----------+-----------------+------------+-----------------------------+
|
||||
| D | 16 | all | 0,1 | Switch ON or OFF |
|
||||
+ + + + + Dimmer DOWN or UP +
|
||||
| | | | | |
|
||||
+-----------+-----------+-----------------+------------+-----------------------------+
|
||||
| E | 17 | dimm | 0,1 | switch, dimmer mode |
|
||||
+-----------+-----------+-----------------+------------+-----------------------------+
|
||||
| F | 18 | | 0 | always zero |
|
||||
+-----------+-----------+-----------------+------------+-----------------------------+
|
||||
| G | 19 | | 0,1 | internal, handled by driver |
|
||||
+-----------+-----------+-----------------+------------+-----------------------------+
|
||||
| H | 20 | | 0,1 | even parity bit |
|
||||
+-----------+-----------+-----------------+------------+-----------------------------+
|
||||
|
||||
So this code represents:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
"id": 2816,
|
||||
"unit": 1
|
||||
"state": Off
|
||||
|
||||
.. rubric:: Examples
|
||||
|
||||
CLI command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p quigg_gt7000 -i 2816 -u 1 -f
|
||||
|
||||
.. rubric:: Comment
|
||||
|
||||
Extracting the system code id from an existing Globaltronics GT-7000 remote control device either requires a special version of the BPF, or you need to bypass the BPF.
|
||||
|
||||
After insertion of batteries the GT-7000 defaults to system code id #2816. Pressing the button "Neuer Code" located in the battery compartment, will trigger the generation of a new system code id. These are generated in sequential order, for the current quigg_switch protocol driver the id's are:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
2816, 1792, 3840, 128, 2176, 1152, 3200, 640, 2688, 1664, 3712, 384, 2432, 1408, 3456, 896, 2944, 1920, 3968, ....
|
||||
|
||||
To let the device learn a new value, press the learning mode button on the switch and send the appropriate CLI command with pilight-send (configure a switch to be unit #2 and system code id #29):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p quigg_gt7000 -i 29 -u 2 -l -t
|
||||
|
||||
The device learns that it has now system code id #29 and that it is unit #2 and enters ON mode (e.q. the switch is turned on). If the switch is not connected to power for an extended period of time, it will loose its configuration and reset to the default id #2816 unit #0. QUIGG_GT7000 compatible switches with integrated dimmer require that you configure the quigg_screen protocol in addition to the quigg_gt7000 protocol. On the webgui you will get a separate button to dimm the device up and down.
|
||||
|
||||
Subsequently the switch unit #1 with system code id #2816 is turned off.
|
||||
@@ -0,0 +1,4 @@
|
||||
RSL366
|
||||
======
|
||||
|
||||
.. include:: _rsl366.rst
|
||||
@@ -0,0 +1,138 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
SelectRemote
|
||||
============
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+------------------+
|
||||
| SelectRemote | selectremote |
|
||||
+----------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-i --id=id control a device with this id
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "selectremote" ],
|
||||
"id": [{
|
||||
"id": 4
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 7 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
396 1188 396 1188 1188 396 1188 396 1188 396 1188 396 1188 396 1188 396 396 1188 396 1188 396 1188 396 1188 396 1188 396 1188 396 1188 396 1188 396 1188 396 1188 396 1188 396 1188 396 1188 396 1188 396 1188 396 1188 396 13464
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
390 1170 1170 390
|
||||
390 1170 1170 390
|
||||
390 1170 1170 390
|
||||
390 1170 390 1170
|
||||
|
||||
390 1170 390 1170
|
||||
390 1170 1170 390
|
||||
390 1170 1170 390
|
||||
390 1170 1170 390
|
||||
|
||||
390 1170 1170 390
|
||||
390 1170 1170 390
|
||||
390 1170 1170 390
|
||||
|
||||
390 1170 1170 390
|
||||
|
||||
If we now look at carefully at these groups you can distinguish three types of groups:
|
||||
|
||||
- ``396 1188 396 1188``
|
||||
- ``1188 396 1188 396``
|
||||
|
||||
#. The first group is defined by a low 1th and low 3rd pulse pulse, hence we call it low.
|
||||
#. The second group has a high 1st and 3rd pulse, hence we call it high.
|
||||
|
||||
We then get the following output:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
011100000000
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- ID: 1 till 3
|
||||
- State: 8 (state)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
x 111 xxxx 0 xxx
|
||||
|
||||
- The ``ID`` is defined as a binary number. To calculate the ID we subtract the binary represented decimal from 7. In this case the binary ``111`` is equal to the decimal 7. That means this code represents ID 0.
|
||||
- The ``State`` defines whether a devices needs to be turned On or Off
|
||||
|
||||
So this code represents:
|
||||
|
||||
- SystemCode: 0
|
||||
- State: Off
|
||||
@@ -0,0 +1,146 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
SilverCrest
|
||||
===========
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+------------------+
|
||||
| Silvercrest | silvercrest |
|
||||
+----------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
-u --unit=unit control a device with this unit code
|
||||
-i --id=id control a device with this id
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "silvercrest" ],
|
||||
"id": [{
|
||||
"systemcode": 22,
|
||||
"unitcode": 0
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| systemcode | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| unitcode | 0 - 31 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
This protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
312 936 936 312 312 936 312 936 312 936 312 936 312 936 936 312 312 936 312 936 312 936 936 312 312 936 312 936 312 936 936 312 312 936 936 312 312 936 936 312 312 936 936 312 312 936 312 936 312 10608
|
||||
|
||||
It has no ``header`` and the last 2 pulses are the ``footer``. These are meant to identify the pulses as genuine, and the protocol also has some bit checks to filter false positives. We don't use them for further processing. The next step is to transform this output into 12 groups of 4 pulses (and thereby dropping the ``footer`` pulses).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
312 936 936 312
|
||||
312 936 312 936
|
||||
312 936 312 936
|
||||
312 936 936 312
|
||||
312 936 312 936
|
||||
|
||||
312 936 936 312
|
||||
312 936 312 936
|
||||
312 936 936 312
|
||||
312 936 936 312
|
||||
312 936 936 312
|
||||
|
||||
312 936 936 312
|
||||
312 936 312 936
|
||||
|
||||
312 10608
|
||||
|
||||
If we now look at carefully at these groups you can distinguish three types of groups:
|
||||
|
||||
- ``312 936 936 312``
|
||||
- ``312 936 312 936``
|
||||
|
||||
So the first group is defined by a high 3th pulse and the second group has a low 3rd pulse. In this case we say a high 3rd pulse means a 0 and a high 3rd pulse means a 1. We then get the following output:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
01101 01000 01
|
||||
|
||||
Each (group) of numbers has a specific meaning:
|
||||
|
||||
- Unit: 0 till 5 (inversed)
|
||||
- ID: 6 till 10 (inversed)
|
||||
- Check: 11 (inverse of state)
|
||||
- State: 12 (inversed)
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
10110 00010 0 0
|
||||
|
||||
- The ``Unit`` is defined as a binary number
|
||||
- The ``ID`` is defined as a binary number
|
||||
- The ``Check`` is always the inverse of the state
|
||||
- The ``State`` defines whether a devices needs to be turned On or Off
|
||||
|
||||
So this code represents:
|
||||
|
||||
- Unit: 22
|
||||
- ID: 2
|
||||
- Fixed: Off
|
||||
- State: On
|
||||
@@ -0,0 +1,190 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
TechLiCo
|
||||
========
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+----------------------+------------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+----------------------+------------------+
|
||||
| TechLiCo | techlico_switch |
|
||||
+----------------------+------------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-t --on send a toggle state signal to the device
|
||||
-f --off send a toggle state signal to the device
|
||||
-i --id=id control the device with this system id (1 ... 65535)
|
||||
-u --unit=unit control the device with this unit code (1 ... 4)
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "techlico_switch" ],
|
||||
"id": [{
|
||||
"id": 4935,
|
||||
"unit": 1
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 1 - 65535 |
|
||||
+------------------+-----------------+
|
||||
| unit | 1 - 4 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
The techlico_switch protocol sends 50 pulses like this
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
208 624 208 832 208 624 624 208 208 624 208 624 624 208 624 208 208 832 624 208 208 832 208 624 208 832 624 208 624 208 624 208 208 832 208 624 208 832 208 832 208 624 208 624 624 208 624 208 208 7072
|
||||
|
||||
The last two 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 24 groups of 2 pulses (and thereby dropping the ``footer`` pulse).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
208 624
|
||||
208 832
|
||||
208 624
|
||||
624 208
|
||||
208 624
|
||||
208 624
|
||||
624 208
|
||||
624 208
|
||||
208 832
|
||||
624 208
|
||||
208 832
|
||||
208 624
|
||||
208 832
|
||||
624 208
|
||||
624 208
|
||||
624 208
|
||||
208 832
|
||||
208 624
|
||||
208 832
|
||||
208 832
|
||||
208 624
|
||||
208 624
|
||||
624 208
|
||||
624 208
|
||||
208 7072
|
||||
|
||||
If we now analyse these groups we can distinguish two types of groups:
|
||||
|
||||
- ``208 624``
|
||||
- ``624 208``
|
||||
|
||||
The 1st group is defined by a short-long sequence (logical 0) The 2nd group is defined by a long-short sequence (logical 1):
|
||||
|
||||
Binary representation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
000100110100011100000011
|
||||
|
||||
We can group the sequence of bits into the following groups A and B:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
AAAAAAAAAAAAAAAA BBBB BBBB
|
||||
0001001101000111 0000 0011
|
||||
|
||||
Each of the groups of bits (A and B) has a specific meaning:
|
||||
|
||||
+-----------+-----------+-----------------+------------+-----------------+
|
||||
| **Group** | **Bit #** | **Config name** | **Range** | **Description** |
|
||||
+-----------+-----------+-----------------+------------+-----------------+
|
||||
| A | 1 to 16 | id: | 1 to 65535 | SystemCode id |
|
||||
+-----------+-----------+-----------------+------------+-----------------+
|
||||
| B | 17 to 24 | unit: | 1 to 4 | ButtonCode unit |
|
||||
+-----------+-----------+-----------------+------------+-----------------+
|
||||
|
||||
The protocol driver creates the binary presentation as required by the device
|
||||
|
||||
+-----------+------------------------------------+
|
||||
| 0000 0011 | -u 1 Button A Toogle device status |
|
||||
+-----------+------------------------------------+
|
||||
| 1100 0000 | -u 2 Button B Toogle device status |
|
||||
+-----------+------------------------------------+
|
||||
| 0000 1111 | -u 3 Button C Toogle device status |
|
||||
+-----------+------------------------------------+
|
||||
| 0000 1100 | -u 4 Button D Toogle device status |
|
||||
+-----------+------------------------------------+
|
||||
|
||||
So this code represents:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
{
|
||||
"code": {
|
||||
"id": 4935,
|
||||
"unit": 1
|
||||
},
|
||||
"origin": "receiver",
|
||||
"protocol": "techlico_switch",
|
||||
"uuid": "0000-00-00-00-000000",
|
||||
"repeats": 2
|
||||
}
|
||||
|
||||
.. rubric:: Examples
|
||||
|
||||
CLI command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
pilight-send -p techlico_switch -i 4935 -u 1
|
||||
|
||||
.. rubric:: Known Limitations
|
||||
|
||||
As the device will not report its state, and the same Button on the original remote control toggles the state of the device, the GUI may show the wrong status of the device.
|
||||
@@ -0,0 +1,79 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
X10
|
||||
===
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
:linenos:
|
||||
|
||||
-i --id=id control a device with this id
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "x10" ],
|
||||
"id": [{
|
||||
"id": "A2"
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"Lamp": {
|
||||
"name": "TV Backlit",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | A0 - P16 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| readonly | 1 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| confirm | 1 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Protocol
|
||||
|
||||
A good description on this protocol can be found in this document `x10 <http://wiki.pilight.org/X10_RF_Receiver.pdf>`_
|
||||
@@ -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
|
||||
@@ -0,0 +1,8 @@
|
||||
API
|
||||
===
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
|
||||
program/index
|
||||
weather/index
|
||||
@@ -0,0 +1,9 @@
|
||||
Program
|
||||
===========
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
lirc
|
||||
program
|
||||
xbmc
|
||||
@@ -0,0 +1,98 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Lirc
|
||||
====
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"ab": {
|
||||
"protocol": [ "lirc" ],
|
||||
"id": [{
|
||||
"remote": "logitech"
|
||||
}],
|
||||
"code": "000000000000e204",
|
||||
"repeat": 1,
|
||||
"button": "KEY_ARROWDOWN"
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| remote | *any value* |
|
||||
+------------------+-----------------+
|
||||
| code | *any value* |
|
||||
+------------------+-----------------+
|
||||
| repeat | 1 - 999 |
|
||||
+------------------+-----------------+
|
||||
| button | *any value* |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Comments
|
||||
|
||||
The Lirc protocol tries to automatically connect to Lirc when pilight starts. When a connection can be made, it will send the same output as shown with ``irw`` in a pilight format.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
root@pi:~# irw
|
||||
000000037ff07be0 00 KEY_ARROWDOWN logitech-harmony-300i
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
root@pi:~# pilight-receive
|
||||
{
|
||||
"code": {
|
||||
"id": "000000000000e204",
|
||||
"repeat": "01",
|
||||
"button": "KEY_ARROWDOWN",
|
||||
"remote": "logitech"
|
||||
},
|
||||
"origin": "receiver",
|
||||
"protocol": "lirc"
|
||||
}
|
||||
|
||||
Whenever, a connection to Lirc is lost, pilight will try to automatically reconnect.
|
||||
|
||||
All signal processing will be done by Lirc, so make sure you have a working Lirc configuration. Tutorials on this can be found all around the internet.
|
||||
|
||||
pilight tries to connect to the lirc socket found in ``/dev/lircd`` so make sure it exists or a symlink to the original socket is created to ``/dev/lircd``.
|
||||
|
||||
**Raspbian Kernels 3.18 and higher**
|
||||
|
||||
The most recent Raspbian release, with Pi 2 support, switches to a new kernel (3.18), and includes a configuration change to enable Device Tree support by default.
|
||||
|
||||
You do need to add ``dtoverlay=lirc-rpi`` to ``/boot/config.txt``.
|
||||
|
||||
Depending on your hardware setup, ``lirc-rpi`` module parameters are added to the end of the dtoverlay line: ``gpio_in_pin=16,gpio_in_pull=high,gpio_out_pin=17``
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17
|
||||
@@ -0,0 +1,124 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Program
|
||||
=======
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
-t --running start the program
|
||||
-f --stopped stop the program
|
||||
-n --name=name name of the program
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"XBMC": {
|
||||
"protocol": [ "program" ],
|
||||
"id": [{
|
||||
"name": "xbmc"
|
||||
}],
|
||||
"program": "/usr/local/lib/xbmc/xbmc.bin",
|
||||
"arguments": "",
|
||||
"stop-command": "service xbmc stop",
|
||||
"start-command": "service xbmc start",
|
||||
"state": "running",
|
||||
"pid": 11642
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"xbmc": {
|
||||
"name": "XBMC",
|
||||
"group": [ "Programs" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| name | *any value* |
|
||||
+------------------+-----------------+
|
||||
| arguments | *any value* |
|
||||
+------------------+-----------------+
|
||||
| stop-command | *any value* |
|
||||
+------------------+-----------------+
|
||||
| start-command | *any value* |
|
||||
+------------------+-----------------+
|
||||
| state | | starting |
|
||||
| | | running |
|
||||
| | | stopped |
|
||||
+------------------+-----------------+
|
||||
| pid | 0 - 9 |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+------------------+-------------+------------+-------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+------------------+-------------+------------+-------------------------------------------------+
|
||||
| poll-interval | 1 | >= 1 | How ofter do we want to check the program state |
|
||||
+------------------+-------------+------------+-------------------------------------------------+
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| readonly | 0 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| confirm | 0 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
|
||||
.. rubric:: Comment
|
||||
|
||||
The program protocol takes two important arguments
|
||||
|
||||
- The program
|
||||
- The arguments
|
||||
|
||||
You can run ``ps aux`` to find out what these are. An example:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
|
||||
root 11622 0.0 2.3 20216 8860 tty4 Ssl+ 20:04 0:01 /usr/local/sbin/splash-daemon
|
||||
root 11636 0.0 0.4 4096 1540 ? Ss 20:04 0:00 sudo -u xbian /usr/local/lib/xbmc/xbmc.bin --standalone -fs --lircdev /run/lirc/lircd
|
||||
xbian 11642 22.5 12.6 390836 48280 ? RNl 20:04 15:09 /usr/local/lib/xbmc/xbmc.bin --standalone -fs --lircdev /run/lirc/lircd
|
||||
xbian 11734 0.0 0.2 2692 1092 ? S 20:04 0:00 /bin/bash
|
||||
root 11868 0.0 1.4 9732 5432 ? Ss 20:04 0:00 python /usr/local/sbin/upstart-xbmc-bridge.py
|
||||
root 11908 0.0 0.0 0 0 ? S 20:06 0:00 [btrfs-delalloc-]
|
||||
root 13078 0.0 0.0 0 0 ? S 21:05 0:00 [kworker/u2:0]
|
||||
root 13085 0.0 0.0 0 0 ? S 21:08 0:00 [btrfs-worker-2]
|
||||
root 13166 0.0 0.0 0 0 ? S 21:10 0:00 [kworker/u2:1]
|
||||
root 13186 0.0 0.2 4424 1116 pts/2 R+ 21:11 0:00 ps aux
|
||||
|
||||
In thise case, i want to control XBMC. The xbian entry with the PID 11642 is what i want to use. The first word is the program name. In this case ``/usr/local/lib/xbmc/xbmc.bin``. Everything that comes after are the arguments ``–standalone -fs –lircdev /run/lirc/lircd``. pilight will now check for a program that matches these exact parameters. So the protocol looks for processes matching those lines and when a process is found, it updates the pid value accordingly. (The pid is just informative.)
|
||||
|
||||
If you omit the arguments value, all matching programs will be processes with or without matching arguments. If there are more than once matches, pilight will use the first.
|
||||
@@ -0,0 +1,115 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
XBMC / Kodi
|
||||
===========
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"xbmc": {
|
||||
"protocol": [ "xbmc" ],
|
||||
"id": [{
|
||||
"server": "127.0.0.1",
|
||||
"port": 9090
|
||||
}],
|
||||
"action": "shutdown",
|
||||
"media": "none"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"xbmc": {
|
||||
"name": "XBMC",
|
||||
"group": [ "Programs" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| server | *valid ip* |
|
||||
+------------------+-----------------+
|
||||
| port | 1 - 65535 |
|
||||
+------------------+-----------------+
|
||||
| action | | shutdown |
|
||||
| | | home |
|
||||
| | | play |
|
||||
| | | pause |
|
||||
| | | active |
|
||||
| | | inactive |
|
||||
+------------------+-----------------+
|
||||
| media | | none |
|
||||
| | | episode |
|
||||
| | | movie |
|
||||
| | | movies |
|
||||
| | | song |
|
||||
| | | screensaver |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. note::
|
||||
|
||||
- The ``shutdown`` and ``home`` actions are only allowed for the ``none`` media.
|
||||
- The ``play``, ``home``, and ``pause`` actions are only allowed for the ``episode``, ``movie``, ``movies``, or ``song`` media.
|
||||
- The ``active`` and ``inactive`` actions are only allowed for the ``screensaver`` media.
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| show-media | 1 | 1 or 0 | Don't display the media icon |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| show-action | 1 | 1 or 0 | Don't display the action icon |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
|
||||
.. rubric:: Comment
|
||||
|
||||
The XBMC protocol will try to connect to a XBMC instance. However, make sure the JSON-RPC API is `enabled <http://kodi.wiki/view/JSON-RPC_API#Enabling_JSON-RPC>`_ in XBMC. You don't need to do anything more. Whenever a connection to XBMC is lost, the protocol will automatically try to reconnect. The XBMC protocol sends several messages depending on the actions in XBMC.
|
||||
|
||||
+-----------+----------------+
|
||||
| **Media** | **Action** |
|
||||
+-----------+----------------+
|
||||
| movie | play, pause |
|
||||
+-----------+----------------+
|
||||
| song | play, pause |
|
||||
+-----------+----------------+
|
||||
| episode | play, pause |
|
||||
+-----------+----------------+
|
||||
| none | shutdown, home |
|
||||
+-----------+----------------+
|
||||
|
||||
The stop event isn't recording, but pilight will interpret as the home action of the none media. So when XBMC is started or when nothing plays, the action will be home. When pilight can't connect to XBMC or when the connection is lost the shutdown action of the none media will be sent.
|
||||
|
||||
Important
|
||||
|
||||
pilight uses JSON-RPC via TCP-Port 9090. Don't mix it up with JSON-RPC via HTTP which is available over port 8080 by default (http://Kodi:8080/jsonrpc). This setting is hidden in Kodi/XBMC.
|
||||
@@ -0,0 +1,9 @@
|
||||
Weather
|
||||
=======
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
wunderground
|
||||
openweathermap
|
||||
sunriseset
|
||||
@@ -0,0 +1,122 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
OpenWeatherMap
|
||||
==============
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"outside": {
|
||||
"protocol": [ "openweathermap" ],
|
||||
"id": [{
|
||||
"location": "amsterdam",
|
||||
"api": "1234567890",
|
||||
"country": "nl"
|
||||
}],
|
||||
"humidity": 76.00,
|
||||
"temperature": 7.00,
|
||||
"sunrise": 7.00,
|
||||
"sunset": 16.15,
|
||||
"sun": "set",
|
||||
"update": 1
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"outside": {
|
||||
"name": "Temperature",
|
||||
"group": [ "Outside" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+----------------------------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+----------------------------------+
|
||||
| location | *valid openweathermap location* |
|
||||
+------------------+----------------------------------+
|
||||
| country | *valid country abbreviation* |
|
||||
+------------------+----------------------------------+
|
||||
| temperature | -100.00 - 100.00 |
|
||||
+------------------+----------------------------------+
|
||||
| humitidy | 0.00 - 100.00 |
|
||||
+------------------+----------------------------------+
|
||||
| sunrise | 00.00 - 23.59 |
|
||||
+------------------+----------------------------------+
|
||||
| sunset | 00.00 - 23.59 |
|
||||
+------------------+----------------------------------+
|
||||
| sun | rise / set |
|
||||
+------------------+----------------------------------+
|
||||
| update | 0 - 1 |
|
||||
+------------------+----------------------------------+
|
||||
|
||||
.. versionadded:: 8.0.7
|
||||
|
||||
+------------------+----------------------------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+----------------------------------+
|
||||
| api | *valid openweathermap api key* |
|
||||
+------------------+----------------------------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+--------------------+-------------+------------+---------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+--------------------+-------------+------------+---------------------------------------------+
|
||||
| humidity-offset | 0 | number | Correct humidity value |
|
||||
+--------------------+-------------+------------+---------------------------------------------+
|
||||
| temperature-offset | 0 | number | Correct temperature value |
|
||||
+--------------------+-------------+------------+---------------------------------------------+
|
||||
| poll-interval | 86400 | seconds | What should be the poll interval of the API |
|
||||
+--------------------+-------------+------------+---------------------------------------------+
|
||||
|
||||
: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 |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
| sunriseset-decimals | 2 | number | How many decimals the GUIs should display for sunrise/sunset time |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
| show-humidity | 1 | 1 or 0 | Don't display the humidity value |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
| show-battery | 0 | 1 or 0 | Don't display the battery value |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
|
||||
|
||||
.. rubric:: Comment
|
||||
|
||||
#. Please notice that the open weather map interval cannot be less than 10 minutes (600 seconds) to respect open weather map traffic and policy
|
||||
@@ -0,0 +1,138 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Sunriseset
|
||||
==========
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"outside": {
|
||||
"protocol": [ "sunriseset" ],
|
||||
"id": [{
|
||||
"longitude": 1.2345,
|
||||
"latitude": 50.607080
|
||||
}],
|
||||
"sunrise": 7.00,
|
||||
"sunset": 16.15,
|
||||
"sun": "set"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"sun": {
|
||||
"name": "Sunrise / Sunset",
|
||||
"group": [ "Outside" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+----------------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+----------------------+
|
||||
| longitude | -180.0000 - 180.0000 |
|
||||
+------------------+----------------------+
|
||||
| latitude | -90.0000 - 90.0000 |
|
||||
+------------------+----------------------+
|
||||
| sunrise | 00.00 - 23.59 |
|
||||
+------------------+----------------------+
|
||||
| sunset | 00.00 - 23.59 |
|
||||
+------------------+----------------------+
|
||||
| sun | rise / set |
|
||||
+------------------+----------------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
| sunriseset-decimals | 2 | number | How many decimals the GUIs should display for sunrise/sunset time |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
| show-sunriseset | 0 | 1 or 0 | Don't display the sunrise /sunset |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
|
||||
.. rubric:: Comment
|
||||
|
||||
The sunriseset will send three messages:
|
||||
|
||||
#. When the sunset time has been arrived.
|
||||
#. When the sunrise time has been arrived.
|
||||
#. After midnight so all values can be updated for a new day.
|
||||
|
||||
When using sunriseset in eventing, keep in mind of the following; The output of sunriseset.sunset and sunriseset.sunrise is just a number, so the time 17:00 equals 17.00. When using it in eventing make sure you get usable numbers. For example the time for sunriseset.sunset is 16:30
|
||||
|
||||
.. code-block:: guess
|
||||
:linenos:
|
||||
|
||||
IF ((sunrisesetdev.sunset == (datetime.hour + (datetime.minute / 100))) AND datetime.second == 0) THEN .."
|
||||
|
||||
pilight will see this:
|
||||
|
||||
.. code-block:: guess
|
||||
:linenos:
|
||||
|
||||
IF ((16.30 == (16 + (30 / 100))) AND 0 == 0) THEN ..."
|
||||
|
||||
The math pilight will use: 16.30 == 16.30
|
||||
|
||||
When you look at the result you will see that the datetime.minute 30 will give 0.30 in the used rule (in normal case divide minutes through 100)
|
||||
|
||||
Using the sunriseset.
|
||||
|
||||
Example
|
||||
|
||||
.. code-block:: guess
|
||||
:linenos:
|
||||
|
||||
IF sunrisesetdev.sun IS set THEN ....
|
||||
IF sunrisesetdev.sun IS rise THEN ....
|
||||
|
||||
Please note that with the three messages mentioned above, the first rule fires two times: At sunset, and at midnight (sunrisesetdev.sun is either set or rise, and will be set at midnight). So, it's better to use
|
||||
|
||||
.. code-block:: guess
|
||||
:linenos:
|
||||
|
||||
IF (DATE_FORMAT(CurrentDateTime, %H.%M) == sunrisesetdev.sunset AND CurrentDateTime.second == 0) THEN ...
|
||||
|
||||
with CurrentDateTime as a ``datetime`` device.
|
||||
|
||||
.. rubric:: Notes
|
||||
|
||||
ntpserver has been removed from the sunriseset id. Instead, ntp-servers are defined in the settings section of config.json in an array like this:
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"ntp-servers": [ "0.nl.pool.ntp.org", "1.nl.pool.ntp.org", "..." ],
|
||||
"ntp-sync": 1
|
||||
}
|
||||
|
||||
Both the datetime and sunriseset protocol will use the ntp time to adjust their time when needed.
|
||||
@@ -0,0 +1,119 @@
|
||||
.. |yes| image:: ../../../images/yes.png
|
||||
.. |no| image:: ../../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Weather Underground
|
||||
===================
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"outside": {
|
||||
"protocol": [ "wunderground" ],
|
||||
"id": [{
|
||||
"api": "1ihn472a6ea384jd",
|
||||
"location": "amsterdam",
|
||||
"country": "nl"
|
||||
}],
|
||||
"humidity": 76.00,
|
||||
"temperature": 7.00,
|
||||
"sunrise": 7.00,
|
||||
"sunset": 16.15,
|
||||
"sun": "set",
|
||||
"update": 1
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"outside": {
|
||||
"name": "Temperature",
|
||||
"group": [ "Outside" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+--------------------------------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+--------------------------------------+
|
||||
| api | *valid weather underground api key* |
|
||||
+------------------+--------------------------------------+
|
||||
| location | *valid weather underground location* |
|
||||
+------------------+--------------------------------------+
|
||||
| country | *valid country abbreviation* |
|
||||
+------------------+--------------------------------------+
|
||||
| temperature | -100.00 - 100.00 |
|
||||
+------------------+--------------------------------------+
|
||||
| humitidy | 0.00 - 100.00 |
|
||||
+------------------+--------------------------------------+
|
||||
| sunrise | 00.00 - 23.59 |
|
||||
+------------------+--------------------------------------+
|
||||
| sunset | 00.00 - 23.59 |
|
||||
+------------------+--------------------------------------+
|
||||
| sun | rise / set |
|
||||
+------------------+--------------------------------------+
|
||||
| update | 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 |
|
||||
+--------------------+-------------+------------+---------------------------------------------+
|
||||
| poll-interval | 86400 | seconds | What should be the poll interval of the API |
|
||||
+--------------------+-------------+------------+---------------------------------------------+
|
||||
|
||||
: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 |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
| sunriseset-decimals | 2 | number | How many decimals the GUIs should display for sunrise/sunset time |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
| show-humidity | 1 | 1 or 0 | Don't display the humidity value |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
| show-battery | 0 | 1 or 0 | Don't display the battery value |
|
||||
+----------------------+-------------+------------+----------------------------------------------------------------------+
|
||||
|
||||
|
||||
.. rubric:: Comment
|
||||
|
||||
|
||||
#. Please notice that the weather underground interval cannot be less than 15 minutes due to daily polling restrictions.
|
||||
#. This restriction also counts for the update button in the webgui. You won't receive updates within the 15 minutes between two updates.
|
||||
#. This wiki page shows a random API key. Please register yourself at wunderground.com to get your own.
|
||||
@@ -0,0 +1,111 @@
|
||||
.. |yes| image:: ../../images/yes.png
|
||||
.. |no| image:: ../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Dimmer
|
||||
======
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |no| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
-i --id=id control a device with this id
|
||||
-d --dimlevel=dimlevel send a specific dimlevel
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"dimmer": {
|
||||
"protocol": [ "generic_dimmer" ],
|
||||
"id": [{
|
||||
"id": 100
|
||||
}],
|
||||
"state": "off",
|
||||
"dimlevel": 0
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"dimmer": {
|
||||
"name": "Dimmer",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 99999 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
| dimlevel | 0 - 99999 |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| readonly | 0 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| confirm | 0 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
|
||||
.. versionadded:: 8.0.6
|
||||
|
||||
.. note::
|
||||
|
||||
The minimum and maximum is dependent on the ``Device Settings`` below.
|
||||
The actual dimlevel is not validated against these ranges.
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+------------------+-------------+------------+------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+------------------+-------------+------------+------------------+
|
||||
| dimlevel-minimum | 0 | number | Minimum dimlevel |
|
||||
+------------------+-------------+------------+------------------+
|
||||
| dimlevel-maximum | 15 | number | Maximum dimlevel |
|
||||
+------------------+-------------+------------+------------------+
|
||||
|
||||
.. deprecated:: 8.0.5
|
||||
|
||||
.. note::
|
||||
|
||||
The minimum and maximum is dependent on the ``Device Settings`` below.
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+------------------+-------------+------------+------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+------------------+-------------+------------+------------------+
|
||||
| dimlevel-minimum | 0 | number | Minimum dimlevel |
|
||||
+------------------+-------------+------------+------------------+
|
||||
| dimlevel-maximum | 15 | number | Maximum dimlevel |
|
||||
+------------------+-------------+------------+------------------+
|
||||
@@ -0,0 +1,13 @@
|
||||
Generic
|
||||
=======
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
|
||||
dimmer
|
||||
label
|
||||
raw
|
||||
screen
|
||||
switch
|
||||
weather
|
||||
webcam
|
||||
@@ -0,0 +1,69 @@
|
||||
.. |yes| image:: ../../images/yes.png
|
||||
.. |no| image:: ../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Label
|
||||
=====
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |no| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
-i --id=id control a device with this id
|
||||
-l --label=label show a specific label
|
||||
-c --color=color give the label a specific color
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"label": {
|
||||
"protocol": [ "generic_label" ],
|
||||
"id": [{
|
||||
"id": 100
|
||||
}],
|
||||
"label": "test1234",
|
||||
"color": "red"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"label": {
|
||||
"name": "Label",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 99999 |
|
||||
+------------------+-----------------+
|
||||
| label | *any value* |
|
||||
+------------------+-----------------+
|
||||
| color | *any color* |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. note::
|
||||
|
||||
Please notice that the label color is not validated in any way. The color information is just forwarded to the GUIs as is. So it could be that some GUIs do not support certain color naming. Using hex colors is therefore the safest, e.g. #000000.
|
||||
@@ -0,0 +1,33 @@
|
||||
.. |yes| image:: ../../images/yes.png
|
||||
.. |no| image:: ../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Raw
|
||||
===
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |no| |
|
||||
+------------------+-------------+
|
||||
| Config | |no| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
-c --code="raw" raw code divided by spaces
|
||||
(just like the output of debug)
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
*None*
|
||||
@@ -0,0 +1,74 @@
|
||||
.. |yes| image:: ../../images/yes.png
|
||||
.. |no| image:: ../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Screen
|
||||
======
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |no| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
-t --up send an up signal
|
||||
-f --down send a down signal
|
||||
-i --id=id control a device with this id
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"screen": {
|
||||
"protocol": [ "generic_screen" ],
|
||||
"id": [{
|
||||
"id": 100
|
||||
}],
|
||||
"state": "down"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"screen": {
|
||||
"name": "Screen",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 99999 |
|
||||
+------------------+-----------------+
|
||||
| state | up/down |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| readonly | 0 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| confirm | 0 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
@@ -0,0 +1,74 @@
|
||||
.. |yes| image:: ../../images/yes.png
|
||||
.. |no| image:: ../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Switch
|
||||
======
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |no| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
-t --on send an on signal
|
||||
-f --off send an off signal
|
||||
-i --id=id control a device with this id
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"switch": {
|
||||
"protocol": [ "generic_switch" ],
|
||||
"id": [{
|
||||
"id": 100
|
||||
}],
|
||||
"state": "off"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"switch": {
|
||||
"name": "Switch",
|
||||
"group": [ "Living" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 99999 |
|
||||
+------------------+-----------------+
|
||||
| state | on / off |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| readonly | 0 | 1 or 0 | Disable controlling this device from the GUIs |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
| confirm | 0 | 1 or 0 | Ask for confirmation when switching device |
|
||||
+------------------+-------------+------------+-----------------------------------------------+
|
||||
@@ -0,0 +1,97 @@
|
||||
.. |yes| image:: ../../images/yes.png
|
||||
.. |no| image:: ../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Weather
|
||||
=======
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |yes| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |no| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
-t --temperature=temperature set the temperature
|
||||
-h --humidity=humidity set the humidity
|
||||
-b --battery=battery set the battery level
|
||||
-i --id=id control a device with this id
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"weather": {
|
||||
"protocol": [ "generic_weather" ],
|
||||
"id": [{
|
||||
"id": 100
|
||||
}],
|
||||
"temperature": 23.00,
|
||||
"humidity": 76.00,
|
||||
"battery": 0
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"weather": {
|
||||
"name": "Weather",
|
||||
"group": [ "Weather" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| id | 0 - 99999 |
|
||||
+------------------+-----------------+
|
||||
| temperature | 0.00 - 100.00 |
|
||||
+------------------+-----------------+
|
||||
| humidity | 0.00 - 100.00 |
|
||||
+------------------+-----------------+
|
||||
| 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-humidity | 1 | 1 or 0 | Don't display the humidity value |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| show-battery | 0 | 1 or 0 | Don't display the battery value |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
@@ -0,0 +1,80 @@
|
||||
.. |yes| image:: ../../images/yes.png
|
||||
.. |no| image:: ../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
Webcam
|
||||
=======
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |no| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"webcam": {
|
||||
"protocol": [ "generic_webcam" ],
|
||||
"id": [{
|
||||
"id": 100
|
||||
}],
|
||||
"url": "http://x.x.x.x:xxxx"
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"webcam": {
|
||||
"name": "Webcam",
|
||||
"group": [ "Frontdoor" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-------------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-------------------+
|
||||
| id | 0 - 99999 |
|
||||
+------------------+-------------------+
|
||||
| url | *valid image url* |
|
||||
+------------------+-------------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+--------------------+-------------+------------+-------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+--------------------+-------------+------------+-------------------------------+
|
||||
| poll-interval | 10 | number | Refresh webcam image interval |
|
||||
+--------------------+-------------+------------+-------------------------------+
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| image-width | NULL | number | Webcam image width |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| image-height | 300 | number | Webcam image height |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| show-webcam | 1 | 1 or 0 | Don't display the webcam image |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
@@ -0,0 +1,99 @@
|
||||
.. |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** |
|
||||
+------------------+--------------+
|
||||
| 1-Wire DHT11 | dht11 |
|
||||
+------------------+--------------+
|
||||
| 1-Wire DHT22 | dht22 |
|
||||
+------------------+--------------+
|
||||
| 1-Wire AM2302 | am2302 |
|
||||
+------------------+--------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"weather": {
|
||||
"protocol": [ "dht22" ],
|
||||
"id": [{
|
||||
"gpio": 7
|
||||
}],
|
||||
"temperature": 5.2,
|
||||
"humidity": 1.7,
|
||||
"poll-interval": 5
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"temperature": {
|
||||
"name": "Temperature Sensor",
|
||||
"group": [ "Misc" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-----------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-----------------+
|
||||
| gpio | 0 - 255 |
|
||||
+------------------+-----------------+
|
||||
| temperature | -40 - 80 |
|
||||
+------------------+-----------------+
|
||||
| humidity | 0 - 100 |
|
||||
+------------------+-----------------+
|
||||
|
||||
.. note::
|
||||
|
||||
The ``gpio`` value should be a valid GPIO for the platform used
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| poll-interval | 5 | seconds | What should be the poll interval of the sensors |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| humidity-offset | 0 | number | Correct humidity value |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| temperature-offset | 0 | number | Correct temperature value |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| temperature-decimals | 1 | number | How many decimals the GUIs should display for temperature |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| humidity-decimals | 1 | 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 |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
@@ -0,0 +1,115 @@
|
||||
.. |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** |
|
||||
+------------------+--------------+
|
||||
| BMP180 | bmp180 |
|
||||
+------------------+--------------+
|
||||
| BMP085 | bmp085 |
|
||||
+------------------+--------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"bmp180": {
|
||||
"protocol": [ "bmp180" ],
|
||||
"id": [{
|
||||
"id": "0x77"
|
||||
}],
|
||||
"temperature": 19.1,
|
||||
"pressure": 1006.8,
|
||||
"oversampling": 1
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"temperature": {
|
||||
"name": "Temperature Sensor",
|
||||
"group": [ "Misc" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+------------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+------------------+
|
||||
| id | *valid i2c path* |
|
||||
+------------------+------------------+
|
||||
| temperature | -40 - 85 |
|
||||
+------------------+------------------+
|
||||
| pressure | 300 - 1100 |
|
||||
+------------------+------------------+
|
||||
| oversampling | 0 - 3 |
|
||||
+------------------+------------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| poll-interval | 10 | seconds | What should be the poll interval of the sensors |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| 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 |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| pressure-decimals | 2 | number | How many decimals the GUIs should display for pressure |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| show-pressure | 1 | 1 or 0 | Don't display the pressure value |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Comments
|
||||
|
||||
Pressure is provided in hectopascal (hPa) and temperature in degrees Celsius (°C).
|
||||
|
||||
Option ``oversampling`` sets the BMP180 hardware accuracy mode which is relevant for pressure readings only.
|
||||
|
||||
+-----------------------+--------------+-------------------------+------------------------------------+
|
||||
| Mode | oversampling | Internal no. of samples | Conversion time pressure max. [ms] |
|
||||
+-----------------------+--------------+-------------------------+------------------------------------+
|
||||
| ultra low power | 0 | 1 | 4.5 |
|
||||
+-----------------------+--------------+-------------------------+------------------------------------+
|
||||
| standard | 1 | 2 | 7.5 |
|
||||
+-----------------------+--------------+-------------------------+------------------------------------+
|
||||
| high resolution | 2 | 4 | 13.5 |
|
||||
+-----------------------+--------------+-------------------------+------------------------------------+
|
||||
| ultra high resolution | 3 | 8 | 25.5 |
|
||||
+-----------------------+--------------+-------------------------+------------------------------------+
|
||||
|
||||
The algorithm for pressure and temperature measurement is based on the specification in the `official datasheet <https://ae-bst.resource.bosch.com/media/products/dokumente/bmp180/BST-BMP180-DS000-12~1.pdf>`_.
|
||||
@@ -0,0 +1,145 @@
|
||||
.. |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** |
|
||||
+------------------+--------------+
|
||||
| 1-Wire DS18B20 | ds18b20 |
|
||||
+------------------+--------------+
|
||||
| 1-Wire DS18S20 | ds18s20 |
|
||||
+------------------+--------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"weather": {
|
||||
"protocol": [ "ds18b20" ],
|
||||
"id": [{
|
||||
"id": "0000052ba3ac"
|
||||
}],
|
||||
"temperature": 19.562
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"temperature": {
|
||||
"name": "Temperature Sensor",
|
||||
"group": [ "Misc" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-------------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-------------------+
|
||||
| id | *valid 1-wire id* |
|
||||
+------------------+-------------------+
|
||||
| temperature | -55 - 125 |
|
||||
+------------------+-------------------+
|
||||
|
||||
.. note:: **DS18B20**
|
||||
|
||||
Valid id's can be found in the path ``/sys/bus/w1/devices/`` starting with ``28-``. The prefix ``28-`` should be removed from the id.
|
||||
|
||||
.. note:: **DS18S20**
|
||||
|
||||
Valid id's can be found in the path ``/sys/bus/w1/devices/`` starting with ``10-``. The prefix ``10-`` should be removed from the id.
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| poll-interval | 5 | seconds | What should be the poll interval of the sensors |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| temperature-offset | 0 | number | Correct temperature value |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
.. note:: DS18B20
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **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 |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. note:: DS18S20
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| temperature-decimals | 3 | number | How many decimals the GUIs should display for temperature |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
|
||||
.. rubric:: Comments
|
||||
|
||||
Before pilight can see the sensor, you have to run the following commands:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
sudo modprobe w1-gpio
|
||||
sudo modprobe w1-therm
|
||||
|
||||
To make sure this is done every reboot, edit ``/etc/modules`` and add the following lines:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
w1-gpio
|
||||
w1-therm
|
||||
|
||||
If you have enabled "Device tree support" (since Raspbian with kernel 3.18 it's the default configuration), you have to add the following line to ``/boot/config.txt``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
dtoverlay=w1-gpio-pullup,gpiopin=4
|
||||
|
||||
.. note:: The GPIO pin number is the BCM GPIO and not the WiringX number.
|
||||
|
||||
This will load the module ``w1-gpio``, so you only have to add ``w1-therm`` to your ``/etc/modules``.
|
||||
|
||||
To find the correct sensor id, you have to run the following commands:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
cd /sys/bus/w1/devices
|
||||
ls
|
||||
|
||||
The result will look like:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
28-0000055bd776 w1_bus_master1
|
||||
|
||||
Use the part after 28- as the correct id, e.g. 0000055bd776.
|
||||
@@ -0,0 +1,131 @@
|
||||
.. |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** |
|
||||
+------------------+--------------+
|
||||
| LM75 | lm75 |
|
||||
+------------------+--------------+
|
||||
| LM76 | lm76 |
|
||||
+------------------+--------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"temperature": {
|
||||
"protocol": [ "lm75" ],
|
||||
"id": [{
|
||||
"id": "0x49"
|
||||
}],
|
||||
"temperature": 17.2
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"temperature": {
|
||||
"name": "Temperature Sensor",
|
||||
"group": [ "Misc" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-------------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-------------------+
|
||||
| id | *valid i2c id* |
|
||||
+------------------+-------------------+
|
||||
| temperature | -55 - 125 |
|
||||
+------------------+-------------------+
|
||||
|
||||
.. versionchanged:: 8.0
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"temperature": {
|
||||
"protocol": [ "lm75" ],
|
||||
"id": [{
|
||||
"id": "0x49",
|
||||
"i2c-path": "/dev/i2c-0"
|
||||
}],
|
||||
"temperature": 17.2
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"temperature": {
|
||||
"name": "Temperature Sensor",
|
||||
"group": [ "Misc" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+------------------+-------------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-------------------+
|
||||
| id | *valid i2c id* |
|
||||
+------------------+-------------------+
|
||||
| i2c-path | *valid i2c path* |
|
||||
+------------------+-------------------+
|
||||
| temperature | -55 - 125 |
|
||||
+------------------+-------------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| poll-interval | 5 | seconds | What should be the poll interval of the sensors |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| temperature-offset | 0 | number | Correct temperature value |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
.. note:: LM75
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| temperature-decimals | 1 | number | How many decimals the GUIs should display for temperature |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. note:: LM76
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| temperature-decimals | 3 | number | How many decimals the GUIs should display for temperature |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
@@ -0,0 +1,4 @@
|
||||
1-Wire AM2302
|
||||
=============
|
||||
|
||||
.. include:: _am2302.rst
|
||||
@@ -0,0 +1,4 @@
|
||||
BMP085
|
||||
======
|
||||
|
||||
.. include:: _bmp180.rst
|
||||
|
After Width: | Height: | Size: 39 B |
@@ -0,0 +1,4 @@
|
||||
BMP180
|
||||
======
|
||||
|
||||
.. include:: _bmp180.rst
|
||||
|
After Width: | Height: | Size: 39 B |
@@ -0,0 +1,105 @@
|
||||
.. |yes| image:: ../../images/yes.png
|
||||
.. |no| image:: ../../images/no.png
|
||||
|
||||
.. role:: underline
|
||||
:class: underline
|
||||
|
||||
CPU Temperature
|
||||
===============
|
||||
|
||||
+------------------+-------------+
|
||||
| **Feature** | **Support** |
|
||||
+------------------+-------------+
|
||||
| Sending | |no| |
|
||||
+------------------+-------------+
|
||||
| Receiving | |yes| |
|
||||
+------------------+-------------+
|
||||
| Config | |yes| |
|
||||
+------------------+-------------+
|
||||
|
||||
.. rubric:: Supported Brands
|
||||
|
||||
+------------------+--------------+
|
||||
| **Brand** | **Protocol** |
|
||||
+------------------+--------------+
|
||||
| Raspberry Pi | cpu_temp |
|
||||
+------------------+--------------+
|
||||
| Hummingboard | cpu_temp |
|
||||
+------------------+--------------+
|
||||
|
||||
.. rubric:: Sender Arguments
|
||||
|
||||
*None*
|
||||
|
||||
.. rubric:: Config
|
||||
|
||||
.. code-block:: json
|
||||
:linenos:
|
||||
|
||||
{
|
||||
"devices": {
|
||||
"weather": {
|
||||
"protocol": [ "cpu_temp" ],
|
||||
"id": [{
|
||||
"id": 1
|
||||
}],
|
||||
"temperature": 59.397,
|
||||
"poll-interval": 10
|
||||
}
|
||||
},
|
||||
"gui": {
|
||||
"temperature": {
|
||||
"name": "Temperature Sensor",
|
||||
"group": [ "Misc" ],
|
||||
"media": [ "all" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+------------------+-------------------+
|
||||
| **Option** | **Value** |
|
||||
+------------------+-------------------+
|
||||
| id | 0 - 99999 |
|
||||
+------------------+-------------------+
|
||||
| temperature | -40.000 - 85.000 |
|
||||
+------------------+-------------------+
|
||||
| poll-interval | 1 - 60 |
|
||||
+------------------+-------------------+
|
||||
|
||||
.. rubric:: Optional Settings
|
||||
|
||||
:underline:`Device Settings`
|
||||
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| poll-interval | 5 | seconds | What should be the poll interval of the sensors |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
| temperature-offset | 0 | number | Correct temperature value |
|
||||
+--------------------+-------------+------------+-------------------------------------------------+
|
||||
|
||||
:underline:`GUI Settings`
|
||||
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| **Setting** | **Default** | **Format** | **Description** |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| temperature-decimals | 1 | number | How many decimals the GUIs should display for temperature |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
| show-temperature | 1 | 1 or 0 | Don't display the temperature value |
|
||||
+----------------------+-------------+------------+-----------------------------------------------------------+
|
||||
|
||||
.. rubric:: Comments
|
||||
|
||||
On the Raspberry Pi:
|
||||
|
||||
It is possible you need to first load the sensor module:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
sudo modprobe bcm2835_thermal
|
||||
|
||||
To make sure this is done every reboot, edit ``/etc/modules`` and add the following lines:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
bcm2835_thermal
|
||||
@@ -0,0 +1,4 @@
|
||||
1-Wire DHT11
|
||||
=============
|
||||
|
||||
.. include:: _am2302.rst
|
||||
Loaded 100 of 1030 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user