Статья

Добавление информации сервиса яндекс.пробки в Domoticz

Бывала ли у вас такая ситуация, когда утром выходишь, как обычно, на работу, а там вас ждет неприятный сюрприз в виде километровых пробок? Неприятно, да? Кто же знал, что нужно было выйти из дома на пол часа раньше, чтобы не опоздать на работу. К счастью, современные технологии позволяют нам избежать подобных проблем, ну, или хотя бы максимально сгладить неприятные сценарии развития событий. 

Для того, чтобы умный дом знал дорожную обстановку и вовремя нас об этом предупредил, добавим информацию об интенсивности дорожного движения в Domoticz, для этого создадим виртуальный сенсор:

Заходим в Настройки -> Оборудование, выбираем оборудование Dummy и нажимаем "создать виртуальные датчики", назовем его Jams, метку оси подпишем как "Баллов". 
В итоге у нас на панели вспомогательных элементов появится вот такой симпатичный "датчик" пробок. 
Дополнительно нам надо узнать Idx нашего нового датчика, для этого заходим в Настройки -> Устройства и в поле поиска пишем Jams, в ответ мы получим идентификатор нашего датчика, который понадобится нам чуть позже. 

Далее необходимо настроить обновление информации датчика. Заходим на нашу малинку (как это сделать можно прочитать здесь, для MacOS и Linux - просто открываем стандартную программу "Терминал" и вводим "ssh pi@raspberry.local", далее нажимаем ввод и, после приглашения системы, вводим пароль своей учетной записи на raspberry pi), создаем в папке для скриптов файл jams.php, для этого вводим: 

nano jams.php

Вставляем туда следующее содержание:

#!/usr/bin/php <?php $data_file='https://export.yandex.ru/bar/reginfo.xml'; $xml = simplexml_load_file($data_file); $ch = curl_init("http://raspberry.local:8080/json.htm?type=command&param=udevice&idx=315&svalue=".$xml->traffic->region->level); curl_exec($ch); curl_close($ch); ?>

Меняем idx устройства, полученное нами ранее на свое. Сохраняем (ctrl O), выходим (ctrl X), даем файлу права на исполнение командой в терминале sudo chmod x jams.php. В случае необходимости, устанавливаем дополнительные компоненты для работы скрипта:

sudo apt install php-xml sudo apt install php-curl

Информация о местоположении определяется автоматически, на основе IP адреса. В случае некорректного срабатывания автоопределения (например, если вы подключены к сети по VPN), информацию о регионе можно передать в запрос с помощью параметра ?region=<номер региона>. Узнать свой номер региона можно в службах яндекс, зайдя на сервис яндекс.пробки (номер региона будет виден в адресной строке). 

Периодическое обновление информации в системе оповещения реализуем с помощью скрипта в системе Domoticz. Для этого заходим в настройки -> События, нажимаем создать событие и выбираем язык DzVents. 

return { on = { timer = { 'at 07:15 on mon,tue,wed,thu,fri', 'every 30 minutes' } }, execute = function(domoticz, triggeredItem, info) domoticz.utils.osExecute('/home/pi/script/jams.php') if (domoticz.time.matchesRule('at 07:15') and domoticz.devices('Jams').state > 3) then domoticz.notify('Система безопаности', 'Сегодня на улице пробки, нужно выходить пораньше!', domoticz.PRIORITY_HIGH) end end }

Теперь информация с датчика обновляется в автоматически и даже строятся графики дорожной обстановки. 

Все? А вот и нет! Ну кто утром читает push уведомления с телефона, необходимы голосовые оповещения! Начал искать подходящие службы для синтеза речи, поддерживающие русский язык. Их оказалось не так уж много...

  • Festival TTS
  • ESpeak TTS
  • Яндекс.Speechkit
  • Google.Speech

Первые две достаточно примитивны, создают просто ужасную сложно различимую речь уровня этак 90-х годов прошлого века. Голосовой синтезатор от Яндекс довольно хорош, основан на модели голосового синтеза искусственного интеллекта, речь довольно плавная, с интонациями. Однако, мне он не пришелся по вкусу т.к. с недавних пор  служба предоставляется в рамках пакета Cloud.Speechkit стоимостью 183,0508 ₽ за 1 млн. символов, обращение к сервису проходит с помощью токенов, которые нужно получать каждые 12 часов. Остается творение "корпорации добра" ? Он хоть по качеству синтеза немного хуже, но бесплатный и может использоваться без дополнительных заморочек с получениями токенов...

Для озвучивания событий создадим небольшой скрипт speech.sh в папке со скриптами (либо просто в домашней директории). Для этого вводим в терминале

nano speech.sh

Вставляем файл следующего содержания: 

#!/bin/bash say() { local IFS= ;/usr/bin/mplayer -ao alsa -really-quiet -noconsolecontrols "http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=$*&tl=ru"; } mplayer /home/pi/sound/messageOn.mp3 -really-quiet say $* mplayer /home/pi/sound/messageOff.mp3 -really-quiet

Сохраняем файл, закрываем, даем ему права на исполнение. Для этого в терминале вводим команду sudo chmod x  speech.sh. Скрипт, в качестве параметров командной сроки, принимает фразу, которую необходимо произнести. Перед началом сообщения и после него, для привлечения внимания, я добавил звуковые сигналы (наподобие тех, которые можно услышать в аэропортах перед объявлениями). Все, теперь осталось только сконфигурировать Domoticz для голосового оповещения: 

Для этого заходим в Настройки -> Уведомления и добавляем пользовательскую систему уведомления, как показано на картинке. Теперь наш умный дом будет не только сообщать о пробках, но и озвучивать необходимость замены батареек в датчиках, сообщать об обнаружении протечек, необходимости проветривания помещения в случае превышения концентрации СО2 в доме (если отсутствуют бризеры), успешной проверке системы защиты от протечки, необходимости взять с собой зонт, если по прогнозу погоды обещали дождь, одеться потеплее, при резких изменениях температуры на улице, и прочих полезных вещах, о которых необходимо знать владельцу умного дома. 

На этом пока все, а какие кейсы работы умного дома реализованы у вас? Оставляйте в комментариях, это позволит сделать наши умные дома еще чуточку "умнее"!


Отличная статья, спасибо за проделанную работу.

Супер! Хочу тоже самое в ХАшку...

а в WB не устанавливали?

А можно уточнить, куда происходит вывод звука?


ЗЫ Сам и уточню, вывод на калоши через mplayer. А хотелось бы на хоумпод, но наверное нереально будет.


Вернуться назад

Устройства


Raspberry Pi

Raspberry Pi 4

(16 отзывов)

Вернуться назад