2015-10-06 545 views
0

我是网络开发新手,我想做网页远程控制我的树莓派。在树莓上我连接了几个传感器,并且可以通过在192.168.1.100:9997上发送请求来获取数据。有用Python编写的代码。例如,如果我尝试使用Putty获取数据,那么一切正常。现在我想通过我的网页建立TCP连接来读取数据。我搜索了几天,发现这可以通过创建Websockets来实现。有很多工具,我发现最多的是Node.js.据我所知Node.js可以创建Websockets,它也可以提供网页(而不是Appache)?从Raspberry PI通过Websocket获取数据到Web页面?

例如,我正在运行此Websocket服务器,仅用于从“server.js”中的RPi读取数据。现在我不知道如何从“server.js”获取这些数据到我的.html文件中?我没有找到任何非常基本的例子。我可以通过数据库获取数据,但这不是我想要的。我也想从我的网页发送请求到Rpi,然后阅读答案。

我希望你能理解我的问题。如果你能指出我一些很好的例子,或者告诉我该怎么做,我会很高兴。如果可能的话,我想用Javasrcipt做到这一点。

预先感谢您。

编辑:我现在用Node.js工作的例子,但我不知道如何实现这个到我的网页,用户可以触发这部分代码从.html,并显示应答数据到.html网站页。我希望这有帮助。

var client = new net.Socket(); 
client.connect(9997, '192.168.1.100', function() { 
    console.log('Connected'); 
    //sending request 
    //THIS SHOULD BE TRIGGERED FROM HTML onclick for example 
    client.write('$DATA'); 
}); 

client.on('data', function(data) { 
    console.log('Received: ' + data); 
    //THIS DATA SHOULD BE SHOWN IN HTML for example 
    //client.destroy(); // kill client after server's response 
}); 

client.on('close', function() { 
    console.log('Connection closed'); 
}); 
+0

您可以在Python代码之上构建一个Web API。 –

+0

嗯...我想可能会有一些混淆 - Websockets是一个特定的Web协议,如HTTP或SMTP或IMAP ...您的'192.168.1.100:9997'服务是否支持Websockets协议?它使用HTTP吗?它是否在原始TCP/IP连接上使用自定义协议? ...需要更多数据才能帮助你。 – Myst

+0

是的,可能有很多新的终端......我的服务是TCP服务器,他接收和发送ASCII数据。例如我创建TCP客户端,在192.168.1.100:9997上连接,并根据请求$ DATA获得响应$ TEMP,123,HUMIDITY,234等。我只需要一些mechanisem,我将能够与我的这项服务进行通信网页。到目前为止,我正在使用Apache服务为main.php页面我已经得到MySql数据库实施。我找到了使用Node.js作为异步TCP clinets的示例。我想从.html发送请求中的onClick事件并在.html中显示收到的数据。希望你能理解。 – anze87

回答

0

对于获取数据,一个Pi和到Web页面,看看一些实例中这样使用WAMP和Crossbar.io(对于WAMP开源路由器(一个开放运行于网页套接字的顶部协议) ) - http://crossbar.io/iotcookbook/Raspberry-Pi/

完全披露:我正在研究这些项目 - 但他们是开源的,非常适合OP想要做的事情。