    初期処理
  */
 void setup() {
+  Serial.begin(9600);
+#ifdef SOFT_WDT
+  wdt_enable(WDTO_8S);
+#endif /* SOFT_WDT */
+#ifdef DEBUG
+  Serial.println("start");
+#endif
+#ifdef DEBUG
+  Serial.println("relay pin setup");
+#endif
   // Raspberry Piと接続するケーブルのデジタルI/Oのピンの動作定義
   pinMode(RELAY_PIN,     OUTPUT);
   relayControl(true);
+#ifdef DEBUG
+  Serial.println("done");
+#endif
   //digitalWrite(RELAY_PIN,LOW);
+#ifdef DEBUG
+  Serial.println("shutdown pin setup");
+#endif
   pinMode(SHUTDOWN_PIN,  OUTPUT);
   digitalWrite(SHUTDOWN_PIN,LOW);
+#ifdef DEBUG
+  Serial.println("done");
+#endif
+#ifdef DEBUG
+  Serial.println("keep alive pin setup");
+#endif
   pinMode(KEEP_ALIVE_PIN, INPUT);
+  //digitalWrite(KEEP_ALIVE_PIN,LOW);
+#ifdef DEBUG
+  Serial.println("done");
+#endif
+  //pinMode(HIGH_TEMP_PIN,  OUTPUT);
+  //digitalWrite(HIGH_TEMP_PIN,LOW);
   pinMode(HIGH_TEMP_PIN,  INPUT);
+#ifdef DEBUG
+  Serial.println("high temperature pin setup");
+#endif
+#ifdef DEBUG
+  Serial.println("done");
+#endif
+#ifdef DEBUG
+  Serial.println("power button pin setup");
+#endif
   pinMode(POWER_PIN,      INPUT);
-  Serial.begin(9600);
-#ifdef SOFT_SERIAL
+  //digitalWrite(POWER_PIN,LOW);
+#ifdef DEBUG
+  Serial.println("done");
+#endif
+
+#if defined(SOFT_SERIAL) || defined(SERIAL1) || defined(SERIAL2) || defined(SERIAL3)
   CONSOLE.begin(9600);
-#endif /* SOFT_SERIAL */
+#endif /* SOFT_SERIAL || SERIAL1 || SERIAL2 || SERIAL3 */
+#ifdef BRIDGE
+  Bridge.begin();
+  Console.begin();
+#endif /* BRIDGE */
 #ifdef LCD
   lcd.begin(16, 2);
 #endif /* LCD */

#endif /* DEBUG */



/*
 * 割り込み処理の定義
 */
void keepAliveINT(){          // keep alive信号の割り込み処理
  //keepAlive=now();            // keep alive信号が上がった時間の格納
  keepAliveFlag=true;
}


  Serial.println(event.powerPinCounter);
#endif /* DEBUG_POWER_PIN */
  // Raspberry Piのkeep alive信号が一定時間以内に観測できたか否かの判定
#ifdef NO_INTERRUPT
  if (HIGH==digitalRead(KEEP_ALIVE_PIN)) {
    keepAlive=now();            // keep alive信号が上がった時間の格納
  }
#else /* NO_INTERRUPT */
  if (keepAliveFlag==true) {
    keepAlive=now();            // keep alive信号が上がった時間の格納
    keepAliveFlag=false;
  }
#endif /* NO_INTERRUPT */
  if ((keepAlive+KEEP_ALIVE_THRESHOLD) < now()) { // 前回の観測時間に制限時間を加えたものが現在時刻より未来になっていない場合は，タイムアウト (エラー発生)
    event.keepAlive=true;
  } else {                                        // タイムアウトになっていない(制限時間内)の場合
    event.keepAlive=false;
  }
#ifdef NO_INTERRUPT
  if (HIGH==digitalRead(HIGH_TEMP_PIN)) {
    event.highTemperature=true;
  }
#else /* NO_INTERRUPT */
  event.highTemperature=highTemperatureEvent;     // 割り込みで立てられたフラグの値を書き写す
  highTemperatureEvent=false;                     // 割り込みで立てられたフラグの値を消す
#endif /* NO_INTERRUPT */

#ifdef DHT_WAIT
  delay(dht.getMinimumSamplingPeriod());
