Narodmon.ru
-
Есть такой ресурс http://narodmon.ru/
у меня вопрос - есть ли у вас в планах создание функционала по передачи метео информации на этот ресурс?
опережая вопрос для чего это надо скажу, что удобно мониторить погоду по этому сайту, также можно поделиться своей погодой со всеми
ну и доступ к нему есть со всех устройств, да и адрес простой…
-
Давайте сделаем это вместе
Вы разберетесь как публиковать показания температуры на этом ресурсе. Какой формат данных, нужна ли регистрация …
Мы на основании этого сделаем плагин.
-
Хорошо, у меня там уже размещено два устройства…
Одно такое http://gsm.meteolk.ru/order/page.php?id=10
Наблюдаю за температурой на улице, на балконе, на лоджии, внутри квартиры + влажность в квартире + атмосферное давление…
Второе - http://olimp-z.ru/rodos-6 подключено к пк на работе
-
@intrahouse:
Давайте сделаем это вместе
Вы разберетесь как публиковать показания температуры на этом ресурсе. Какой формат данных, нужна ли регистрация …
Мы на основании этого сделаем плагин.
Описание API отправил Вам на почту.
Для отправки самих данных на narodmon.ru регистрация не нужна! Данные принимаются и хранятся на сервере.
Регистрация нужна, чтобы увидеть эти данные, чтобы добавить в личном кабинете новое устройство.
сделал эксперимент - я в браузере набрал адрес http://narodmon.ru/get?ID=00-23-12-10-f9-34&T1=-10.10
затем зашел в свой кабинет на narodmon.ru и добавил новое устройство 00-23-12-10-f9-34 и увидел это "устройство"!
а вот что отображается "Последние данные от устройства"
<quote>> GeoIP: Хабаровск, Хабаровский край, Россия, 95.70.9.172Внимание! Новые данные добавляются 1 раз в минуту.
Полученные показания датчиков / Latest Sensors Readings, UTC+10
2017-02-08 01:29:49 95.70.9.172 GET
ID=00-23-12-10-f9-34&T1=-10.10
- Минимальный допустимый интервал передачи показаний датчиков составляет 5 минут. (т.е. отправлять не чаще 1 раза в 5 минут)
-
Добавлена возможность из сценариев IntraHouse вызывать скрипты системы Linux.
Можно запускать любой скрипт, который работает из оболочки (.bash, .py, ..)
При этом скрипту в качестве входных параметров могут передаваться переменные, например, значения датчиков системы.
Например, чтобы передавать значения датчиков температуры STEMP1 и влажности SHUM1 на ресурс narodmon.ru , нужно:
1. Написать сценарий, который будет запускать скрипт narodmon.py с определенной периодичностью
{ "scenname": "narodmon", "note": "Отправка показаний температуры и влажности на narodmon", "start": { }, "timers": [ { "name": "T0", "interval": 60, "note": "Время посылки после перезагрузки сервера.", "call": "next" }, { "name": "T1", "interval": 600, "note": "Периодичность следующих посылок", "call": "next" } ], "functions": { "start": { "exec": { "timer":"T0.start"} }, "next": { "exec": {"run": "narodmon.py <stemp1.aval><shum1.aval>", "timer":"T1.start"} } } }</shum1.aval></stemp1.aval>
Поместить этот сценарий в файл /opt/intrahouse/base/scenbase/narodmon.json.
Поскольку сценарий безусловный, он будет запущен сразу при старте сервера.
2. Написать скрипт narodmon.py . На сайте https://narodmon.ru есть "Пример передачи показаний TCP на Python". В этом примере нужно изменить пару строк для извлечения значений из командной строки, можно преобразовать в int или float
import sys sensor_value_1 = int( sys.argv[1] ) sensor_value_2 = float( sys.argv[2] )
В результате получаем скрипт:
#!/usr/bin/env python2 # -*- coding: utf-8 -*- # by Roman Vishnevsky aka.x0x01 @ gmail.com import socket import sys # MAC адрес устройства. Заменить на свой! DEVICE_MAC = '0123456789012' # идентификатор устройства, для простоты добавляется 01 (02) к mac устройства SENSOR_ID_1 = DEVICE_MAC + '01' SENSOR_ID_2 = DEVICE_MAC + '02' # значения датчиков, тип float/integer sensor_value_1 = int( sys.argv[1] ) sensor_value_2 = float( sys.argv[2] ) #sensor_value_1 = 20 #sensor_value_2 = -20.25 # создание сокета sock = socket.socket() # обработчик исключений try: # подключаемся к сокету sock.connect(('narodmon.ru', 8283)) # пишем в сокет еденичное значение датчика sock.send("#{}\n#{}#{}\n##".format(DEVICE_MAC, SENSOR_ID_1, sensor_value_1)) # пишем в сокет множественные значение датчиков # sock.send("#{}\n#{}#{}\n#{}#{}\n##".format(DEVICE_MAC, SENSOR_ID_1, sensor_value_1, SENSOR_ID_2, sensor_value_2)) # читаем ответ data = sock.recv(1024) sock.close() print data except socket.error, e: print('ERROR! Exception {}'.format(e))
Поместите этот скрипт в ту же папку /opt/intrahouse/base/scenbase/narodmon.py
При этом обязательно установить для него права на выполнение (chmod 775 narodmon.py), иначе будет ошибка Permission denied
Скрипт будет запускаться системой IntraHouse как отдельный процесс, его выполнение происходит независимо.
В логе IntraHouse фиксируется запуск и результат выполнения или ошибка при запуске.
-
@intrahouse:
Добавлена возможность из сценариев IntraHouse вызывать скрипты системы Linux.
Отличная новость! Спасибо!
попробовал… вместо влажности добавил вторую температуру
только у меня ошибка
__170220110025296^20.02.2017 11:00:25^Run ../base/scenbase/narodmon.py 24.8 -14.3
170220110025451^20.02.2017 11:00:25^Error: Traceback (most recent call last):
**File "../base/scenbase/narodmon.py", line 16, in <module>sensor_value_1 = int( sys.argv[1] )
ValueError: invalid literal for int() with base 10: '24.8'</module>**__
изменил на int на float
однако данные передались только от одного датчика, пришлось еще и narodmon.json подправить
в итоге всё заработало, еще раз спасибо!