Как настроить команду post запросов Python, которая включает скрипт

#python #post #python-requests #raspberry-pi3 #home-automation

#python #Публикация #python-запросы #малина-pi3 #домашняя автоматизация

Вопрос:

У меня есть следующие данные:

 POST /xled/v1/login HTTP/1.1
Host: 192.168.4.1
Content-Type: application/json
Content-Length: 61
{"challenge": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8="}
 

Как мне взять эти данные и превратить их в команду запросов с помощью Python? Существует множество примеров того, как создать команду post с использованием модуля запросов Python, ни один из них, похоже, не включает в себя часть сценария, которая соответствует одному из приведенных выше данных (по крайней мере, я не смог найти ни одного примера, который я ищу в Google, возможно, мой google-fu просто слаб).

Я использую Raspberry Pi 3 Model B Rev 1.2 под управлением Raspbian GNU / Linux 10 (buster) и Python 3.7.3.

Я пытаюсь войти в систему с помощью цепочки «умных» рождественских гирлянд от Twinkly. Я получил вышеуказанные данные со следующего сайта: https://xled-docs.readthedocs.io/en/latest/rest_api.html#api-calls

Я потратил весь день на поиск документов и вызывал ошибки в Python своими искаженными командами.

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

1. зависит от того, что у вас есть в качестве baseUrl, работает ли xled на вашем Raspberry Pi или в облаке? отключите base_url.com в любом http://localhost:port случае или https://cloudservice.com тогда это должно соответствовать спецификации r = requests.post('base_url.com/xled/v1/login', json={"challenge": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8="}); print(r.text)

2. Итак, программное обеспечение xled запущено на Raspberry Pi (10.0.1.2) Программное обеспечение Xled пытается отправить сообщение в Twinkly lights (10.0.1.3) Я пытаюсь все это из интерпретатора Python в командной строке. как xled, так и запросы импортируются в интерпретатор. Так было бы requests.post('http://10.0.1.2/xled/v1/login' ... , если да, то как команда узнает, что мы пытаемся отправить запрос на 10.0.1.3?

3. можете ли вы определить адрес twinkly в конфигурации xled?

Ответ №1:

Я все понял. Есть 2 xled, с которыми вы могли бы иметь дело, если работаете с мерцающими огнями. Существует модуль python, а затем есть раздел xled веб-сервера на самих источниках света.

Итак, когда вы видите /xled/v1/* , что это означает r = requests.post('http://x.x.x.x/xled/v1/* ) , это то, как должна выглядеть команда POST.

Для тех, кто совершенно не знаком с компьютерным жаргоном, x.x.x.x — это IP-адрес рассматриваемой световой строки. Вы можете получить эту информацию из приложения для iPhone. И тогда * — это любая команда, которую вы пытаетесь запустить из документации, которую я опубликовал в своем первоначальном вопросе. Надеюсь, это поможет прояснить ситуацию и для кого-то другого.

Счастливых праздников!