Публикация значений переменных из Javascript и их чтение с помощью Python (UV4L, WebRTC, Raspberrypi3)

Я работаю над проектом, в котором мы планируем управлять марсоходом через веб-приложение. Я использую UV4L и его модули на Raspberry Pi. У меня хорошо настроена потоковая передача, но теперь я пытаюсь отправить данные обратно на Pi.

Я взял этот джойстик и поместил на демонстрационную веб-страницу. .

Что я хочу сделать, так это взять значения X и Y, которые производит этот джойстик, и отправить их обратно в Pi, чтобы он распечатал значения. Я пытался сделать это так, чтобы преобразовать значения X и Y в JSON и прочитать JSON с помощью Python. Я относительно новичок в программировании, и меня бросили в пресловутые глубины.

Я пытался использовать пример, найденный в другом вопрос stackoverflow это то, что я получил, разделив код:

var xhr = new XMLHttpRequest();
var url= “webappurl”;
xhr.open(“POST”, url, true);
xhr.setRequestHeader(“Content-Type”, “json”);

xhr.onload= function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
        var json =JSON.parse(xhr.responseText);
        console.log(json.x +”, “ + json.y);
    }
};

var data = JSON.stringify({x, y});
xhr.send(data);

Затем я сделал это на стороне Python:

import requests
import simplejson
r = requests.get('webappurl')
c = r.content
j = simplejson.loads(c)
print(j)

Проблема, с которой я сталкиваюсь, заключается в том, что все, что я нахожу в Интернете, имеет разные рекомендации о том, как это сделать, и я не смог найти что-то в проектах других людей, которые я мог бы использовать для наших целей или иметь знания для адаптации, и я нужно сделать его как можно более прямым/простым.

У меня сложилось впечатление, что джойстик может быть уже построен с функциями/переменными, которые можно использовать для запуска или публикации.

Буду признателен за любые рекомендации о том, как лучше всего это сделать, или о правильном коде для этого - у меня также есть доступные каналы данных WebRTC, но я не знаю, нужно ли мне их использовать для этого.

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

Спасибо за ваше время,


person KiwiJess    schedule 02.08.2018    source источник


Ответы (1)


Поскольку вы разрабатываете веб-приложение, кажется естественным остаться с WebRTC. UV4L поддерживает двусторонние каналы аудио, видео и данных. Вот показано, как каналы данных работают на стороне UV4L.

Кроме того, встроенная демонстрационная страница WebRTC, которую вы можете получить, например, по URL-адресу /stream/webrtc на сервере uv4l, безусловно, содержит некоторый код javascript, использующий каналы данных со стороны клиента. Вы можете найти некоторый код в этом другом демонстрационном веб-приложении здесь также.

person spinus    schedule 03.08.2018
comment
Я использую демонстрационное веб-приложение, проблема, с которой я сталкиваюсь, заключается в публикации чего-либо с новой вещью, которую я добавил на веб-страницу, я попытался скопировать сценарий, но на самом деле это только для нажатия кнопок и встроенного Open CV, я пытаясь взять значения переменных и отправить их обратно в пи. - person KiwiJess; 03.08.2018
comment
Я думаю, что ключевая часть для отправки данных по каналам данных находится в файле signaling.js в демонстрационном приложении. Все остальное легко удалить, если оно вам не нужно. - person spinus; 03.08.2018