作为 Pebble/Ajax/Java Script/Python 新手,我正在编写非常基本的代码,以便在 Pebble 手表上接收 Raspberry Pi 传感器读数:
我正在执行从 Pebble 到 Raspberry Pi Python 服务器的简单 Ajax 请求,但未能获得任何响应(客户端/服务器代码如下)。
但是,当我打开 Web 浏览器并输入 Raspberry Pi 的本地 url 时,Raspberry 服务器会成功响应,例如。192.168.1.80:9999: {"Pi 响应":"Hello World!}"
当我将本地 URL 从 192.168.1.80 更改为远程网页 ( http://if.christianbirch.dk/helloworld.php ) 上的一个非常简单的 php 脚本时,Pebble 响应也成功:[PHONE] pebble-app .js:?: {"Web 响应":"Hello World!"}
我已经在许多论坛中搜索了解决方案,但没有运气。但是,我怀疑本地 URL 或端口号在 Ajax 脚本中以某种方式错误地定义 - 或者 Raspberry Pi Python 脚本可能缺少标题语句。
任何经验。这个问题?先感谢您!
Pebble JS 脚本:
var ajax = require('ajax');
ajax(
{
url: 'http://192.168.1.80', // *** Valid reponse is received when changing this URL to http://if.christianbirch.dk/helloworld.php ***
method: 'get',
type: 'json',
port:'9999'
},
function(data) {
// Success!
console.log(JSON.stringify(data));
},
function(error) {
// Failure!
console.log('No response!');
}
);
Python 服务器脚本(从 Web 浏览器调用时收到的有效响应) https://docs.python.org/2/library/socketserver.html
import SocketServer
class MyTCPHandler(SocketServer.BaseRequestHandler):
def handle(self):
self.reqdata = self.request.recv(1024).strip()
print self.reqdata
self.send('{"Pi Reponse":"Hello world!"}')
def send(self.content):
self.request.sendall('HTTP/1.0 200 OK\n\n{}.format(content))
if __name__ == "__main__":
HOST, PORT = "0.0.0.0", 9999
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()