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

15 мая 2019, 08:25

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

Для того, чтобы умный дом знал дорожную обстановку и вовремя нас об этом предупредил, добавим информацию об интенсивности дорожного движения в 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 в доме (если отсутствуют бризеры), успешной проверке системы защиты от протечки, необходимости взять с собой зонт, если по прогнозу погоды обещали дождь, одеться потеплее, при резких изменениях температуры на улице, и прочих полезных вещах, о которых необходимо знать владельцу умного дома. 

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


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

  1. Вячеслав Фетисов (Ziracul)
    Вячеслав Фетисов (Ziracul) 2 месяца назад

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

  2. Aleksey Shchukin (skazo4nik)
    Aleksey Shchukin (skazo4nik) 2 месяца назад

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

К списку статей

Похожие статьи

19 декабря 2018, 21:11
Команды для bash, которые помогут вам в процессе постройки вашего УД
15 марта 2019, 10:08
Расскажу как автоматизировать списки покупок, дел и т.д. через Home Assistant + TODOist и слать красивые списки в Telegram. Примеры из личной жизни прилагаются.
05 декабря 2018, 12:17
Добавляем управление пылесосом от Xiaomi в Domoticz, с помощью плагина
29 апреля 2019, 19:25
Финальная настройка датчиков и реле в системе управления умным домом Domoticz.
15 декабря 2018, 17:49
Добавим датчики температуры и влажности которые подключаются через GPIO Raspberry
16 ноября 2018, 20:56
Это простая система домашней автоматизации, которая позволит вам собрать в одно целое, устройства различных производителей. Вы сможете настраивать, контролировать, интегрировать, создавать сложные сценарии и т.д и т.п.
08 января 2019, 23:04
Вот думаю, сохранить немного интриги, или сразу рассказать о моих выводах? Пожалуй, на пару строчек растяну. Но любой человек, который читал хоть одну мою статью поймет сразу что топить я буду именно за home-assistant. Почему? Пусть хоть здесь будет интрига.
25 ноября 2018, 18:32
Использование выключателей Livolo работающих по частоте 433 + Broadlink
09 декабря 2018, 17:59
Добавляем управление каждой розеткой удлинителя Broadlink Mp1 в нашу систему умного дома, с помощью плагина python-broadlink
03 июня 2019, 08:16
Добавление USB deCONZ в Domoticz.