---
# System prepended metadata

title: tottori-iot 共有用

---

# tottori-iot 共有用

/boot/setting/config.js
```txt
/*
This is pizero-workshop config.js.
The configuration of single or mulitiple sensing and records are available as array of each setting objects.
Please fill the values of some properties (sensing and records interval time, sensor info, csv file path, machinist acount info, and ambient acount info).
これはpizeroワークショップの設定ファイルです。
１つ以上の環境センサーからデータを集めて、それらをクラウドサービスにアップロードすることが出来ます。（ローカルcsvファイルに保存することも出来ます。）
以下に、それぞれの環境センサーごとに、そのアドレスとcsvファイル保存とクラウドアップロードに関する設定を記述してください。（環境センサー１つの場合はfirst settingの部分だけでよいです）
環境センサーのアドレスを、omron2jcieBu01Addressに記述します。（必須）
データをcsvファイルに出力する場合は、そのファイル名をcsvFilenameに記述します。（任意）
データをMachinistに送信する場合は、machinistApiKeyとmachinistAgentの両方を記述します。（任意）
データをAmbientに送信する場合は、ambientChannelIdとambientWriteKeyの両方を記述します。（任意）
記述は２つのダブルクォーテーション""の間にしてください。
*/

module.exports = [
  //first setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1, //number of temporary stock the sensing data before sending

    webAgent: {
      enable: true, // Enable local server (default: false).
      /** @type {({ temperature, relativeHumidity, barometricPressure, ambientLight, soundNoise, eTVOC, eCO2 }) => boolean} */
      notifyWhen: ({ temperature }) => temperature > 25
    },

   speechAgent: {
  enable: true,
  notifyScript: ({ relativeHumidity }) => {
    const { writeFileSync: write } = require("fs");
    const sleep = require("util").promisify(setTimeout);
    const ledPin = 26; // LEDをRaspberry PiのGPIO26 (BCM)に接続する
    try {
      write("/sys/class/gpio/export", ledPin);
    } catch {}
    try {
      write(`/sys/class/gpio/gpio${ledPin}/direction`, "out");
    } catch {}
    async function blink() {
      try {
        for (let i = 0; i < 10; i++) {
          write(`/sys/class/gpio/gpio${ledPin}/value`, 1);
          await sleep(1000);
          write(`/sys/class/gpio/gpio${ledPin}/value`, 0);
          await sleep(1000);
        }
      } catch {}
    }
    if (relativeHumidity <= 40) {
      blink();
      return `湿度${relativeHumidity}パーセントです。`;
    }
    return "";
  }
},
  //second setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1 //number of temporary stock the sensing data before sending
  },

  //third setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1 //number of temporary stock the sensing data before sending
  }

  //more settings (fourth, fifth, ...) are available in following space with comma and setting objects like above.
];ここに内容を記載
```

/boot/settings/starterStatus.txt
```txt
/*
This is pizero-workshop config.js.

The configuration of single or mulitiple sensing and records are available as array of each setting objects.
Please fill the values of some properties (sensing and records interval time, sensor info, csv file path, machinist acount info, and ambient acount info).

これはpizeroワークショップの設定ファイルです。

１つ以上の環境センサーからデータを集めて、それらをクラウドサービスにアップロードすることが出来ます。（ローカルcsvファイルに保存することも出来ます。）
以下に、それぞれの環境センサーごとに、そのアドレスとcsvファイル保存とクラウドアップロードに関する設定を記述してください。（環境センサー１つの場合はfirst settingの部分だけでよいです）

環境センサーのアドレスを、omron2jcieBu01Addressに記述します。（必須）
データをcsvファイルに出力する場合は、そのファイル名をcsvFilenameに記述します。（任意）
データをMachinistに送信する場合は、machinistApiKeyとmachinistAgentの両方を記述します。（任意）
データをAmbientに送信する場合は、ambientChannelIdとambientWriteKeyの両方を記述します。（任意）
記述は２つのダブルクォーテーション""の間にしてください。

*/

module.exports = [
  //first setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "D6CFA06A4BF7", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "F16.csv", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "3b511692b8e4f2c1", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "b498b56b-3ce2-4a59-a34f-61fa598f7522", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1, //number of temporary stock the sensing data before sending

     webAgent: {
      enable: true, // Enable local server (default: false).
      /** @type {({ temperature, relativeHumidity, barometricPressure, ambientLight, soundNoise, eTVOC, eCO2 }) => boolean} */
      notifyWhen: ({ temperature }) => temperature > 25
    },
  

speechAgent: {
  enable: true,
//  notifyScript: ({ relativeHumidity }) => {
//    const { writeFileSync: write } = require("fs");
//    const sleep = require("util").promisify(setTimeout);
//    const ledPin = 26; // LEDをRaspberry PiのGPIO26 (BCM)に接続する
//    try {
//      write("/sys/class/gpio/export", ledPin);
//    } catch {}
//    try {
//      write(`/sys/class/gpio/gpio${ledPin}/direction`, "out");
//    } catch {}
//   async function blink() {
//     try {
//        for (let i = 0; i < 10; i++) {
//          write(`/sys/class/gpio/gpio${ledPin}/value`, 1);
//          await sleep(1000);
//          write(`/sys/class/gpio/gpio${ledPin}/value`, 0);
//          await sleep(1000);
//        }
//      } catch {}
//    }
//    if (relativeHumidity <= 40) {
//      blink();
//     return `湿度${relativeHumidity}パーセントです。`;
//    }
 //   return "";
 //  }
},






  //second setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1 //number of temporary stock the sensing data before sending
  },

  //third setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1 //number of temporary stock the sensing data before sending
  }

  //more settings (fourth, fifth, ...) are available in following space with comma and setting objects like above.
];
Converting '/boot/setting/config.js' to UTF-8 LF ... 
ok
syntax ... /tmp/tmp.nBa30wGaFx:85
  {
  ^

SyntaxError: Unexpected token {
    at checkScriptSyntax (bootstrap_node.js:504:5)
    at startup (bootstrap_node.js:195:11)
    at bootstrap_node.js:625:3
Started at 2020年  1月 30日 木曜日 13:23:35 JST
Using Following config file:/boot/setting/config.js ... 
/*
This is pizero-workshop config.js.
The configuration of single or mulitiple sensing and records are available as array of each setting objects.
Please fill the values of some properties (sensing and records interval time, sensor info, csv file path, machinist acount info, and ambient acount info).
これはpizeroワークショップの設定ファイルです。
１つ以上の環境センサーからデータを集めて、それらをクラウドサービスにアップロードすることが出来ます。（ローカルcsvファイルに保存することも出来ます。）
以下に、それぞれの環境センサーごとに、そのアドレスとcsvファイル保存とクラウドアップロードに関する設定を記述してください。（環境センサー１つの場合はfirst settingの部分だけでよいです）
環境センサーのアドレスを、omron2jcieBu01Addressに記述します。（必須）
データをcsvファイルに出力する場合は、そのファイル名をcsvFilenameに記述します。（任意）
データをMachinistに送信する場合は、machinistApiKeyとmachinistAgentの両方を記述します。（任意）
データをAmbientに送信する場合は、ambientChannelIdとambientWriteKeyの両方を記述します。（任意）
記述は２つのダブルクォーテーション""の間にしてください。
*/

module.exports = [
  //first setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1, //number of temporary stock the sensing data before sending

    webAgent: {
      enable: true, // Enable local server (default: false).
      /** @type {({ temperature, relativeHumidity, barometricPressure, ambientLight, soundNoise, eTVOC, eCO2 }) => boolean} */
      notifyWhen: ({ temperature }) => temperature > 25
    },

    speechAgent: {
      enable: true,
      notifyScript: ({ relativeHumidity }) => {
        const { writeFileSync: write } = require("fs");
        const sleep = require("util").promisify(setTimeout);
        const ledPin = 26; // LEDをRaspberry PiのGPIO26 (BCM)に接続する
        try {
          write("/sys/class/gpio/export", ledPin);
        } catch {}
        try {
          write(`/sys/class/gpio/gpio${ledPin}/direction`, "out");
        } catch {}
        async function blink() {
          try {
            for (let i = 0; i < 10; i++) {
              write(`/sys/class/gpio/gpio${ledPin}/value`, 1);
              await sleep(1000);
              write(`/sys/class/gpio/gpio${ledPin}/value`, 0);
              await sleep(1000);
            }
          } catch {}
        }
        if (relativeHumidity <= 40) {
          blink();
          return `湿度${relativeHumidity}パーセントです。`;
        }
        return "";
      }
    }
  },
  //second setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1 //number of temporary stock the sensing data before sending
  },

  //third setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1 //number of temporary stock the sensing data before sending
  }

  //more settings (fourth, fifth, ...) are available in following space with comma and setting objects like above.
];Converting '/boot/setting/config.js' to UTF-8 LF ... 
ok
syntax ... /tmp/tmp.nRTBL8HWKg:51
        } catch {}
                ^

SyntaxError: Unexpected token {
    at checkScriptSyntax (bootstrap_node.js:504:5)
    at startup (bootstrap_node.js:195:11)
    at bootstrap_node.js:625:3
Started at 2020年  1月 30日 木曜日 15:28:07 JST
Using Following config file:/boot/setting/config.js ... 
/*
This is pizero-workshop config.js.
The configuration of single or mulitiple sensing and records are available as array of each setting objects.
Please fill the values of some properties (sensing and records interval time, sensor info, csv file path, machinist acount info, and ambient acount info).
これはpizeroワークショップの設定ファイルです。
１つ以上の環境センサーからデータを集めて、それらをクラウドサービスにアップロードすることが出来ます。（ローカルcsvファイルに保存することも出来ます。）
以下に、それぞれの環境センサーごとに、そのアドレスとcsvファイル保存とクラウドアップロードに関する設定を記述してください。（環境センサー１つの場合はfirst settingの部分だけでよいです）
環境センサーのアドレスを、omron2jcieBu01Addressに記述します。（必須）
データをcsvファイルに出力する場合は、そのファイル名をcsvFilenameに記述します。（任意）
データをMachinistに送信する場合は、machinistApiKeyとmachinistAgentの両方を記述します。（任意）
データをAmbientに送信する場合は、ambientChannelIdとambientWriteKeyの両方を記述します。（任意）
記述は２つのダブルクォーテーション""の間にしてください。
*/

module.exports = [
  //first setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1, //number of temporary stock the sensing data before sending

    webAgent: {
      enable: true, // Enable local server (default: false).
      /** @type {({ temperature, relativeHumidity, barometricPressure, ambientLight, soundNoise, eTVOC, eCO2 }) => boolean} */
      notifyWhen: ({ temperature }) => temperature > 25
    },

   speechAgent: {
  enable: true,
  notifyScript: ({ relativeHumidity }) => {
    const { writeFileSync: write } = require("fs");
    const sleep = require("util").promisify(setTimeout);
    const ledPin = 26; // LEDをRaspberry PiのGPIO26 (BCM)に接続する
    try {
      write("/sys/class/gpio/export", ledPin);
    } catch {}
    try {
      write(`/sys/class/gpio/gpio${ledPin}/direction`, "out");
    } catch {}
    async function blink() {
      try {
        for (let i = 0; i < 10; i++) {
          write(`/sys/class/gpio/gpio${ledPin}/value`, 1);
          await sleep(1000);
          write(`/sys/class/gpio/gpio${ledPin}/value`, 0);
          await sleep(1000);
        }
      } catch {}
    }
    if (relativeHumidity <= 40) {
      blink();
      return `湿度${relativeHumidity}パーセントです。`;
    }
    return "";
  }
},
  //second setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1 //number of temporary stock the sensing data before sending
  },

  //third setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1 //number of temporary stock the sensing data before sending
  }

  //more settings (fourth, fifth, ...) are available in following space with comma and setting objects like above.
];Converting '/boot/setting/config.js' to UTF-8 LF ... 
ok
syntax ... /tmp/tmp.do0KURRgn6:51
    } catch {}
            ^

SyntaxError: Unexpected token {
    at checkScriptSyntax (bootstrap_node.js:504:5)
    at startup (bootstrap_node.js:195:11)
    at bootstrap_node.js:625:3
Started at 2020年  1月 30日 木曜日 15:34:03 JST
Using Following config file:/boot/setting/config.js ... 
/*
This is pizero-workshop config.js.
The configuration of single or mulitiple sensing and records are available as array of each setting objects.
Please fill the values of some properties (sensing and records interval time, sensor info, csv file path, machinist acount info, and ambient acount info).
これはpizeroワークショップの設定ファイルです。
１つ以上の環境センサーからデータを集めて、それらをクラウドサービスにアップロードすることが出来ます。（ローカルcsvファイルに保存することも出来ます。）
以下に、それぞれの環境センサーごとに、そのアドレスとcsvファイル保存とクラウドアップロードに関する設定を記述してください。（環境センサー１つの場合はfirst settingの部分だけでよいです）
環境センサーのアドレスを、omron2jcieBu01Addressに記述します。（必須）
データをcsvファイルに出力する場合は、そのファイル名をcsvFilenameに記述します。（任意）
データをMachinistに送信する場合は、machinistApiKeyとmachinistAgentの両方を記述します。（任意）
データをAmbientに送信する場合は、ambientChannelIdとambientWriteKeyの両方を記述します。（任意）
記述は２つのダブルクォーテーション""の間にしてください。
*/

module.exports = [
  //first setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1, //number of temporary stock the sensing data before sending

    webAgent: {
      enable: true, // Enable local server (default: false).
      /** @type {({ temperature, relativeHumidity, barometricPressure, ambientLight, soundNoise, eTVOC, eCO2 }) => boolean} */
      notifyWhen: ({ temperature }) => temperature > 25
    },

   speechAgent: {
  enable: true,
  notifyScript: ({ relativeHumidity }) => {
    const { writeFileSync: write } = require("fs");
    const sleep = require("util").promisify(setTimeout);
    const ledPin = 26; // LEDをRaspberry PiのGPIO26 (BCM)に接続する
    try {
      write("/sys/class/gpio/export", ledPin);
    } catch {}
    try {
      write(`/sys/class/gpio/gpio${ledPin}/direction`, "out");
    } catch {}
    async function blink() {
      try {
        for (let i = 0; i < 10; i++) {
          write(`/sys/class/gpio/gpio${ledPin}/value`, 1);
          await sleep(1000);
          write(`/sys/class/gpio/gpio${ledPin}/value`, 0);
          await sleep(1000);
        }
      } catch {}
    }
    if (relativeHumidity <= 40) {
      blink();
      return `湿度${relativeHumidity}パーセントです。`;
    }
    return "";
  }
},
  //second setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1 //number of temporary stock the sensing data before sending
  },

  //third setting
  {
    intervalMillisec: 60000, //sensing and record interval (milli second)

    //have to filled belows to sensing
    omron2jcieBu01Name: "Rbt", //maybe fix "Rbt"
    omron2jcieBu01Address: "", //12 charactors of number or aphabet (like "A1B2C3D4E5F6")

    //if filled below, saving csv file
    csvFilename: "", //csv file name for saving sensing data. if value is "", not saving.

    //if filled belows, uploading to Machinist
    machinistApiKey: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistAgent: "", //from Machinist acount. if value is "", uploading to Machinst is disable.
    machinistBatchQuantity: 1, //number of temporary stock the sensing data before sending

    //if filled belows, uploading to Ambient
    ambientChannelId: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientWriteKey: "", //from Ambient acount. if value is "", uploading to Ambient is disable.
    ambientBatchQuantity: 1 //number of temporary stock the sensing data before sending
  }

  //more settings (fourth, fifth, ...) are available in following space with comma and setting objects like above.
];Converting '/boot/setting/config.js' to UTF-8 LF ... 
ok
syntax ... /tmp/tmp.0IfwQ5E5Em:51
    } catch {}
            ^

SyntaxError: Unexpected token {
    at checkScriptSyntax (bootstrap_node.js:504:5)
    at startup (bootstrap_node.js:195:11)
    at bootstrap_node.js:625:3
ここに内容を記載
```

/boot/setting/log/error.txt
```txt
2019-11-26 10:07:57 : First times : 
Error: Machinist http request is not responsed, timeouted
    at ClientRequest.req.on (/home/pi/pizero-workshop/lib/machinist.js:74:11)
    at emitNone (events.js:106:13)
    at ClientRequest.emit (events.js:208:7)
    at TLSSocket.emitTimeout (_http_client.js:721:34)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:106:13)
    at TLSSocket.emit (events.js:208:7)
    at TLSSocket.Socket._onTimeout (net.js:422:8)
    at ontimeout (timers.js:498:11)
    at tryOnTimeout (timers.js:323:5)
2019-11-28 09:13:07 : 2 times : Error: Machinist http request is not responsed, timeouted
2019-11-30 08:20:18 : 3 times : Error: Machinist http request is not responsed, timeouted
2019-12-02 07:26:27 : 4 times : Error: Machinist http request is not responsed, timeouted
2019-12-04 06:31:38 : 5 times : Error: Machinist http request is not responsed, timeouted
2019-12-06 05:36:49 : 6 times : Error: Machinist http request is not responsed, timeouted
2019-12-06 05:37:48 : 7 times : Error: Machinist http request is not responsed, timeouted
2019-12-07 12:59:56 : First times : 
Error: Machinist http request error:getaddrinfo EAI_AGAIN gw.machinist.iij.jp:443
    at ClientRequest.req.on (/home/pi/pizero-workshop/lib/machinist.js:77:11)
    at emitOne (events.js:116:13)
    at ClientRequest.emit (events.js:211:7)
    at TLSSocket.socketErrorListener (_http_client.js:401:9)
    at emitOne (events.js:116:13)
    at TLSSocket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:66:8)
    at _combinedTickCallback (internal/process/next_tick.js:139:11)
    at process._tickCallback (internal/process/next_tick.js:181:9)
2019-12-07 13:00:56 : 8 times : Error: Machinist http request is not responsed, timeouted
                                                                                          2019-12-09 10:21:46 : First times : 
Error: Machinist http request is not responsed, timeouted
    at ClientRequest.req.on (/home/pi/pizero-workshop/lib/machinist.js:74:11)
    at emitNone (events.js:106:13)
    at ClientRequest.emit (events.js:208:7)
    at TLSSocket.emitTimeout (_http_client.js:721:34)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:106:13)
    at TLSSocket.emit (events.js:208:7)
    at TLSSocket.Socket._onTimeout (net.js:422:8)
    at ontimeout (timers.js:498:11)
    at tryOnTimeout (timers.js:323:5)
2019-12-09 10:22:45 : 2 times : Error: Machinist http request is not responsed, timeouted
2020-01-08 13:26:18 : First times : 
Error: Machinist http request is not responsed, timeouted
    at ClientRequest.req.on (/home/pi/pizero-workshop/lib/machinist.js:74:11)
    at emitNone (events.js:106:13)
    at ClientRequest.emit (events.js:208:7)
    at TLSSocket.emitTimeout (_http_client.js:721:34)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:106:13)
    at TLSSocket.emit (events.js:208:7)
    at TLSSocket.Socket._onTimeout (net.js:422:8)
    at ontimeout (timers.js:498:11)
    at tryOnTimeout (timers.js:323:5)
2020-01-08 13:34:19 : 2 times : Error: Machinist http request is not responsed, timeouted
ここに内容を記載
```