Модуль работы с Z-Wave устройствами

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

airafree
Сообщения: 162
Зарегистрирован: Сб янв 28, 2017 2:17 pm
Благодарил (а): 13 раз
Поблагодарили: 7 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение airafree » Вт апр 18, 2017 2:51 pm

Всем привет!

Хочу реанимировать ветку Z-Wave,
Нашел причину почему не всегда работает класс 48 (CLASS_SENSOR_BINARY), точнее, не со всеми датчиками.
Недавно приобрел плату RaZberry2 и датчики,
Датчик движения Vision Security Motion Sensor
Датчик протечки NEO Coolcam
Датчик открытия NEO Coolcam
Датчик движения NEO Coolcam

Первым подключил датчик Vision Security Motion Sensor VIS_ZP3102, который сразу был обнаружен в MD, все значения датчика обновляются (движение, температура), датчик определился как - Routing Binary Sensor. Вторым подключил датчик движения NEO Coolcam, у которого обновляется только значения параметра "освещенность" (Luminiscence, Lux, класс 49), параметр движения (Level) всегда показывает "0", не обновляется, датчик определился как - Notification Sensor (Датчик уведомления). Параметры датчиков протечки и открытия NEO Coolcam, после установки, также не обновляются (Level=0), датчики определились как Notification Sensor (Датчик уведомления).
Датчики_zwave.png
Датчики
Датчики_zwave.png (71.77 КБ) 9822 просмотра
В Raw Data (команды) датчика Vision Security Motion Sensor VIS_ZP3102 обратил внимание на то, что в 48 классе, ссылка к значению "level" -> "value" (true/false) идет через (значение) "1". Напомню, у датчика Vision Security Motion Sensor VIS_ZP3102 все значения обновляются, датчик работает штатно.
Routing Binary Sensor 20_Датчик движения Vision Security Motion Sensor VIS_ZP3102.png
Датчик Vision Security Motion Sensor
Routing Binary Sensor 20_Датчик движения Vision Security Motion Sensor VIS_ZP3102.png (45.58 КБ) 9822 просмотра
http192.168.1.2118083ZWaveAPIRundevices[20].instances[0].commandClasses[48.png
Датчик Vision Security Motion Sensor
http192.168.1.2118083ZWaveAPIRundevices[20].instances[0].commandClasses[48.png (66.65 КБ) 9822 просмотра
В остальных датчиках вместо "1" другие значения,
Датчик протечки NEO Coolcam - "6";
Notification Sensor_1 (23) датчик протечки_NEO Coolcam.png
Датчик протечки NEO Coolcam
Notification Sensor_1 (23) датчик протечки_NEO Coolcam.png (46.3 КБ) 9822 просмотра
Датчик открытия NEO Coolcam - "10";
Notification Sensor_2 (19) датчик открытия_NEO Coolcam.png
Датчик открытия NEO Coolcam
Notification Sensor_2 (19) датчик открытия_NEO Coolcam.png (44.58 КБ) 9822 просмотра
Датчик движения NEO Coolcam - "12";
Notification Sensor_3 (21) датчик движения, осв_NEO Coolcam.png
Датчик движения NEO Coolcam
Notification Sensor_3 (21) датчик движения, осв_NEO Coolcam.png (47.41 КБ) 9822 просмотра

Реализация в zwave.class.php (48 класс);
zwave.class.php.png
zwave.class.php
zwave.class.php.png (33.21 КБ) 9822 просмотра
Если в zwave.class.php, указано выше, вместо "1" поставить "6", у датчика протечки NEO Coolcam начинает обновляться значение при срабатывании (Level=1), аналогично с остальными датчиками NEO Coolcam.

Попробовал сам раскомментировать выбираемое значение в "...", не получается, падает zwave.class.php, не хватает знаний.

Прошу помощи у разработчика,
Сергей,
Посмотрите, что можно сделать.
Аватара пользователя
woow
Сообщения: 821
Зарегистрирован: Пн июл 04, 2016 8:46 am
Откуда: Mazeikiai
Благодарил (а): 125 раз
Поблагодарили: 46 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение woow » Ср июн 07, 2017 12:40 pm

Да тут бы интересно если МЖД подружить с Coolcam, как раз акция https://brands.aliexpress.com/en?spm=21 ... 4.1.Zp0FV0
Raspberry Pi 3B+
vshuka911
Сообщения: 76
Зарегистрирован: Пт июн 02, 2017 11:02 am
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение vshuka911 » Ср июн 07, 2017 10:42 pm

Всем привет! Приобрел модуль Razbery 2 и сразу же затык. Как его подружить с малинкой. Может ли кто описать мануал от начала до конца. Что качать как подключать пароли логины...
Заранее спасибо
Вложения
rr.JPG
rr.JPG (46.33 КБ) 9156 просмотров
vshuka911
Сообщения: 76
Зарегистрирован: Пт июн 02, 2017 11:02 am
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение vshuka911 » Пн июн 12, 2017 12:01 am

Приобрел 2 реле от фибаро. Но что с ними делать ума не приложу Может кто сможет направить на путь истинный? В приложении z-wave они нашлись а как их добавить в классы и объекты без понятия Нужна помощь!!!Только если можно по подробнее так как в освоении МЖД я новичок
airafree
Сообщения: 162
Зарегистрирован: Сб янв 28, 2017 2:17 pm
Благодарил (а): 13 раз
Поблагодарили: 7 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение airafree » Пн июн 12, 2017 8:22 pm

vshuka911 писал(а):Приобрел 2 реле от фибаро. Но что с ними делать ума не приложу Может кто сможет направить на путь истинный? В приложении z-wave они нашлись а как их добавить в классы и объекты без понятия Нужна помощь!!!Только если можно по подробнее так как в освоении МЖД я новичок
Можно через простые устройства, можно создать объекты.
vshuka911
Сообщения: 76
Зарегистрирован: Пт июн 02, 2017 11:02 am
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение vshuka911 » Пн июн 12, 2017 10:20 pm

А можно пожалуста по подробнее....Если нужно создавать обекты то как (хотя бы на одном примере) или есть готовая библиотека для z-wave которую можно импортировать
Вложения
rr.JPG
rr.JPG (96.37 КБ) 9027 просмотров
airafree
Сообщения: 162
Зарегистрирован: Сб янв 28, 2017 2:17 pm
Благодарил (а): 13 раз
Поблагодарили: 7 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение airafree » Чт июн 15, 2017 6:35 pm

Немного эксперементов и танцем с бубном и... 48 класс заработал.

Поправил zwave.class.php следующим образом,

Код: Выделить всё

   if ($rec['CLASS_SENSOR_BINARY']) {

    $sensor_data=$data->commandClasses->{"48"}->data;
    if (isset($data->commandClasses->{"48"}->data->{"1"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"1"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"2"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"2"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"3"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"3"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"4"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"4"};
    }    
    if (isset($data->commandClasses->{"48"}->data->{"5"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"5"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"6"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"6"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"7"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"7"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"8"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"8"};
    }    
    if (isset($data->commandClasses->{"48"}->data->{"9"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"9"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"10"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"10"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"11"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"11"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"12"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"12"};
    }    
    if (isset($data->commandClasses->{"48"}->data->{"13"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"13"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"14"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"14"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"15"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"15"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"16"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"16"};
    }        
    if (isset($data->commandClasses->{"48"}->data->{"17"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"17"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"18"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"18"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"19"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"19"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"20"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"20"};
    }    
    if (isset($data->commandClasses->{"48"}->data->{"21"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"21"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"22"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"22"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"23"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"23"};
    }
    if (isset($data->commandClasses->{"48"}->data->{"24"})) {
     $sensor_data=$data->commandClasses->{"48"}->data->{"24"};
    }        
    
    $value=(int)$sensor_data->level->value;

    if ($value!==$rec['LEVEL']) {
     $rec['LEVEL']=$value;
     $rec_updated=1;
    }
    $properties['Level']=$rec['LEVEL'];
    $command_classes['Level']=48;
    $updatedList['Level']=$sensor_data->{"updateTime"};
    if ($sensor_data->{"updateTime"}>$updateTime) {
     $updateTime=$sensor_data->{"updateTime"};
    }
   } 
Добавил побольше устройст на всякий случай, пока работает без ошибок.
За это сообщение автора airafree поблагодарил:
vshuka911 (Чт июн 22, 2017 9:27 am)
Рейтинг: 1.16%
vshuka911
Сообщения: 76
Зарегистрирован: Пт июн 02, 2017 11:02 am
Благодарил (а): 10 раз
Поблагодарили: 1 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение vshuka911 » Чт июн 22, 2017 9:34 am

Ребят! Кто подскажет как Homebrige для Razbery запустить на малинке через start up чтобы при включении ее в сеть он поднимался автоматически а то приходится после падения питания каждый раз запускать его снова
airafree
Сообщения: 162
Зарегистрирован: Сб янв 28, 2017 2:17 pm
Благодарил (а): 13 раз
Поблагодарили: 7 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение airafree » Ср июл 05, 2017 5:47 pm

Сергей, прошу внести изменения по 48 классу в zwave.class.php при обновлении, использую в течение месяца, проблем и ошибок нет, все работает стабильно.
СпойлерПоказать
if ($rec['CLASS_SENSOR_BINARY']) {

$sensor_data=$data->commandClasses->{"48"}->data;
if (isset($data->commandClasses->{"48"}->data->{"1"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"1"};
}
if (isset($data->commandClasses->{"48"}->data->{"2"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"2"};
}
if (isset($data->commandClasses->{"48"}->data->{"3"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"3"};
}
if (isset($data->commandClasses->{"48"}->data->{"4"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"4"};
}
if (isset($data->commandClasses->{"48"}->data->{"5"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"5"};
}
if (isset($data->commandClasses->{"48"}->data->{"6"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"6"};
}
if (isset($data->commandClasses->{"48"}->data->{"7"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"7"};
}
if (isset($data->commandClasses->{"48"}->data->{"8"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"8"};
}
if (isset($data->commandClasses->{"48"}->data->{"9"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"9"};
}
if (isset($data->commandClasses->{"48"}->data->{"10"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"10"};
}
if (isset($data->commandClasses->{"48"}->data->{"11"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"11"};
}
if (isset($data->commandClasses->{"48"}->data->{"12"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"12"};
}
if (isset($data->commandClasses->{"48"}->data->{"13"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"13"};
}
if (isset($data->commandClasses->{"48"}->data->{"14"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"14"};
}
if (isset($data->commandClasses->{"48"}->data->{"15"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"15"};
}
if (isset($data->commandClasses->{"48"}->data->{"16"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"16"};
}
if (isset($data->commandClasses->{"48"}->data->{"17"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"17"};
}
if (isset($data->commandClasses->{"48"}->data->{"18"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"18"};
}
if (isset($data->commandClasses->{"48"}->data->{"19"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"19"};
}
if (isset($data->commandClasses->{"48"}->data->{"20"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"20"};
}
if (isset($data->commandClasses->{"48"}->data->{"21"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"21"};
}
if (isset($data->commandClasses->{"48"}->data->{"22"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"22"};
}
if (isset($data->commandClasses->{"48"}->data->{"23"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"23"};
}
if (isset($data->commandClasses->{"48"}->data->{"24"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"24"};
}

$value=(int)$sensor_data->level->value;

if ($value!==$rec['LEVEL']) {
$rec['LEVEL']=$value;
$rec_updated=1;
}
$properties['Level']=$rec['LEVEL'];
$command_classes['Level']=48;
$updatedList['Level']=$sensor_data->{"updateTime"};
if ($sensor_data->{"updateTime"}>$updateTime) {
$updateTime=$sensor_data->{"updateTime"};
}
}
airafree
Сообщения: 162
Зарегистрирован: Сб янв 28, 2017 2:17 pm
Благодарил (а): 13 раз
Поблагодарили: 7 раз

Re: Модуль работы с Z-Wave устройствами

Сообщение airafree » Сб июл 08, 2017 6:59 am

airafree писал(а):Сергей, прошу внести изменения по 48 классу в zwave.class.php при обновлении, использую в течение месяца, проблем и ошибок нет, все работает стабильно.
СпойлерПоказать
if ($rec['CLASS_SENSOR_BINARY']) {

$sensor_data=$data->commandClasses->{"48"}->data;
if (isset($data->commandClasses->{"48"}->data->{"1"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"1"};
}
if (isset($data->commandClasses->{"48"}->data->{"2"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"2"};
}
if (isset($data->commandClasses->{"48"}->data->{"3"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"3"};
}
if (isset($data->commandClasses->{"48"}->data->{"4"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"4"};
}
if (isset($data->commandClasses->{"48"}->data->{"5"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"5"};
}
if (isset($data->commandClasses->{"48"}->data->{"6"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"6"};
}
if (isset($data->commandClasses->{"48"}->data->{"7"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"7"};
}
if (isset($data->commandClasses->{"48"}->data->{"8"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"8"};
}
if (isset($data->commandClasses->{"48"}->data->{"9"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"9"};
}
if (isset($data->commandClasses->{"48"}->data->{"10"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"10"};
}
if (isset($data->commandClasses->{"48"}->data->{"11"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"11"};
}
if (isset($data->commandClasses->{"48"}->data->{"12"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"12"};
}
if (isset($data->commandClasses->{"48"}->data->{"13"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"13"};
}
if (isset($data->commandClasses->{"48"}->data->{"14"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"14"};
}
if (isset($data->commandClasses->{"48"}->data->{"15"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"15"};
}
if (isset($data->commandClasses->{"48"}->data->{"16"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"16"};
}
if (isset($data->commandClasses->{"48"}->data->{"17"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"17"};
}
if (isset($data->commandClasses->{"48"}->data->{"18"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"18"};
}
if (isset($data->commandClasses->{"48"}->data->{"19"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"19"};
}
if (isset($data->commandClasses->{"48"}->data->{"20"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"20"};
}
if (isset($data->commandClasses->{"48"}->data->{"21"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"21"};
}
if (isset($data->commandClasses->{"48"}->data->{"22"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"22"};
}
if (isset($data->commandClasses->{"48"}->data->{"23"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"23"};
}
if (isset($data->commandClasses->{"48"}->data->{"24"})) {
$sensor_data=$data->commandClasses->{"48"}->data->{"24"};
}

$value=(int)$sensor_data->level->value;

if ($value!==$rec['LEVEL']) {
$rec['LEVEL']=$value;
$rec_updated=1;
}
$properties['Level']=$rec['LEVEL'];
$command_classes['Level']=48;
$updatedList['Level']=$sensor_data->{"updateTime"};
if ($sensor_data->{"updateTime"}>$updateTime) {
$updateTime=$sensor_data->{"updateTime"};
}
}
Сергей, спасибо!

48 класс работает.
Ответить