Перейти к содержанию

Метеостанция без метеостанции: различия между версиями

Материал из Wiki yaboard
Нет описания правки
Нет описания правки
 
(не показаны 32 промежуточные версии 3 участников)
Строка 1: Строка 1:
{{metadesc|{{PAGENAME}} | Метеостанция с Алисой без датчиков }}
{{metadesc|{{PAGENAME}} | Метеостанция по всему свету с Алисой без датчиков }}
__NOEDITSECTION__
__NOEDITSECTION__
__TOC__
__TOC__




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


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




Строка 13: Строка 13:


Задача решается в несколько несложных действий:
Задача решается в несколько несложных действий:
# На [//narodmon.ru сайте народного мониторинга] создаём приложение (меню "Софт" > "Приложения для проекта"),  
# На [https://narodmon.ru сайте народного мониторинга] создаём '''приложение''' (меню "Софт" > "Приложения для проекта" или "Профиль" > "Мои приложения"),  
# Берём оттуда "Ключ API" и id датчика.
# Название приложения/сайт - произвольно (например, "Кузя" или "Метеостанция Алисы").
# Создаём в Кузе новое GET-правило с параметрами:
# Генерируем и берём оттуда "'''Ключ API'''" (для полной функциональности необходимо подтвердить email-адрес),
## Активационная фраза: Давление
# '''id''' нужного нам датчика (см. иллюстрации ниже).
## Ответ Алисы: Давление {sensors.0.value}
# Создаём в Кузе (подробнее см, например, [[https://wiki.yaboard.com/w/Алиса,_Ардуино_и_Blynk_-_делаем_собственное_устройство#.D0.9A.D1.83.D0.B7.D1.8F здесь]]) новое '''GET'''-правило с параметрами:
## URL: http://narodmon.ru/api?cmd=sensorsValues&sensors=ID сенсора берем здесь&uuid=Здесь произвольный идентификатор&api_key=Здесь Ключ API приложения, которое создали&lang=ru
#* Активационная фраза: Давление
# Ставим галочку "Ждать ответ от сервера"
#* Ответ Кузи: Давление {sensors.0.value} (обратите внимание, именно 0, а не id датчика!)
#* URL: <nowiki>https://narodmon.ru/api?cmd=sensorsValues&sensors=</nowiki>'''id_датчика'''&uuid='''произвольный_id'''&api_key='''ключ_API'''<br>где:
#*# '''id_датчика - числовой!''' Если в свойствах вашего датчика ID выглядит как S12345, в строке надо указать только 12345!
#*# '''произвольный_id''' - любая уникальная строка, лучше всего '''любой md5-хэш''' - и уникально, и не надо мучаться с выбором, и правильно обработается API.
#*# '''ключ_API''' - полученный в п.2 ключ.
# Ставим галочку "'''Ждать ответ от сервера'''".
# Ставим галочку "'''Выход из навыка после выполнения'''".
# Убеждаемся, что "'''Правило включено'''".


Вверху страницы сайта Кузи запоминаем/копируем значение "Код для объединения устройств c этими правилами: '''ххххххххххх'''".
Он понадобится для сопряжения при первом запуске Кузи на каждом устройстве.


Готово! Говорим Алисе: "Запусти навык Домовенок Кузя", а когда он запустится - "Давление" (наша активационная фраза), и получаем информацию с датчика.
 
== Настройка навыка, объединение устройств ==
 
 
При первом запуске на любом из устройств необходимо ввести код объединения правил Кузи под конкретным аккаунтом для каждого из устройств, включая колонки. Это необходимо, чтобы убедиться, что именно вы - владелец этих правил.
 
Для смартфона и ПК код можно скопировать в буфер, а колонке придётся продиктовать его "на слух".
Рекомендуем читать по цифре: один-три-три-восемь-ноль-девять-один.
 
Домовёнок сначала предложит потренироваться и сказать команды на включение и выключение условной лампы. Можно пройти вместе с ним по этим шагам, а можно сразу после приветствия сказать: "Ввести код", и продиктовать (или вставить скопированный) ваш код с сайта alexstar.
 
Готово! Теперь можно сказать: '''"Алисе, запусти навык Домовенок Кузя"'''; а когда навык запустится - нашу активационную фразу '''"Давление"''', и получить информацию с датчика.
 
 
<gallery>
Файл:Meteo1_sensor_id.jpg | Берём id датчика на narodmon.ru в его свойствах
Файл:Meteo2-1-kuzia-get-params.jpg | Заполнение GET-правила на alexstar.ru
Файл:Meteo2-2-kuzia-site-and-code.PNG | Код для объединения устройств
Файл:Meteo2-3-kuzia-pairing-code.PNG | Пример ввода кода на ПК
Файл:Meteo3_exec.jpg | Наслаждаемся результатом
</gallery>
 
 
== Генератор 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} мм ртутного столба
 
Теперь при запросе Кузя сообщит строку с показаниями обоих датчиков. Если необходимо добавить больше датчиков, расширяйте поля по аналогии, не забывая увеличивать и индексы датчика в ответе Кузи.
 
<pre class=red>
Обратите внимание!
 
С 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''
</pre>
 
=== Сценарии ===
 
 
Как упростить запуск навыка? Воспользуемся двумя замечательными возможностями:
* Запуск навыка с немедленным выполнением команды и выходом после неё: "'''Попроси''' Домовёнка Кузю '''Давление'''";
* Сценарии Умного дома Яндекса, позволяющие назначить различные действия на условные фразы.
 
<gallery>
Файл:Meteo4_scenario.jpg | Пример сценария для запроса температуры
</gallery>




Строка 28: Строка 103:




Разве это возможно? Да, если на народном мониторинге рядом с нужным местом уже находятся подходящие датчики! Просто указываете их в настройках - и готово!  
Разве это возможно? Да, если на народном мониторинге рядом с нужным вам местом уже находятся чьи-то подходящие датчики! Просто укажите эти датчики в настройках - и можно получать оперативную сводку о погоде. Больше того: на Народном мониторинге поддерживается огромное количество различных датчиков (УФ-индекс, радиация, запылённость итд), которые вы, возможно, не имеете возможность установить и/или настроить.
 
Точность данных будет зависеть от добросовестного отношения владельца каждого датчика к его изготовлению, поверке, размещению - но это вполне прикладной лайфхак.
 
А что особенно интересно - можно подключить и "далёкие" датчики! И собрать целую коллекцию метеосводок - например, из городов, где живут ваши друзья )
 
 
== Возможные ошибки ==
 
 
=== Совет по отладке ===
 
 
Если что-то идёт не так, то самый просто способ проверить - это скопировать строку из созданного 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}]}
 
<pre class="green">
На данный момент на сайте Кузи добавлена специальная страничка логов, где можно просмотреть данные последнего запуска без всех этих ухищрений и даже с  дополнительной информацией. Перейти на неё можно, нажав зелёную кнопку с "планшеткой" слева от значка корзины, удаляющего правило.
</pre>
 
 
=== Подробнее о некоторых ошибках ===
 
 
{"error":"Недопустимое значение id","errno":400}
Скорее всего, вы невнимательно указали датчик вместе с буквенным префиксом (например, S12345).
 
{"error":"UUID_INCORRECT","errno":400}
Возможно, вы указали слишком короткую строку, или содержащую некорректные символы.<br>Вернитесь к началу инструкции: мы не зря советовали [[#.D0.93.D0.B5.D0.BD.D0.B5.D1.80.D0.B0.D1.82.D0.BE.D1.80_md5_.D0.B4.D0.BB.D1.8F_.D1.81.D0.B0.D0.BC.D1.8B.D1.85_.D0.BB.D0.B5.D0.BD.D0.B8.D0.B2.D1.8B.D1.85_.29.29 | взять '''хэш md5''']], он работает гарантированно, и не требует никаких усилий для его создания.
 
{"error":"Это приложение отключено его разработчиком или Администратором.","errno":403}
Вы удалили на сайте narodmon ключ API, и теперь приложение заблокировано. Необходимо выпустить новый ключ.
 
{"error":"MANY_UUID_PER_IP","errno":403}
Может отображаться, если вы сгенерировали несколько ключей, или через ваш IP проходят ещё чьи-то запросы к сервису. Также, судя по всему, возникает, если вы за короткий промежуток времени обратились со старым (неважно, рабочим или нет) и новым ключом. В этом случае просто подождите несколько минут.
 
К сожалению, администрация Народного мониторинга отсылает к стандартному списку HTTP-ошибок и никак не комментирует собранную нашим комьюнити информацию. Так что любые новые выявленные причины ошибок дописывайте в эту главу.
 
 
=== Ошибок нет, но датчик не озвучивается ===
 
 
Возможно, ответ в браузере при этом будет выглядеть как пустой массив {"sensors":[]}
 
Это значит, что запрошенный датчик '''не опубликован''' (имеет статус приватного на narodmon). Сделайте датчик публичным, если он ваш, или обратитесь к его владельцу, (подробнее в [[#.D0.9C.D0.B5.D1.82.D0.B5.D0.BE.D1.81.D1.82.D0.B0.D0.BD.D1.86.D0.B8.D1.8F_.D1.81.D0.BE.D0.B2.D1.81.D0.B5.D0.BC_.D0.B1.D0.B5.D0.B7_.D0.B4.D0.B0.D1.82.D1.87.D0.B8.D0.BA.D0.BE.D0.B2.3F | предыдущем разделе]]).




P.S. В основу инструкции легли материалы сайта [//alexstar.ru Домовёнка Кузи] и лайфхак из [[//t.me/station_yandex нашего тг-чата]]
P.S. В основу инструкции легли материалы сайта [//alexstar.ru Домовёнка Кузи], личный опыт и лайфхак из [//t.me/station_yandex нашего тг-чата].




[[Category:Умный дом]]
[[Category:Умный дом]]

Текущая версия от 11:27, 5 февраля 2022


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

На помощь приходят Кузя и 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:

  1. <input style="width:80%" type="text" placeholder="Введите произвольную строку" id="source" name="source">
  2. <input style="width:80%" type="text" value="Ваш хэш появится здесь" id="md5_hex" name="md5_hex" readonly="readonly">

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

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

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

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. В основу инструкции легли материалы сайта Домовёнка Кузи, личный опыт и лайфхак из нашего тг-чата.