Огромное спасибо пользователю PoltoS за проделанную работу
Цитата:
Получилось два: один для отправки, второй для посылки данных. Очень удобно для реверс-инжиниринга!
Для работы надо подправить строку
my $port = "/dev/ttyACM0";
на правильный порт.
zs.pl отправляет данные, указанные в командной строке.
zw.pl принимает, отправляет ack, если нужно, и выводит на экран полученное
А что слать-то?
Вот часть того, что я накопал:
Вообще, большинство команд выглядят так: 0 13 <TargetNodeId> <размер команды - 1> <команда> ...
PHP код:
(S - отправка, R - получение)
DIM, Level=0..64h
S 0 13 <Node> 3 20 1 <Level> 5
R 1 13 1 (это типичный ответ, что всё хорошо)
SWITCH {OFF|ON}
S 0 13 <Node> 3(Size-1) 20 1 {0|FF} 5
R 1 13 1
ASSOCIATE
S 0 13 <SourceNode> 4(Size-1) 85 1 <Group> <TargetNode> 5
R 1 13 1
DISASSOCIATE
S 0 13 <SourceNode> 4(Size-1) 85 4 <Group> <TargetNode> 5
R 1 13 1
GET ASSOCIATION
S 0 13 <Node> 3(Size-1) 85 2 <Group> 5
R 0 4 0 <Node> 5(Size-1) 85 3 <Group> <Max assoc.> 0 <Curr. assoc.>
R 1 13 1
GET LEVEL
S 0 13 <Node> 3 20 2 0 5
R 0 4 0 <Node> 3(Size) 20 3 <Level>
GET DIMMER LEVEL
S 0 13 <Node> 3 26 2 0 5
R 0 4 0 <Node> 3(Size) 26 3 <Level>
ADD
S 0 4A 01 B0
(далее нажимаете кнопки на добавляемом устройстве согласно иснтрукции и получаете ответ с присвоенным NodeId и возможностями устройства)
для duwi wall controller
R 0 4A B0 1 0 0
R 0 4A B0 2 3 C 1 1 1 72 80 85 EF 20 26 27 85 82
R 0 4A B0 4 3 C 1 1 1 72 80 85 EF 20 26 27 85 82
R 0 4A B0 7 <Node> 0
для duwi switch
R 0 4A B0 1 0 0
R 0 4A B0 3 4 D 4 10 1 72 86 82 87 75 27 25 85 EF 26
R 0 4A B0 6 <Node> 0
Обратите внимание, что в этих пакетах оконцовка "возможностей" совпадает с оконцовкой стандартного Device Information Packet, который отправляется устройством ACT при каждом нажатии, а duwi при тройном нажатии (см. инструкции)
wall-button
R 0 49 84 <Node> C 1 1 1 72 80 85 EF 20 26 27 85 82
switch
R 0 49 84 <Node> D 4 10 1 72 86 82 87 75 27 25 85 EF 26
Удалить узел так:
S 0 4B 1 <Node>
Есть ещё куча недорасшифрованного.. . будем реверсить дальше!
Почти всё это было получено при помощи USB сниффера, однако, как оказалось, есть исходники LinuxMCE, которые позволяют всё реверснутое мною просто собрать из сурсов!
Я не пробовал пока никаких термометров, но с ними должно быть всё просто.
Пока весь известный мне функционал софтин для Z-Wave можно реализовать из командной строки, а значит и из любой самописной проги!