update esppilight lib

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

No files matched your search

@@ -0,0 +1,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>`_