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

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

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

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

Q&A

解決済

1回答

4146閲覧

HttpClient_ESP8266_AT.hのpost通信について

mizugasira

総合スコア29

Arduino

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

0グッド

0クリップ

投稿2017/01/16 03:12

現在、arduinoの開発をしていて、Wifiで値をwebサーバにおくり、それをphpで受け取って表示させようとしています。
Wifiの接続・サーバへの接続もできているのですが、phpファイルのpostにうまく値が入っていません。
自分の意見としましては、postの引数の部分が間違っていると思っているのですが、どうもうまくいきません。
下にコードを貼り付けております。

/* wifi接続・webサーバに値を送信 */

#include <HttpClient_ESP8266_AT.h> // Arduino UNO の場合は、例えばデジタル入出力の 2 番, 3 番ピンを利用して // ESP-WROOM-02 とシリアル通信するように設定します。 const byte rxPin = 2; // Wire this to Tx Pin of ESP8266 const byte txPin = 4; // Wire this to Rx Pin of ESP8266 HttpClient_ESP8266_AT httpClient(rxPin, txPin); char params[64]; void setup() { // PC と通信する HardwareSerial の baudrate を設定します。 // ESP-WROOM-02 の baudrate とは関係ありません。 Serial.begin(115200); // SSID と PASSWORD でアクセスポイントに接続します。 // シリアル接続確認と WiFi 接続確認を行い、設定不備があれば出力します。 while(true) { if(httpClient.statusAT()) { Serial.println("AT status OK"); break; } else Serial.println("AT status NOT OK"); delay(1000); } while(true) { // 書き換えてください↓ if(httpClient.connectAP("SSID", "PASSWORD")) { Serial.println("Successfully connected to an AP"); break; } else Serial.println("Failed to connected to an AP. retrying..."); delay(1000); } while(true) { if(httpClient.statusWiFi()) { Serial.println("WiFi status OK"); break; } else Serial.println("WiFi status NOT OK"); delay(1000); } } void loop() { // ノイズの影響でリクエストに失敗することがあるため while ループで囲います。 while(true) { // HTTP POST リクエストを実行します。 httpClient.post("host名", // ex: www.◯◯.com "ファイルまでのパス", // ex: /Arduinos/test/output.php "temp=123", // 値の送信 <- たぶんここが間違っていると思います。 "application/x-www-form-urlencoded" //エンコードの指定 ); // レスポンス status code が 0 以上であればリクエスト成功です。 // -1: ノイズ等でシリアル通信ができず、そもそもデータ送信ができなかった。 // 0: データ送信はできたが、受信データがノイズで壊れてしまっていた。 // else (>0): 受信データから正常に HTTP レスポンス status code が得られた。 if(httpClient.responseStatusCode() >= 0) { // 本ページでは電圧レベルコンバータを用意していない想定のため、 // 受信データが壊れている可能性が高く、したがって 200 が 100 になっていたりするため、 // 値には興味をもたず、0 以上の値が得られることが重要であると考えてコーディングします。 Serial.println("SUCCESS"); break; // 成功したので while を抜けます。 } else { Serial.println("FAILURE, retrying..."); } } // 本サンプルでは 60 秒毎に POST を繰り返します。 delay(60000); }

/* webサーバ側: 表示するのみ */

php

1<?php 2 echo $_POST['temp']; 3?>

// 実行環境
・Mac OS X Yosemite 10.10.4

// 実行アプリケーション
・Arduino

// Arduino機器
arduino uno R3
arduino wifi シールド (ESP-WROOM-02 Shield)

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

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

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

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

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

guest

回答1

0

自己解決

post関数の第二引数の書き間違いでした。
そこを直せば正常に動きました。

お騒がせしてすいません。

投稿2017/01/17 03:11

mizugasira

総合スコア29

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問