directman

 
<<< Back

Реализация сценария "кто-то пришел"

Сценарий звенит звонком, показывает на планшете с 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> 

1

В данной странице замените адреса rtsp потока и объекта кнопки выхода на свой. Таймер закрытия окна можете заменить на свой во второй строке. По умолчанию установлено значение одной минуты в мс.

Итого:
Теперь при нажатии кнопки звонка:
1) У вас звучит родной шлюз aqara выбранноймелодией (у меня звук звонка)
2) На планшете, если открыт majordroid будет произнесена фраза "Внимание! Кто-то пришел! Дверь открыть можно будет через приложение!"
3) В окне мажордрода будет показана картинка камеры на одну минуту.
4) Если в течении этого времени будет нажата кнопка открыть дверь, дверь должны быть разблокирована.
5) Аналогично можно визуализировать нахождение людей на камерах, особенно вещающих свои статусы через onvif
6) Повторное открытие и проговаривание фразы возможно только через 2 минуты.

Полезные ссылки

обсуждение majordroid https://mjdm.ru/forum/viewtopic.php?f=5&t=518

Discuss (3) (13)

See also:
2021-03-02 Добавляем новые или недостающие метрики управления устройств в модуле zigbee2mqtt
2021-02-16 Установка Majordomo на JetHUB D1
2021-02-02 Shelly 1
2020-09-30 Команды для назначения владельцев папок
2020-09-16 Собираем список ip вызывных панелей с поддержкой SIP
2020-07-03 Получаем безопасный доступ к Web странице MajorDoMo
2020-04-24 Установка MajorDoMo на synology в 3 клика
2020-02-13 Настройка модуля zigbee2mqtt для работы с zigbee2mqtt или шлюзом sls zigbee gateway
2020-02-13 Настройка модуля zigbee2mqtt для работы с zigbee2mqtt или шлюзом sls zigbee gateway
2020-01-25 Команды для настройки прав пользователей на папку с majordomo
2020-01-23 Отключаем строгий режим MYSQL штатными средствами
2019-10-12 Подключаем светодиодные ленты к контроллеру MegaD
2019-10-11 Варианты интеграции электроприводов
2019-09-30 Выбор источников сигнала телевизоров LG 2013
2019-09-29 Узнаем версию дистрибутива linux
2019-09-24 Установка необходимых пакетов в xpenology через docker
2019-09-16 Примеры разметки Markdown
2019-09-14 Краткий обзор выключателей, в том числе Sonoff T4EU1C
2019-09-13 Сценарий для канала @MajorDoMo_feed
2020-03-26 Опыт установки Synology DSM
2019-09-09 Делаем majordroid лаунчером андройд по-умолчанию.
2019-09-02 Отправляем график hightcharts свойства любого объекта в телеграмм
2019-09-17 Автономная сигнализация на базе контроллера megad-2561
2019-08-27 Управление громкостью терминалов через телеграмм
2019-08-26 Полноценная консоль в браузере (wetty)
2019-08-16 Точечное регулирование радиаторов отопления
2019-08-18 Собираем голосовой помощник на базе WM8960 Audio HAT и raspberry pi zero w
2019-08-13 Общедоступная ссылка с закатом, рассветом и текущей погодой
2019-07-24 Самый дешевый вариант видеонаблюдения
2019-07-22 Запуск MajorDroid на одноплатниках, старых планшетах, телефонах.
2019-07-22 Запуск Majordroid на старом железе
2019-07-15 Устанавливаем opencv и необходимые библиотеки на ubuntu 18.04 без использования python
2019-07-05 Решение проблемы Incorrect integer value: '' for column 'ID' at row 1
2019-07-04 О приборах учета и удаленном снятии показаний (вода и газ)
2019-07-04 О приборах учета и удаленном снятии показаний (электричество)
2019-07-03 Конвертируем rs-485 в TCP-IP
2019-06-24 Наблюдение за радиационной обстановкой в регионе
2019-06-06 Меню пылесоса Xiaomi в телеграмм
2019-06-06 Удобный просмотр данных сенсоров через телеграмм
2019-06-06 Просмотр камер через телеграмм
2019-06-06 Управление светом через телеграмм
2019-06-06 Колор-пикер для телеграм
2019-05-06 Список символов emoji
2019-04-17 Установка z-way на Ubuntu
2019-04-16 Решение проблемы ERROR 1040 (HY000): Too many connections
2018-09-09 Список домофонов с IP интерфейсом
2018-08-29 Список кондиционеров с wifi
2018-08-29 Список доступных к покупке IP колонок
2018-07-15 Интеграция датчика Mi flora plant к системе УД MAJORDOMO
2018-06-13 Полезные команды для работы с git
2018-05-27 преобразование html страниц в картинку и отправка в телеграмм
2018-05-24 Полезные sql запросы
2018-05-23 Создание образа nand памяти orange pi plus2
2018-05-16 Команды для работы с базой данных напрямую
2018-04-13 Индикаторы о заряде батареек без использования картинок
2018-04-06 Установка и настройка python на windows для работы систем распознавания
2018-04-05 Распознавание лиц подходящих к двери людей с помощью ip камеры и открытие двери, если нейросеть признала своего
2018-04-04 Управление таймерами выключения света
2018-04-04 Управление RGB контроллером на базе ESP8266
2018-04-03 Увеличение разрешения китайских камер на чипе hi3516c H264
2018-03-13 Использование колонки google home в качестве терминала Majordomo
2018-03-13 Установка и подключение rtl usb донгла для чтения датчиков температуры и кнопок 433 мгц
2018-03-13 Настройка брокера MQTT
2018-02-17 Проект "умная входная дверь"
2018-02-11 Отправка всех значений свойства объекта в телеграм
2017-12-21 получение адреса по GPS координатам
2017-12-21 получение / передача GPS координат сервису livegps.com
2017-12-21 чтение мгновенных данных U,P, I электросчетчика милур 104
2017-12-21 Получение координат с маяков и gsm сигнализаций starline-online.ru

Екатеринбург, Россия

На форуме: directman66