         if(waiting > 300) sleep();          // 300回(30秒)を過ぎたらスリープ
     }
     Serial.println(WiFi.localIP());         // 本機のIPアドレスをシリアル出力
+    if(pir==HIGH) sleep();                  // センサが無反応だった場合は終了
 }
 
 void loop(){
     WiFiUDP udp;                            // UDP通信用のインスタンスを定義
-    int i,in;
     
-    for(i=0;i<30;i++){                      // 繰り返し処理
-        in = digitalRead(PIN_SW);           // 現在の状態を取得
-        if(prev != in) break;               // 前回と異なれば繰り返しを終了
-        delay(100);                         // 待ち時間処理
-    }
-    if(i >= 30){                            // 3秒間、変化が無かった時
-        udp.beginPacket(SENDTO, PORT);      // UDP送信先を設定
-        udp.print(DEVICE);                  // デバイス名を送信
-        udp.println(pir);                   // 起動直後のスイッチ状態を送信
-        Serial.println(pir);                // 起動直後のスイッチ状態を出力表示
-        udp.endPacket();                    // UDP送信の終了(実際に送信する)
-        sleep();                            // sleepを実行
-    }
-    pir++;                                  // 人感センサの反応回数をカウント
-    prev=in;                                // 現在の状態を変数pirに保存
+    udp.beginPacket(SENDTO, PORT);      	// UDP送信先を設定
+    udp.print(DEVICE);                  	// デバイス名を送信
+    udp.print(!pir);               			// 起動直後のセンサ状態を送信
+    udp.print(", ");                        // 「,」カンマと「␣」を送信
+    pir=digitalRead(PIN_SW);                // 人感センサの状態を取得
+    udp.println(!pir);                      // 現在のセンサの状態を送信
+    Serial.println(!pir);                   // シリアル出力表示
+    udp.endPacket();                    	// UDP送信の終了(実際に送信する)
+    delay(200);                             // 送信待ち時間
+    sleep();                            	// sleepを実行
 }
 
 void sleep(){
-    delay(200);                             // 送信待ち時間
     ESP.deepSleep(SLEEP_P,WAKE_RF_DEFAULT); // スリープモードへ移行する
     while(1){                               // 繰り返し処理
         delay(100);                         // 100msの待ち時間処理

#define SLEEP_P 3550*1000000                // スリープ時間 3550秒(約60分)
#define DEVICE "pir_s_1,"                   // デバイス名(5文字+"_"+番号+",")

int pir=0;                                  // 人感センサの反応回数
int prev=0;                                 // 人感センサの前回の状態値

void setup(){                               // 起動時に一度だけ実行する関数
    int waiting=0;                          // アクセスポイント接続待ち用
    pinMode(PIN_SW,INPUT_PULLUP);           // スイッチを接続したポートを入力に
    pinMode(PIN_LED,OUTPUT);                // LEDを接続したポートを出力に
    prev=digitalRead(PIN_SW);               // スイッチの状態を取得
    Serial.begin(9600);                     // 動作確認のためのシリアル出力開始
    Serial.println("Example 11 PIR SW");    // 「Example 11」をシリアル出力表示
    WiFi.mode(WIFI_STA);                    // 無線LANをSTAモードに設定

#include "user_interface.h"                 // ESP8266用の拡張IFライブラリ
}
#include <WiFiUdp.h>                        // UDP通信を行うライブラリ
#define PIN_SW 4                            // IO 4(10番ピン) にセンサを接続
#define PIN_LED 13                          // IO 13(5番ピン)にLEDを接続する
#define SSID "1234ABCD"                     // 無線LANアクセスポイントのSSID
#define PASS "password"                     // パスワード
