Сценарий звенит звонком, показывает на планшете с majordroid фото пришедшего, 60 секунд ждет нажатия кнопки открытия двери (ворот). Отправляет в телеграмм фотографию с камеры.
Требуемое оборудование
Для реализации данного сценария нам понадобятся:
1) Кнопка zigbee WXKG11LM из комплекта mihome.
2) Родной шлюз aqara с включенным режимом разработчика.
3) Видеокамера, видеоглазок, передающий картинку в потоке rtsp. Возможна вариация домофона, умеющая вызывать url или отправлять фотографии о звонке (перехватывается через модуль smtp proxy).
3) Настенный планшет с установленным приложением majordroid.
4) Электронный замок с возможностью удаленного открытия (z5r-web, matrix II).
Настройка:
1) В родном приложении Mihome добавляем кнопку WXKG11LM, прописываем нужную мелодиию и громкость при нажатии.
2) В Простых устройствах Majordomo добавляем два устройства типа Клавиша "Звонок в домофон", и "Кнопка выхода".
3) Подключаем настенный планшет, для крепления планшета на стене можно использовать магниты https://connect.smartliving.ru/profile/1502/compon..., для питания подходят гибкие провода на магните. Устанавливаем majordroid из маркета android. Если планшет сильно китайский или морально устарел, смотрим тут, как на нем можно запустить majordroid https://connect.smartliving.ru/profile/1502/blog31....
4) В модуле Mihome в мажордомо после тестового нажатия на кнопку должны появиться метрики, например click. Метрику click привязываем к методу Button08.Pressed (Звонок).
5) В методе Pressed объекта "кнопка выхода" прописываете свой код, по которому у вас будет открываться дверь/ворота.
6) В методе Pressed объекта "звонок" прописываем следующий код:
$title=$this->object_title.'_pressedtimer';
if (timeOutExists($title)==0) {
settimeout($title,'', 120);
$address='192.168.1.136'; // ip-адрес планшета
$service_port='7999';
$in='tts:Внимание! Кто-то пришел! Дверь открыть можно будет через приложение!'; // команда для отправки
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "<br/>\n";
return 0;
}
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
return 0;
}
socket_write($socket, $in, strlen($in));
socket_close($socket);
// для начала проверьте, поддерживает ли ваш планшет отображение rtsp потока из браузера, раскомментировав эту строку вместо следующей
//$in="rtsp://192.168.1.33:554/user=admin_password=tlJwpbo6_channel=1_stream=1.sdp?real_stream";
///если этот вариант не работает (нет кодека вашей камеры в браузере андройд), то переходим на домашнюю страницу, указанную ниже
$in="url:http://192.168.1.39/page/45.html"; //ссылка на домашнюю страницу
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "<br/>\n";
return 0;
}
$result = socket_connect($socket, $address, $service_port);
if ($result === false) { echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
return 0;
}
socket_write($socket, $in, strlen($in));
socket_close($socket);
}
//отправляем фотографию с камеры в телеграмм, опционально
$image_url="http://192.168.1.33/webcapture.jpg?command=snap&channel=0";
$result=getURL($image_url,0);
$save_to="./cms/cached/cam2.jpg"; // куда сохранять
SaveFile($save_to, $result);
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$text="Звонок в дверь!!!";
$telegram_module->sendImageToAll($save_to,$text);
Тут стоить отметить, что нужно правильно указать ip адрес планшета, адрес домашней страницы или rtsp потока
Если планшет сможет самостоятельно показывать rtsp поток, то создаете домашнюю страницу типа html с кодом:
<a href="rtsp://192.168.1.33:554/user=admin_password=tlJwpbo6_channel=1_stream=1.sdp?real_stream?|/api/method/Button09.pressed;Открыть дверь;45">cam1</a>
В которой меняем ссылку rtsp на свой, вместо Button09.pressed замените на имена своих объектов "Кнопка выхода"
В случае, если браузер вашего планшета не может сам раскодировать поток, задачу транскодирования можно возложить на сервер мажордомо. У вас будет отображаться картинка с камеры в режиме слайд-шоу (у меня обновляется примерно раз 3-5 секунд)
Создаете домашнюю страницу html с кодом:
<script type="text/javascript">
ID=window.setTimeout("Update();",60000);
function Update(){
javascript:history.back(-2); return false;
}
</script>
<center>
<h1>Дверь около лифтов
<a href="http://192.168.1.39/api/method/Button09.pressed" class="btn btn-default"> Открыть дверь</a>
<a href="" class="btn btn-default" onclick="history.back(-2); return false"> Закрыть</a>
</h1>
[#module name="thumb" url="rtsp://192.168.1.33:554/user=admin_password=tlJwpbo6_channel=1_stream=1.sdp?real_stream" username="admin" password="" width="1000" enlarge="1" live="1"#]
</center>
В данной странице замените адреса rtsp потока и объекта кнопки выхода на свой. Таймер закрытия окна можете заменить на свой во второй строке. По умолчанию установлено значение одной минуты в мс.
Итого:
Теперь при нажатии кнопки звонка:
1) У вас звучит родной шлюз aqara выбранноймелодией (у меня звук звонка)
2) На планшете, если открыт majordroid будет произнесена фраза "Внимание! Кто-то пришел! Дверь открыть можно будет через приложение!"
3) В окне мажордрода будет показана картинка камеры на одну минуту.
4) Если в течении этого времени будет нажата кнопка открыть дверь, дверь должны быть разблокирована.
5) Аналогично можно визуализировать нахождение людей на камерах, особенно вещающих свои статусы через onvif
6) Повторное открытие и проговаривание фразы возможно только через 2 минуты.
Полезные ссылки
обсуждение majordroid https://mjdm.ru/forum/viewtopic.php?f=5&t=518
Екатеринбург, Россия
На форуме: directman66