Метеостанция без метеостанции

Материал из База знаний
Перейти к навигации Перейти к поиску



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

На помощь приходят Кузя и IoT-проект "Народный мониторинг" ;)


Метеостанция с датчиками и Кузей

Задача решается в несколько несложных действий:

  1. На сайте народного мониторинга создаём приложение (меню "Софт" > "Приложения для проекта" или "Профиль" > "Мои приложения"),
  2. Название приложения/сайт - произвольно (например, "Кузя" или "Метеостанция Алисы").
  3. Генерируем и берём оттуда "Ключ API" (для полной функциональности необходимо подтвердить email-адрес),
  4. id нужного нам датчика (см. иллюстрации ниже).
  5. Создаём в Кузе (подробнее см, например, [здесь]) новое GET-правило с параметрами:
    • Активационная фраза: Давление
    • Ответ Кузи: Давление {sensors.0.value} (обратите внимание, именно 0, а не id датчика!)
    • URL: https://narodmon.ru/api?cmd=sensorsValues&sensors=id_датчика&uuid=произвольный_id&api_key=ключ_API
      где:
      1. id_датчика - числовой! Если в свойствах вашего датчика ID выглядит как S12345, в строке надо указать только 12345!
      2. произвольный_id - любая уникальная строка, лучше всего любой md5-хэш - и уникально, и не надо мучаться с выбором, и правильно обработается API.
      3. ключ_API - полученный в п.2 ключ.
  6. Ставим галочку "Ждать ответ от сервера".
  7. Ставим галочку "Выход из навыка после выполнения".
  8. Убеждаемся, что "Правило включено".
Вверху страницы сайта Кузи запоминаем/копируем значение "Код для объединения устройств c этими правилами: ххххххххххх".
Он понадобится для сопряжения при первом запуске Кузи на каждом устройстве.


Настройка навыка, объединение устройств

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

Для смартфона и ПК код можно скопировать в буфер, а колонке придётся продиктовать его "на слух". 
Рекомендуем читать по цифре: один-три-три-восемь-ноль-девять-один.

Домовёнок сначала предложит потренироваться и сказать команды на включение и выключение условной лампы. Можно пройти вместе с ним по этим шагам, а можно сразу после приветствия сказать: "Ввести код", и продиктовать (или вставить скопированный) ваш код с сайта alexstar.

Готово! Теперь можно сказать: "Алисе, запусти навык Домовенок Кузя"; а когда навык запустится - нашу активационную фразу "Давление", и получить информацию с датчика.



Генератор md5 для самых ленивых ))

Введите кулаком по клавиатуре произвольную строку для генерации хэша md5:


Улучшения и расширенные возможности

Нет предела совершенству! Делаем работу с метеостанцией ещё комфортнее:


Несколько датчиков в одном запросе

API narodmon.ru позволяет одной строкой запросить сразу несколько датчиков, просто перечислив их через запятую (без пробелов).

Например, у нас есть датчик S12345, измеряющий температуру, и S67890, измеряющий давление. Дополним строку в поле "URL управления запросом":

https://narodmon.ru/api?cmd=sensorsValues&sensors=12345,67890&uuid=здесь_md5_хэш&api_key=здесь_API_key

...и строку в поле "Ответ Кузи":

{sensors.0.value} по Цельсию, {sensors.1.value} мм ртутного столба

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

Обратите внимание!

С 22.12.2021 года Администрацией narodmon.ru по умолчанию устанавливается Pubs Limit, равный 1. Это значит, что получать данные можно только от одного датчика. Для получения информации от двух и более, Вам необходимо этот лимит увеличить. В настройках профиля на сайте narodmon.ru в разделе "Мои приложения" (там, где Вы получали "Ключ API") нажмите на количество в графе Pubs Limit используемого приложения, после чего откроется окно предупреждения и далее окно для запроса увеличения лимита в Администрацию ресурса. Укажите в каких целях Вы используете датчики. В случае успешного ответа Администрации можно использовать более одного датчика в пределах полученного лимита.

В ответе сервера narodmon.ru датчики располагаются по возрастанию независимо от того, в каком порядке Вы их расположили в запросе.
Например, ''sensors=12345,67890'' или ''sensors=67890,12345'' - значение {sensors.0.value} будет получено от датчика с id =''12345''

Сценарии

Как упростить запуск навыка? Воспользуемся двумя замечательными возможностями:

  • Запуск навыка с немедленным выполнением команды и выходом после неё: "Попроси Домовёнка Кузю Давление";
  • Сценарии Умного дома Яндекса, позволяющие назначить различные действия на условные фразы.


Метеостанция совсем без датчиков?

Разве это возможно? Да, если на народном мониторинге рядом с нужным вам местом уже находятся чьи-то подходящие датчики! Просто укажите эти датчики в настройках - и можно получать оперативную сводку о погоде. Больше того: на Народном мониторинге поддерживается огромное количество различных датчиков (УФ-индекс, радиация, запылённость итд), которые вы, возможно, не имеете возможность установить и/или настроить.

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

А что особенно интересно - можно подключить и "далёкие" датчики! И собрать целую коллекцию метеосводок - например, из городов, где живут ваши друзья )


Возможные ошибки

Совет по отладке

Если что-то идёт не так, то самый просто способ проверить - это скопировать строку из созданного GET-правила в браузер и открыть её там, как обычный сайт. На странице вы увидите то, что присылает Кузе сервис narodmon, и сможете использовать его для поиска ошибки или улучшения информативности ответа.

Например, строка запуска:

https://narodmon.ru/api?cmd=sensorsValues&sensors=12345&uuid=здесь_md5_хэш&api_key=здесь_API_key

Пример ответа в браузере, когда всё хорошо:

{"sensors":[{"id":12345,"type":1,"value":0.3,"time":1613728808,"changed":1613728808,"trend":0}]}
На данный момент на сайте Кузи добавлена специальная страничка логов, где можно просмотреть данные последнего запуска без всех этих ухищрений и даже с  дополнительной информацией. Перейти на неё можно, нажав зелёную кнопку с "планшеткой" слева от значка корзины, удаляющего правило.


Подробнее о некоторых ошибках

{"error":"Недопустимое значение id","errno":400}

Скорее всего, вы невнимательно указали датчик вместе с буквенным префиксом (например, S12345).

{"error":"UUID_INCORRECT","errno":400}

Возможно, вы указали слишком короткую строку, или содержащую некорректные символы.
Вернитесь к началу инструкции: мы не зря советовали взять хэш md5, он работает гарантированно, и не требует никаких усилий для его создания.

{"error":"Это приложение отключено его разработчиком или Администратором.","errno":403}

Вы удалили на сайте narodmon ключ API, и теперь приложение заблокировано. Необходимо выпустить новый ключ.

{"error":"MANY_UUID_PER_IP","errno":403}

Может отображаться, если вы сгенерировали несколько ключей, или через ваш IP проходят ещё чьи-то запросы к сервису. Также, судя по всему, возникает, если вы за короткий промежуток времени обратились со старым (неважно, рабочим или нет) и новым ключом. В этом случае просто подождите несколько минут.

К сожалению, администрация Народного мониторинга отсылает к стандартному списку HTTP-ошибок и никак не комментирует собранную нашим комьюнити информацию. Так что любые новые выявленные причины ошибок дописывайте в эту главу.


Ошибок нет, но датчик не озвучивается

Возможно, ответ в браузере при этом будет выглядеть как пустой массив {"sensors":[]}

Это значит, что запрошенный датчик не опубликован (имеет статус приватного на narodmon). Сделайте датчик публичным, если он ваш, или обратитесь к его владельцу, (подробнее в предыдущем разделе).


P.S. В основу инструкции легли материалы сайта Домовёнка Кузи, личный опыт и лайфхак из нашего тг-чата.
Источник — https://wiki.yaboard.com/index.php?title=Метеостанция_без_метеостанции&oldid=5990 // MOD ext links // End MOD