Skip to content

Commit 10785cf

Browse files
committed
Add secure teach-in
1 parent 12da815 commit 10785cf

File tree

6 files changed

+634
-1
lines changed

6 files changed

+634
-1
lines changed

.github/workflows/python-package.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- name: Install dependencies
2727
run: |
2828
python -m pip install --upgrade pip
29-
python -m pip install flake8 nose coverage
29+
python -m pip install flake8 nose coverage pycryptodome
3030
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
3131
- name: Lint with flake8
3232
run: |

enocean/protocol/EEP.xml

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1381,6 +1381,30 @@
13811381
</data>
13821382
</profile>
13831383
</profiles>
1384+
<profiles func="0x03" description="Light, Switching + Blind Control">
1385+
<profile type="0x00" description="2 Rocker Switch">
1386+
<data>
1387+
<enum description="Rocker Information" shortcut="RI2" offset="4" size="4">
1388+
<item description="Reserved" value="0" />
1389+
<item description="Reserved" value="1" />
1390+
<item description="Reserved" value="2" />
1391+
<item description="Reserved" value="3" />
1392+
<item description="Reserved" value="4" />
1393+
<item description="Button A1 + B0 pressed, energy bow pressed" value="5" />
1394+
<item description="3 or 4 buttons pressed, energy bow pressed" value="6" />
1395+
<item description="Button A0 + B0 pressed, energy bow pressed" value="7" />
1396+
<item description="No buttons pressed, energybow pressed" value="8" />
1397+
<item description="Button A1 + B1 pressed, energy bow pressed" value="9" />
1398+
<item description="Button A0 + B1 pressed, energy bow pressed" value="10" />
1399+
<item description="Button B1 pressed, energybow pressed" value="11" />
1400+
<item description="Button B0 pressed, energybow pressed" value="12" />
1401+
<item description="Button A1 pressed, energybow pressed" value="13" />
1402+
<item description="Button A0 pressed, energybow pressed" value="14" />
1403+
<item description="Energy bow released" value="15" />
1404+
</enum>
1405+
</data>
1406+
</profile>
1407+
</profiles>
13841408
<profiles func="0x05" description="Blinds Control for Position and Angle">
13851409
<profile type="0x00" description="Type 0x00">
13861410
<command description="command indentifier" shortcut="CMD" offset="28" size="4">
@@ -1473,4 +1497,78 @@
14731497
</profile>
14741498
</profiles>
14751499
</telegram>
1500+
<telegram rorg="0x35" type="SEC_TI" description="Secure Teach-In Telegram">
1501+
<profiles func="0x00" description="Secure Teach-In Telegram">
1502+
<profile type="0x00" description="Secure Teach-In Telegram">
1503+
<command description="Packet index" shortcut="IDX" offset="0" size="2">
1504+
<item description="First packet" value="0" />
1505+
<item description="Second packet" value="1" />
1506+
<item description="Third packet" value="2" />
1507+
<item description="Fourth packet" value="3" />
1508+
</command>
1509+
<data command="0">
1510+
<enum description="Packet Index" shortcut="IDX" offset="0" size="2">
1511+
<rangeitem description="Packet {value}" start="0" end="3" />
1512+
</enum>
1513+
<enum description="Packet Count" shortcut="CNT" offset="2" size="2">
1514+
<rangeitem description="{value} Packets" start="0" end="3" />
1515+
</enum>
1516+
<enum description="RLC and KEY encryption" shortcut="PSK" offset="4" size="1">
1517+
<item description="No PSK" value="0" />
1518+
<item description="PSK" value="1" />
1519+
</enum>
1520+
<enum description="Application Type" shortcut="TYPE" offset="5" size="1">
1521+
<item description="No PTM" value="0" />
1522+
<item description="PTM" value="1" />
1523+
</enum>
1524+
<enum description="Info" shortcut="INFO" offset="6" size="2">
1525+
<item description="ROCKER A normal Teach In" value="0" /><!-- No PTM: Unidirectional security teach-in procedure -->
1526+
<item description="ROCKER B normal Teach In" value="1" /><!-- No PTM: Bidirectional teach-in procedure -->
1527+
</enum>
1528+
<enum description="RLC Algorithm" shortcut="RLC_ALGO" offset="8" size="3">
1529+
<item description="No RLC" value="0" />
1530+
<item description="Reserved for future use" value="1" />
1531+
<item description="16 Bit implicit RLC - Roll Over/ Window Algorithm" value="2" />
1532+
<item description="16 Reserved for future use" value="3" />
1533+
<item description="24 Bit implicit - Roll Over/ Window Algorithm" value="4" />
1534+
<item description="24 Bit explicit RLC [24 Bit transmitted] No Roll Over / No Window Algorithm" value="5" />
1535+
<item description="32 Bit explicit RLC [24 Bit transmitted] No Roll Over / No Window Algorithm" value="6" />
1536+
<item description="32 Bit explicit RLC [32 Bit transmitted] No Roll Over / No Window Algorithm" value="7" />
1537+
</enum>
1538+
<enum description="RLC Transmission" shortcut="RLC_TX" offset="10" size="1"><!-- deprecated -->
1539+
<item description="No" value="0" />
1540+
<item description="Yes" value="1" />
1541+
</enum>
1542+
<enum description="MAC Algorithm" shortcut="MAC_ALGO" offset="11" size="2">
1543+
<item description="No MAC" value="0" />
1544+
<item description="AES128 3 byte" value="1" />
1545+
<item description="AES128 4 byte" value="2" />
1546+
<item description="N/A" value="3" />
1547+
</enum>
1548+
<enum description="Data Encryption" shortcut="DATA_ENC" offset="13" size="3">
1549+
<item description="No data encryption" value="0" />
1550+
<item description="EnOcean High security extension" value="1" />
1551+
<item description="N/A" value="2" />
1552+
<item description="VAES - AES128" value="3" />
1553+
<item description="AES-CBC - AES128" value="4" /><!-- deprecated -->
1554+
</enum>
1555+
<value shortcut="RLC" description="Rolling code" offset="16" size="16" unit="">
1556+
<range>
1557+
<min>0</min>
1558+
<max>65535</max>
1559+
</range>
1560+
<scale>
1561+
<min>0</min>
1562+
<max>65535</max>
1563+
</scale>
1564+
</value>
1565+
</data>
1566+
<data command="1">
1567+
<enum description="Packet Index" shortcut="IDX" offset="0" size="2">
1568+
<rangeitem description="Index {value}" start="0" end="3" />
1569+
</enum>
1570+
</data>
1571+
</profile>
1572+
</profiles>
1573+
</telegram>
14761574
</telegrams>

enocean/protocol/constants.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ class RORG(IntEnum):
5959
SYS_EX = 0xC5
6060
SEC = 0x30
6161
SEC_ENCAPS = 0x31
62+
SECD = 0x32
63+
SEC_CDM = 0x33
64+
SEC_MAN = 0x34
65+
SEC_TI = 0x35
66+
SIGNAL = 0xD0
6267
UTE = 0xD4
6368

6469

0 commit comments

Comments
 (0)