从Javascript发布变量值并使用Python(UV4L,WebRTC,Raspberrypi3)读取它们

时间:2018-08-02 21:07:49

标签: javascript python raspberry-pi raspberry-pi3 uv4l

我正在一个项目中,我们计划通过基于Web的应用程序来控制流动站。我在Raspberry Pi上使用UV4L及其模块。我的流媒体方面设置得很好,但是现在我正尝试将数据发送回Pi。

我已经把这个joystick放入了演示网页。

我想要做的是获取此操纵杆产生的X和Y值,并将其发送回Pi,并使其打印值。我一直试图做到这一点的方法是将X和Y值转换为JSON并使用Python读取JSON。我对编程还比较陌生,并且已经陷入了众所周知的深渊。

我试图使用我在另一个stackoverflow question中找到的示例,这是我编写的代码片段:

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数据通道可用,但我不知道是否需要使用它们来执行此操作。

我还想知道是否存在通过websocket发送变量值并使用python解析websocket的方法。

感谢您的时间,

1 个答案:

答案 0 :(得分:0)

由于您正在开发Web应用程序,因此使用WebRTC似乎很自然。 UV4L支持双向音频,视频和数据通道。 Here是UV4L端数据通道的工作方式。

此外,您可以从uv4l服务器上的 / stream / webrtc URL获取一个内置的WebRTC演示页面,例如,它肯定会使用客户端的数据通道嵌入一些javascript代码侧。您也可以在此其他演示Web应用here中找到一些代码。