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 からリモート Web ページ ( http://if.christianbirch.dk/helloworld.php )の非常に単純な php-script に変更すると、Pebble 応答が成功します: [PHONE] pebble-app .js:?: {"Web 応答":"Hello World!"}
解決策を求めて多くのフォーラムを検索しましたが、うまくいきませんでした。ただし、Ajax スクリプトでローカル URL またはポート番号が何らかの形で正しく定義されていないか、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()