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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

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

Arduino

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

HTML

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

Q&A

解決済

3回答

4557閲覧

サーバーにあるtxtファイルに直接書き込む手法

bobby2128

総合スコア42

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

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

Arduino

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

HTML

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

0グッド

0クリップ

投稿2017/04/06 01:44

編集2017/04/06 07:57

ArduinoとESP-WROOM-02でサーバーに繋いでいるのですが、
ArduinoとESP-WROOM-02によって、サーバーにあるテキストファイルを開き、データを書き込むことは可能でしょうか。

何か参考になるアイデアや資料などございましたらご教授お願いいたします。

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のうちファイル書き込み用命令文

php

1 2$Temp = $_POST["temperature"]; 3$Write = "<p>Temperature :" . $_POST["temperature"] . "</p><br>"; 4 5$fp = @fopen("write.txt", "w") ; 6fputs($fp, $Write); 7fclose($fp); 8

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

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

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

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

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

guest

回答3

0

ArduinoとESP-WROOM-02でサーバーに繋いでいるのですが、

どのようにconnectしているかわかりませんが
WEBサーバならGet/Postを受け付けるサービスを立ち上げてその中でファイルの追記をすれば良いはずです。

------------- 追記
TCP通信を丸ごと抜き出すだけなら
node.js(v6)環境でapp.jsを作成
app.jsの内容は下記の通り

javascript

1const net = require('net'); 2const client = net.connect({port: 80}, () => { 3 // 'connect' listener 4 console.log('connected to server!'); 5}); 6client.on('data', (data) => { 7 console.log(data.toString()); 8}); 9client.on('end', () => { 10 console.log('disconnected from server'); 11});

bash

1node app.js

で実行すれば飛んできているデータはコンソール画面上に表示されると思います。
データの書き込みはdataイベント中に受信したデータを退避しておき、endが来たときに退避したデータをfsパッケージを使って書き込めばokです。たぶん。未検証です。

投稿2017/04/06 03:22

編集2017/04/06 07:08
mosapride

総合スコア1480

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

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

bobby2128

2017/04/06 03:39

tenpa様 コメントいただきありがとうございます。 現状のプログラムを質問文を編集し追記いたしました。 サーバーはWindows Azureを用いており、 https://p*******.scm.azurewebsites.net/dev/wwwroot/public_data/p******/t****/t****.txt に送信した文字列(上記のプログラムだとdata)を書き込みたいです。 以上、おわかりでしたらお手数おかけいたしますが、どうかよろしくお願いいたします。
mosapride

2017/04/06 07:08

未検証ですが追記しました。
bobby2128

2017/04/06 07:35

tenpa様 コメントいただきありがとうございます。 大変恐縮ではございますが、少しわからないのでお助けください。 SQL_SEND.phpのあるディレクトリの中で app.jsというファイルを作成し、それに上記のJavaScriptを書き込めば良いということでしょうか。 そのとき、Bashというものはどこに書き込めばよろしいでしょうか。 以上、お手数おかけいたしますがどうかよろしくお願いいたします。
guest

0

書き込む権限があり、書き込むスキルがあればできると思います

投稿2017/04/06 02:08

yambejp

総合スコア114583

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

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

0

ベストアンサー

.phpに渡すべきデータ内容および.php側で行うべき処理が分からないということでしょうか?
PHPは分かりませんが、基本は以下の処理を行えばよいと思います。

Arduino

C

1// 略 2data = "temperature=" + temp; 3 4// ファイルパスを渡す 5data += "&"; 6data += "path=" + "p******/t****/t****.txt" 7// 略

SQL_SEND.php

PHP

1// (temparatureとpathを受け取る) 2 3// pathをサーバー上のパスに変換する(単なる文字列操作) 4 5// サーバー上のテキストファイルを開く 6 7// temparatureの文字列を書き込む(追記する) 8 9// テキストファイルを閉じる

投稿2017/04/06 04:34

can110

総合スコア38234

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

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

bobby2128

2017/04/06 05:10

can110様 ご回答いただきありがとうございます。 パスが既知として、 php側にて $Temp = $_POST["temperature"]; $Write = "<p>Temperature : " . $_POST["temperature"] . </p><br>"; $fp = @fopen(“write.txt”, “w”) ; fputs($fp, $Write); fclose($fp); このように書き込み同じディレクトリ内のwrite.txtファイルをみても何もデータが無い状態でした。 従って前に投稿させていただきました質問のように、送ったテキストデータが ブランクになる問題を解決しないといけないようです。。。
can110

2017/04/06 07:39

たとえデータがない状態だとしてもwrite.txtが作成されたということは提示された.phpの処理は動作したと考えてよいかと思います。PHPは分からないのでなぜデータ(文字列)が書き込まれないのかは分かりません。質問に提示されたコードを追記し、他の方の回答をまってはいかがでしょうか?
can110

2017/04/06 07:45

パッと見「$Write = "<p>Temperature : " . $_POST["temperature"] . </p><br>";」の 「</p><br>"」は「"</p><br>"」ではないかと思いますが。(「"」の対応が合っていない)
bobby2128

2017/04/06 07:58

can110様 早々のコメントをいただきありがとうございます。 ご指摘の通りphpを質問文に追記させていただきました。 ありがとうございます。 また、write.txtファイルは自動ではなく自身で作成いたしました。
can110

2017/04/06 08:08

とりあえず手法については解決したかと思います。 あとは.php側の処理のデバッグが必要です。
bobby2128

2017/04/06 08:19

write.txtファイルを削除し更新したところ、 自動でwrite.txtファイルが作成され、中身に <p>Temperature :</p><br> と記載されていました。肝心の値が表示されません。 以上、現状報告でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問