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

Ответ: решить задачу, как и все поклонники умных домов — использовать системы вроде homebridge с соответствующим плагином и необходимой обвязкой для получения данных с публичных источников.

Итак, отправная точка. В нашем распоряжении есть homebridge, установленный в linux среде. Необходимо обеспечить возможность получения внешних данных для установки значений датчиков температуры и влажности.

Самым простым, пожалуй, способом является применение такого средства как webhooks — система уведомлений сторонний приложений. Основывается этот подход на вызовах определенных адресов запросами с перечислением определенных параметров, которые и содержат существенные данные. В нашем случае мы планируем как минимум отправлять температуру и влажность.

Устанавливаем

homebridge-http-webhooks

Рекомендую делать это через интерфейс homebridge дабы избежать возможные проблемы с переменными окружения.

Конфигурируем

Данный плагин представляет собой платформу, поэтому добавляется в соответствующем блоке конфига – platforms.

        {
            "platform": "HttpWebHooks",
            "webhook_port": "52411",
            "cache_directory": "/home/pi/.homebridge/.node-persist/storage",
            "sensors": [
                {
                    "id": "temp",
                    "name": "Температура на улице",
                    "type": "temperature"
                },
                {
                    "id": "hum",
                    "name": "Влажность на улице",
                    "type": "humidity"
                }
            ]
        }

webhook_port – номер tcp порта на котором будет «висеть» наш webhook
id – параметр к которому мы будем обращаться для передачи показаний webhook-у (не менять)
namе – имя датчика в homebridge и соответственно в homekit
type – тип устройства которым будем через webhook управлять (не менять)

Проверяем синтаксис конфига. Сохраняем. Рестартим HB и видим два новых датчика в web интерфейсе и в apple доме.

Итого. У нас есть система умного дома способная получать данные извне и транслировать их в привычный apple дом. Но что делать с источником данных?

Ответ: пойти по тому же opensource пути и воспользоваться открытыми данными с сервиса narodmon.ru

Краудфандинговый геоинформационный проект по отображению на карте мира и контролю (на ПК, смартфонах и других гаджетах) показаний датчиков своих участников (температуры, влажности, атм.давления, скорости и направления ветра, радиации, энергопотребления и любых других величин), а также частных и городских веб-камер для публичного или приватного просмотра.

Сервис мало того, что предоставляет в открытом виде на своей странице данные о показаниях датчиков участников проекта, так еще и дает возможность этими данными легко воспользоваться через достаточно удобный API – программный, машинный интерфейс взаимодействия, позволяющий одной системе получать данные от второй путем запросов в ее адрес.

Для того чтобы воспользоваться API сервиса необходимо зарегистрировавшись на ресурсе http://narodmon.ru получить индивидуальный ключ.

Вводим свою почту или телефон

Принимаем лицензионное соглашение и переходим к выпуску API ключа для своего будущего приложения.

Называем его как угодно

Запоминаем

*Не забываем подтвердить почту. Без этого работа API будет сильно урезана.

Теперь у нас есть откуда получить данные и куда их отправить. Осталось объединить.

В качестве прослойки будет выступать простой bash скрипт, который мы будем запускать с необходимой периодичностью автоматически используя планировщик задач cron.

Создаем директорию в которой будем хранить наши скрипты:

mkdir /home/pi/.homebridge/bashscript

Определяемся с каких датчиков будем получать данные о погоде. Для этого найдя на карте датчик с необходимым параметром нажимаем поделиться и запоминаем номер в адресе.

Можно использовать два разных датчика. С одного забирать влажность, с другого температуру. Обратите внимание на датчики рядом с аэропортами. Как правило они установлены под эгидой METAR (METeorological Aerodrome Report) и используют высокоточные приборы.

Создаем и открываем в редакторе будущий скрипт:

nano /home/pi/.homebridge/bashscript/narodmon2homebridge.sh

Копируем и вставляем текст скрипта, меняя переменные на свои:

!Дабы избежать проблем с копированием символов рекомендуется взять текст скрипта отсюда https://pastebin.com/j2bxqq4n 

#!/bin/bash

# Данные homebridge на котором установлен плагин homebridge-http-webhooks
# https://www.npmjs.com/package/homebridge-http-webhooks
# ip адрес устройства на котором установлен homebridge с соответствующим плагином
hbip='10.*.*.*'
# порт который был указан в настройках платформы
hbport='52411'

# Данные для подключения к API платформы narodmon.ru
# http://narodmon.ru/
# API ключ
apikey='MZ****SDR'
# Любой md5 хэш. Получить можно тут http://www.md5.cz/
# Служит идентификатором пользователя/приложения на стороне сервиса
uuid='e936************************d4f2'

# Конфигурация точек
# Температура
tempid='3199'
# Влажность
humid='3199'
# Полечение
temp=$(curl -s --data "cmd=sensorsOnDevice&api_key=$apikey&uuid=$uuid&id=$tempid&lang=en" https://narodmon.ru/api | python -m json.tool | grep -A 2 u00b0 | grep value | awk '{print $2}')
hum=$(curl -s --data "cmd=sensorsOnDevice&api_key=$apikey&uuid=$uuid&id=$humid&lang=en" https://narodmon.ru/api | python -m json.tool | grep -A 2 % | grep value | awk '{print $2}')
# Передача
curl -s -X GET "http://$hbip:$hbport/?accessoryId=temp&value=$temp"
curl -s -X GET "http://$hbip:$hbport/?accessoryId=hum&value=$hum"
# Для адептов MQTT есть дополнение в скрипте
# Чтобы оно заработало необходимо закомментировать знаком шарп/решетка/диез '#' строки номер 24 и 25 (блок передача)
# И настроить ниже параметры подключения к вашему MQTT брокеру
# Данные будут поступать в топики narodmon2homebridge/temp и narodmon2homebridge/hum
# Чтобы начал работать MQTT варинат у следующих строк необходимо убрать знак шарп/решетка/диез '#'
#mqtthost='10.*.*.*'
#mqttport='1883'
#mqttuser=''
#mqttpass=''
#mqtttopic='narodmon2homebridge'
#mosquitto_pub -h $mqtthost -p $mqttport -u $mqttuser -P $mqttpass -t $mqtttopic/temp -m '$temp'
#mosquitto_pub -h $mqtthost -p $mqttport -u $mqttuser -P $mqttpass -t $mqtttopic/hum -m '$hum'

Нажимаем ctrl+x, вводим Y и Enter.

Даем файлу права на исполнение

chmod +x /home/pi/.homebridge/bashscript/narodmon2homebridge.sh

Запускаем

/home/pi/.homebridge/bashscript/narodmon2homebridge.sh

В интерфейсе homebridge и приложении дом должны обновиться данные.

Дело осталось за малым – сделать запуск скрипта регулярным и автоматическим.

crontab -e

* Если будет предложен выбор редактора, выбирайте nano как наиболее простой вариант.
Добавляем в конец строку

*/10 * * * * /home/pi/.homebridge/bashscript/ narodmon2homebridge.sh

*/10 – каждая десятая минута с момента запуска cron в которую будет запускаться синхронизация. Если хочется для какой-то цели чаще меняйте на свой вкус. Установив * получите обновление каждую минуту.
Важно чтобы данная строка заканчивалась переводом каретки (enter) на новую. Сохраняемся ctrl+x ввести Y и enter. В случае корректных действий видим crontab: installing new crontab

Все. Теперь вы осведомлены о температуре и влажности значительно лучше, а также можете использовать эти данные в автоматизациях.

Author

6 комментариев

  1. Добрый день) подскажите что делаю не так ?
    pi@homebridge:~ $ /home/pi/.homebridge/bashscript/narodmon2homebridge.sh
    /home/pi/.homebridge/bashscript/narodmon2homebridge.sh: line 24: gt: command not found
    /home/pi/.homebridge/bashscript/narodmon2homebridge.sh: line 24: /dev/null: Permission denied
    /home/pi/.homebridge/bashscript/narodmon2homebridge.sh: line 25: gt: command not found
    /home/pi/.homebridge/bashscript/narodmon2homebridge.sh: line 25: /dev/null: Permission denied
    pi@homebridge:~ $
    если можно киньте еще раз скрипт с удалением лишних строчек ) только что бы вставить api и место с которого берется погода

  2. Друзья все классно!
    НО вот вопросы:
    1. Можно ли настроить получение данных не с одного датчика, а с 2-3-4?
    2. Как добавить показания давления?
    3. можно ли также добавить вебкамеры которые есть в народном мониторинге?

  3. Приятное дополнение. Но возник ряд вопросов

    1. Можно ли добавить получение данных с нескольких датчиков? (Теоретически понимаю как это сделать но все же)
    2. Возможно ли добавить датчик давления! Очень нужная вещица парой бывает
    3. А есть ли возможность интегрировать в плагин веб камеры?

    • Алекс, дубль комментария был распознан как спам и от того не попал на страницу. Поправил.

      1. Да. Хоть 100500.
      2. Да. Но. В HomeKit нет плашки на которую можно было бы вевести нативно данные о давлении. Однако, есть обходной вариант, когда данные выводятся не в значении, а в наименовании плашки. Этакий костыль обходящий наши любимые ограничения от Apple. Для такого нужно точно переходить на mqtt вариат. А лучше дополнить NodeRed-ом, так как там это сделать будет гораздо проще. Положу этот вопрос в копилку как основание для будущих статей.
      3. Насколько мне известно narodmon не отдает видео-потоков. Если бы отдавало то конечно можно. Но это будет другой плагин (если мы говорим о homebridge). https://www.npmjs.com/package/homebridge-camera-ffmpeg — сам плагин. https://inhomekit.ru/2018/03/18/dobavlenie-kamer-v-homekit/ — статья о том как его настроить.

      У портала есть уютный telegram чат https://t.me/inhomekit_chat в котором я и многие другие обсуждают решения для организации своего умного дома. Заходи.

Write A Comment