Как отправить списки Python на сервер бутылок? - PullRequest
0 голосов
/ 19 мая 2019

У меня есть файл python, который имеет 4 списка python, которые получают основную информацию (ip, host, mac, signal) с устройств, подключенных к точке доступа rpi.Я хотел бы постоянно посылать эти списки с Rpi на сервер-бутылку, потому что эта информация может со временем меняться (устройство отключается, изменяет свой сигнал ...).И наконец, напечатайте эту информацию в HTML.Как я могу постоянно отправлять информацию простым способом?WebSockets?Ajax?

1 Ответ

0 голосов
/ 20 мая 2019

вы можете настроить задание cron в вашей точке доступа RPI, которая периодически выполняет команду curl с содержимым списков python в виде JSON. Вы упоминаете «списки Python» в своем вопросе, если вы просто храните данные в файле .py, я бы предложил вместо этого записать их в другой формат, например, json.

Отправка данных с устройства RPI каждую минуту

# 1 0 0 0 0 curl -vX POST http://example.com/api/v1/devices -d @devices.json --header "Content-Type: application/json"

Тогда в вашем бутылочном файле есть метод, который получает данные POST, и другой, который может отображать данные GET. Пример просто записывает полученные данные в файл json на сервере

from bottle import route, run
import json

@route('/api/v1/devices', method='GET')
def index(name):
    with open('data.json') as f:  
        return json.load(f)


@route('/api/v1/devices', method='POST')
def index(name):
    req_data = request.json
    with open('data.json', 'r+') as f:
        data = json.load(f.read())
        # output = {**data, **req_data} # merge dicts
        output = data + req_data # merge lists
        f.seek(0)
        f.write(output)
        f.truncate()
    return {success: True}

run(host='localhost', port=8080)

Примечание. Я не проверял этот код, чтобы дать вам представление о том, как вы можете выполнить свой запрос.

...