В связи с выходом крупного обновления 5.9.х, приглашаем вас принять участие в вебинаре 09.06.2022 в 15:00. Участвовать

Narodmon.ru



  • Есть такой ресурс http://narodmon.ru/

    у меня вопрос - есть ли у вас в планах создание функционала по передачи метео информации на этот ресурс?

    опережая вопрос для чего это надо скажу, что удобно мониторить погоду по этому сайту, также можно поделиться своей погодой со всеми 😃

    ну и доступ к нему есть со всех устройств, да и адрес простой…



  • Давайте сделаем это вместе 😉

    Вы разберетесь как публиковать показания температуры на этом ресурсе. Какой формат данных, нужна ли регистрация …

    Мы на основании этого сделаем плагин.



  • Хорошо, у меня там уже размещено два устройства…
    Screenshot_2017-02-07-21-15-10.png

    Одно такое 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 и увидел это "устройство"!
    Снимок экрана 2017-02-08 в 1.40.37.png

    а вот что отображается "Последние данные от устройства"
    <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 подправить 😃

    в итоге всё заработало, еще раз спасибо!


Log in to reply