Как известно в apple доме принято размещать датчики температуры и влажности внутри помещений. Но как быть если есть желание или даже необходимость, например для дальнейшего использования в автоматизациях, получить данные о температуре и влажности за окном?
Ответ: решить задачу, как и все поклонники умных домов — использовать системы вроде homebridge с соответствующим плагином и необходимой обвязкой для получения данных с публичных источников.
Итак, отправная точка. В нашем распоряжении есть homebridge, установленный в linux среде. Необходимо обеспечить возможность получения внешних данных для установки значений датчиков температуры и влажности.
Самым простым, пожалуй, способом является применение такого средства как 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
Все. Теперь вы осведомлены о температуре и влажности значительно лучше, а также можете использовать эти данные в автоматизациях.
6 комментариев
Спасибо за статью!
Добрый день) подскажите что делаю не так ?
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 и место с которого берется погода
Скрипт обновлен. Была досадая опечатка.
Друзья все классно!
НО вот вопросы:
1. Можно ли настроить получение данных не с одного датчика, а с 2-3-4?
2. Как добавить показания давления?
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 в котором я и многие другие обсуждают решения для организации своего умного дома. Заходи.