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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Arduino

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

Q&A

解決済

1回答

2595閲覧

Arduino+EthernetShieldで作ったアプリにログイン機能を追加したい

kentaro131127

総合スコア19

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Arduino

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

0グッド

0クリップ

投稿2016/01/04 13:44

ArduinoとEthernetShieldの組み合わせで、外出先から赤外線信号を発射してエアコンなどの電源を操作できるようなものを作ったのですが、現状だとアドレスを入力すれば誰でもアクセス可能な状態になっているので、自分だけがリモコン操作をできるようにログイン機能をつけたいと考えているのですが、具体的にどのようにしたら実装できるかが分かりません。方法をご存じの方は教えていただけると嬉しいです。よろしくお願いします。

(一応ソースを貼らせていただきます。)

#include <Ethernet2.h> #include "TextFinder.h" #include <IRremote.h> IRsend irsend; byte mac[] = {, , , , , }; //利用しているイーサネットシールドのMACアドレスを記入 IPAddress ip(,,,); //ローカルIPアドレス //ルーターの80番ポートを利用: EthernetServer server(80); void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { } //ネット接続を試みる Ethernet.begin(mac, ip); server.begin(); Serial.print("server is at "); Serial.println(Ethernet.localIP()); } int khz = 38; //LEDを光らせる周波数 //ライト電源ON unsigned int irSignal_1[] = {3500,1700, 450,400, 450,400, 450,1300, 450,1250, 450,400, 500,1200, 500,400, 450,400, 500,400, 450,1250, 450,450, 450,350, 500,1250, 450,400, 500,1250, 450,400, 450,1300, 450,400, 450,400, 500,1250, 450,400, 450,400, 500,400, 450,400, 450,400, 450,400, 500,1250, 450,1300, 450,400, 450,1250, 450,400, 500,400, 450,1250, 450,400, 500,1250, 450,400, 450,400, 500,1250, 450,400, 500,350, 500}; //AnalysIR Batch Export (IRremote) - RAW //ライト電源OFF unsigned int irSignal_2[] = {3500,1700, 450,450, 450,400, 450,1250, 450,1300, 450,400, 450,1300, 450,400, 450,400, 450,400, 500,1200, 500,400, 450,400, 500,1250, 450,400, 450,1300, 450,400, 450,1300, 450,400, 450,400, 450,1300, 450,400, 450,400, 450,400, 450,450, 450,1250, 450,1250, 500,1250, 450,1300, 450,400, 450,1250, 500,400, 450,400, 450,400, 450,1300, 450,1250, 450,400, 500,400, 450,1250, 450,400, 500,400, 450}; void loop() { EthernetClient client = server.available(); //HTMLのボタンのMethod属性がGETなのでそれを探す if (client) { TextFinder finder(client); if (finder.find("GET")){ while (finder.findUntil("mode", "\n\r")){ int val = finder.getValue(); Serial.println("val="+String(val)); //電源ONの信号を発射 if (val == 1){ irsend.sendRaw(irSignal_1, sizeof(irSignal_1) / sizeof(irSignal_1[0]), khz); delay(50); Serial.println(" ON"); } //電源OFFの信号を発射 else if (val == 2){ irsend.sendRaw(irSignal_2, sizeof(irSignal_2) / sizeof(irSignal_2[0]), khz); delay(50); Serial.println(" ON"); } } } Serial.println("new client"); // an http request ends with a blank line boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); if (c == '\n' && currentLineIsBlank) { // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); // the connection will be closed after completion of the response //client.println("Refresh: 5"); // refresh the page automatically every 5 sec client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<head>"); client.println("<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css'>"); client.println("<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css'>"); client.println("<script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js'></script>"); client.println("</head>"); client.println("<body>"); client.println("<a class='btn btn-primary' href='/?mode=1'>Light ON</a> "); client.println("<a class='btn btn-primary' href='/?mode=2'>Light OFF</a>"); client.println("</body>"); client.println("</html>"); break; } if (c == '\n') { currentLineIsBlank = true; } else if (c != '\r') { currentLineIsBlank = false; } } } delay(1); //接続終了 client.stop(); Serial.println("client disconnected"); } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

Arduino用のWebサーバライブラリであるsirleech/Webduinoを利用することBASIC認証が可能です。
仕様例も有ります。

投稿2016/01/06 00:59

sho_cs

総合スコア3541

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

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

kentaro131127

2016/01/06 05:51

ありがとうございました。 まだ詳しく試せていないですが、このライブラリを使う方向で考えてみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問