質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

1回答

6964閲覧

Arduinoからサーバーに送った文字列の確認方法。(Server, PHP, Azure...)

bobby2128

総合スコア42

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

0クリップ

投稿2017/04/04 12:48

編集2017/04/05 23:48

###前提・実現したいこと
末尾に示す参考文献を参考に、以下に示すようにプログラムを作成し、Arduino M0 ProとESP-WROOM-02を用いてWifiに接続後、ダミーの文字列データをPHPに送信しました。

phpファイルはWindowsAzureのサーバー上に用意しており、
以下にシリアル上に表示される結果のように、サーバーへの接続と、データの送信も成功しています。

ところが、以下のソースコードに示すように、phpにて送信されたデータを表示するようにしているのですが、うまく表示してくれません。

1.データが送信できていない。(空データ)
2.表示の方法、コードに誤りがある。

上記の2点が考えられますが、よくわかりません。どなたかアドバイスやご意見等ございましたらお教えいただけますと幸甚に存じます。

###ArduinoIDE1.8.0 シリアルモニタ上の実行結果

...Wi-Fi connected IP address: +CIFSR:STAIP,"192.168.43.217" +CIFSR:STAMAC,"5c:cf:7f:29:fa:4e" temperature=2 TCP connection ready temperature=2 Sending.. Packet sent +IPD,453:HTTP/1.1 302 Redirect Content-Type: text/html; charset=UTF-8 Location: https://p******.azurewebsites.net/dev/wwwroot/SQL_SEND.php Server: Microsoft-IIS/8.0 Date: Tue, 04 Apr 2017 12:12:53 GMT Connection: keep-alive Content-Length: 195 <head><title>Document Moved</title></head> <body><h1>Object Moved</h1>This document may be found <a HREF="https://p******.scm.azurewebsites.net/dev/wwwroot/SQL_SEND.php">here</a></body>

###該当のソースコード
Arduinoに書き込んだプログラム

C

1/*****************************Wifi,Setting***************************/ 2// ライブラリの読み込み 3#include "ESP8266.h" 4#include "Milkcocoa.h" 5#include "Client_ESP8266.h" 6// 転送スピード 7#define SERIAL_SPEED 115200 8/************************* WiFi Access Point *********************************/ 9// Wi-Fi SSID 10#define WLAN_SSID "D********" 11// Wi-Fi PASSWORD 12#define WLAN_PASS "e********" 13ESP8266Client wifi; 14 15String data; 16String server = "p******.scm.azurewebsites.net"; 17 18String uri = "/dev/wwwroot/SQL_SEND.php"; 19 20byte dat [5]; 21String temp ,hum; 22 23/********************************** Setup ***************************************/ 24void setup() { 25// パソコンとのシリアル通信のポートを開ける 26 Serial.begin(SERIAL_SPEED); 27// Wi-Fiモジュールとのシリアル通信のポートを開ける 28 Serial1.begin(SERIAL_SPEED); / 29// Wi-Fi設定 30 setupWiFi(); 31} 32 33/* setupWiFi(); Wifi接続部 省略*/ 34 35 36void loop () { 37 hum= "1"; 38 temp="2"; 39 data = "temperature=" + temp;// + "&humidity=" + hum;// data sent must be under this form //name1=value1&name2=value2. 40 httppost(); 41 delay(1000); 42} 43 44void httppost () { 45 Serial1.println("AT+CIPSTART=\"TCP\",\"" + server + "\",80");//start a TCP connection. 46// Serial.println("TCP connection try"); 47 48 if( Serial1.find("OK")) { 49 Serial.println("TCP connection ready"); 50 } 51 delay(1000); 52 53 String postRequest = 54 "POST " + uri + " HTTP/1.0\r\n" + 55 "Host: " + server + "\r\n" + 56 "Accept: *" + "/" + "*\r\n" + 57 "Content-Length: " + data.length() + "\r\n" + 58 "Content-Type: application/x-www-form-urlencoded\r\n" + 59 "\r\n" + data; 60 Serial.println(data); 61// Serial.println(postRequest); 62 63 64 String sendCmd = "AT+CIPSEND=";//determine the number of caracters to be sent. 65 66 Serial1.print(sendCmd); 67 Serial1.println(postRequest.length() ); 68 delay(500); 69 70 if(Serial1.find(">")) { 71 Serial.println("Sending.."); 72 Serial1.print(postRequest); 73 74 if( Serial1.find("SEND OK")) { 75 Serial.println("Packet sent"); 76 while (Serial1.available()) { 77 String tmpResp = Serial1.readString(); 78 Serial.println(tmpResp); 79 } 80 81 // close the connection 82 Serial1.println("AT+CIPCLOSE"); 83 } 84 } 85}

なんとか送ったデータを表示させたいと試みたphpのコード(Azureのサーバーにある)

php

1 2#$Temp $Humidityの書き出しテスト 3echo $_POST["temperature"]; 4$Temp=$_POST["temperature"]; 5echo $Temp; 6 7$Temp="TESTtest"; 8$Write="<p>Temperature : " . $Temp . " Celcius </p>"; 9echo $Write; 10 11echo "<br>Hello";

表示結果(http://p******.azurewebsites.net/SQL_send.php)
$Tempの情報が表示されない。

Connection established. resource(1) of type (SQL Server Connection) 57 Temperature : TESTtest Celcius Hello

###補足情報(言語/FW/ツール等のバージョンなど)
Arduino IDE 1.8.0
Arduino M0 Pro
ESP-WROOM-02

参考文献
https://www.instructables.com/id/Arduino-Esp8266-Post-Data-to-Website/step2/Circuit-Diagram-/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2017/04/06 05:47

パソコンから https://p******.scm.azurewebsites.net/dev/wwwroot/SQL_SEND.php に post したらデータはわたっているのでしょうか?
bobby2128

2017/04/06 06:02

CHERRY様 コメントいただきありがとうございます。データがわたっているかどうか、直接調べる方法が現在わからないでいます。。。
bobby2128

2017/04/06 06:23

CHRRY様 度々のコメント失礼します。$Temp=$_POST["temperature"];にて代入しているはずですが、おそらくそれが代入されていないのだと思います。理由としてはArduinoからデータが送られていないか、代入が出来ていないかのどちらかですが、それを区別し確かめる方法がわかりません。
guest

回答1

0

ログ結果より、Webサーバーから302 redirect(一時的な転送)と返答されていることが分かります。
すなわち、接続すべきURLhttp://p**.azurewebsites.net/SQL_send.phpではなく
https://p******.scm.azurewebsites.net/dev/wwwroot/SQL_SEND.phpということになります。

通常のブラウザなら、このあたり自動で再接続してくれますが、お使いの環境(Arduino)では、おそらく自力で再接続する処理を加えるか、https://p******.scm.azurewebsites.net/dev/wwwroot/SQL_SEND.phpに決め打ちで接続する必要があるかと思います。

投稿2017/04/06 04:52

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bobby2128

2017/04/06 05:00

can110様 ご回答をいただきありがとうございます。 上記コードにて、 String uri = "/dev/wwwroot/SQL_SEND.php";にて、 https://p******.scm.azurewebsites.net/dev/wwwroot/SQL_SEND.php 上記へ接続し、送信しているつもりでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問