1

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() 
4

1 に答える 1

0

お気づきのように、CloudPebble では、Web ベースのエミュレーターはローカル ネットワークにアクセスできません。ローカル ネットワーク アプリの開発と共に CloudPebble を使用するには、携帯電話をコンパイル ターゲットに設定する必要があります。私もPiに対して開発しているときに、これに遭遇しました。

于 2015-09-05T21:18:17.433 に答える