среда, 27 октября 2021 г.

Domoticz. Качество сигнала 4G-модема


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

Роутер Keenetic Giga KN-1010 (3.6.12), USB-модем Huawei e3372h.

Для работы потребуется настроить доступ к /rci роутера.
Переходим в http://my.keenetic/controlPanel/remoteAccess/KeenDNS и создаем новую запись

Затем переходим в cli роутера и вводим команды
(config)> ip http proxy fs-ns-vfnm-ndj auth
Http::Proxy: "fs-ns-vfnm-ndj": enabled authentication.
(config)> user api
Core::Authenticator: User "api" has been added.
(config-user)> tag http-proxy
Core::Authenticator: User "api" tagged with "http-proxy".
(config-user)> password jjjvjqgfhjkm
Core::Authenticator: Password set has been changed for user "api".
(config-user)> exit
Core::Configurator: Done.
(config)> system configuration save
Core::ConfigurationSaver: Saving configuration...
(config)> exit
Core::Configurator: Bye.
Переходим на сервер Domoticz, в директорию со скриптами и создаем скрипт .py
mkdir /home/pi/domoticz/scripts/4qQuality && cd /home/pi/domoticz/scripts/4qQuality
nano 4gquality.py
import requests
import config
from requests.auth import HTTPBasicAuth

# Файл с настройками доступа к серверу и т.п.
conf = config.Config('config.cfg')

data = '"show interface ' + conf['keenetic_interface'] + '"'

params = {
    'Content-Type': 'application/json'
}

r = (requests.post(url='https://' + conf['keenetic_server'] + '/rci/parse', headers=params, data=data, auth=HTTPBasicAuth(conf['keenetic_username'], conf['keenetic_password']))).json()

# Обновляем значение датчиков: 
url = 'http://' + conf['domoticz_server'] + ':' + conf['domoticz_port'] + '/json.htm?'

headers = {
    'User-Agent' : 'curl/7.61.0',
    'Charset' : 'UTF-8'
}

# Добавляем словарь для обновления сенсоров в Domoticz
keen_params = { 
    'address': conf['address'], 
    'rssi': conf['rssi'], 
    'cinr': conf['cinr'], 
    'rsrq': conf['rsrq'], 
    'rsrp': conf['rsrp'], 
    'signal-level': conf['signal-level']
}

for key, value in keen_params.items():
    params = {
     'type' : 'command',
     'param': 'udevice',
     'idx': value,
     'nvalue': '0',
     'svalue' : r[key]
     }
    requests.post(url,headers=headers,params=params, auth=HTTPBasicAuth(conf['domoticz_username'], conf['domoticz_password']))
Для ленивых, качайте скрипт и шаблон config.cfg что должен лежать в одной папке с ним
git  clone https://gist.github.com/894d8c53f1a6836c23dde8bc7c41d14a.git
git  clone https://gist.github.com/c997d7fe95494402d53fb1dcb271d61f.git
Обратите внимание, что датчики создаем с типом "Уровень громкости" (Sound level). Это позволит записывать отрицательные значения.

Комментариев нет :

Отправить комментарий