Add HTTP cmd API examples
This commit is contained in:
parent
98b4b7c04b
commit
2122cc2670
2 changed files with 83 additions and 0 deletions
68
examples/rtl_433_http_cmd.py
Executable file
68
examples/rtl_433_http_cmd.py
Executable file
|
@ -0,0 +1,68 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
"""Custom hop controller example for rtl_433's HTTP cmd API."""
|
||||
|
||||
# Start rtl_433 (`rtl_433 -F http`), then this script.
|
||||
# Needs the Requests package to be installed.
|
||||
|
||||
import requests
|
||||
import json
|
||||
from time import sleep
|
||||
|
||||
# You can run rtl_433 and this script on different machines,
|
||||
# start rtl_433 with `-F http:0.0.0.0`, and change
|
||||
# to e.g. `HTTP_HOST = "192.168.1.100"` (use your server ip) below.
|
||||
HTTP_HOST = "127.0.0.1"
|
||||
HTTP_PORT = 8433
|
||||
|
||||
|
||||
def set_freq(freq):
|
||||
return send_cmd({'cmd': 'center_frequency', 'val': freq})
|
||||
|
||||
|
||||
def set_rate(rate):
|
||||
return send_cmd({'cmd': 'sample_rate', 'val': rate})
|
||||
|
||||
|
||||
def send_cmd(params):
|
||||
url = f'http://{HTTP_HOST}:{HTTP_PORT}/cmd'
|
||||
headers = {'Accept': 'application/json'}
|
||||
|
||||
# You will receive JSON events, one per line terminated with CRLF.
|
||||
# Use GET
|
||||
response = requests.get(url, params=params, headers=headers, timeout=70, stream=True)
|
||||
# or POST
|
||||
# response = requests.post(url, data=params, headers=headers, timeout=70, stream=True)
|
||||
print(f'Sending {params} to {url}')
|
||||
|
||||
# Answer is lines of JSON
|
||||
return response.text
|
||||
|
||||
|
||||
def rtl_433_control():
|
||||
"""Simple timed control of rtl_433 in a loop forever."""
|
||||
|
||||
# Loop forever
|
||||
while True:
|
||||
try:
|
||||
# Set first hop
|
||||
sleep(10)
|
||||
print(set_freq(433920000))
|
||||
print(set_rate(250000))
|
||||
|
||||
# Set second hop
|
||||
sleep(10)
|
||||
print(set_freq(868000000))
|
||||
print(set_rate(1024000))
|
||||
|
||||
except requests.ConnectionError:
|
||||
print('Connection failed, retrying in 60s...')
|
||||
sleep(60)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
rtl_433_control()
|
||||
except KeyboardInterrupt:
|
||||
print('\nExiting.')
|
||||
pass
|
15
examples/rtl_433_http_cmd.sh
Executable file
15
examples/rtl_433_http_cmd.sh
Executable file
|
@ -0,0 +1,15 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Custom hop controller example for rtl_433's HTTP cmd API.
|
||||
|
||||
# Start rtl_433 (`rtl_433 -F http`), then this script.
|
||||
# Needs the xh tool installed (or httpie and change `xh` to `http`)
|
||||
|
||||
while : ; do
|
||||
sleep 10
|
||||
xh :8433/cmd cmd==center_frequency val==433920000
|
||||
xh :8433/cmd cmd==sample_rate val==250000
|
||||
sleep 10
|
||||
xh :8433/cmd cmd==center_frequency val==868000000
|
||||
xh :8433/cmd cmd==sample_rate val==1024000
|
||||
done
|
Loading…
Add table
Reference in a new issue