Продолжаю переписывать скрипты с баша на питон. С течением времени функционал keeneticOS меняется, и приходится некоторые скрипты переписывать. Так вышло и со снятием показаний качества сигнала.
Роутер Keenetic Giga KN-1010 (3.6.12), USB-модем Huawei e3372h.
Для работы потребуется настроить доступ к /rci роутера.
Переходим в http://my.keenetic/controlPanel/remoteAccess/KeenDNS и создаем новую запись
(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']))
git clone https://gist.github.com/894d8c53f1a6836c23dde8bc7c41d14a.git
git clone https://gist.github.com/c997d7fe95494402d53fb1dcb271d61f.git
Обратите внимание, что датчики создаем с типом "Уровень громкости" (Sound level). Это позволит записывать отрицательные значения.
Комментариев нет :
Отправить комментарий