12. M5StackでECHONET Liteブザー

# どんなもの？

このプログラムはM5StackをECHONET Liteブザーにします。
ここでは簡単に使い方を紹介します。

ソースコードはGitHubにおいてあります。
- https://github.com/Hiroshi-Sugimura/M5_EL_Buzzer


# 環境・準備

必要に応じてWiFiルータやコントローラ用のPCなども必要です。

- M5Stack
- WiFiルータ（SSIDとパスワードが分かるもの）
- 開発用**Arduino IDE**の動作するPC
 - M5Stackを開発できるようにしてあること
- コントローラ（テスト時に利用，Windowsが楽，開発用PCと同じでよい）
- ライブラリのセットアップ
 - ECHONET Liteモジュールをインストール（参照：https://qiita.com/Sugimura-Laboratory/items/6dfe1cb9f75a67a80b40）
 - サウンドモジュールをインストール
  - ESP8266Audio: https://github.com/earlephilhower/ESP8266Audio
  - ESP8266_Spiram: https://github.com/Gianbacchio/ESP8266_Spiram


# サンプルの実行手順

簡単ステップで実行できます。

- 下記のURL（Github）からソースをZIPでダウンロードします。
 - https://github.com/Hiroshi-Sugimura/M5_EL_Buzzer

- mp3ファイルをmicroSDに書き込みます。フォルダは作らずにそのままコピーしてください。

- 15，16行目の定義を自分の環境に書き換えます。

```C++:M5_EL_Buzzer.ino
15 | #define WIFI_SSID "testwifi2G"  // !!! change to yor wifi SSID
16 | #define WIFI_PASS "0001223344"  // !!! change to yor wifi password
```

- コンパイルし，M5Stackに書き込みます。

- 下記のような感じでArduinoIDEのシリアルモニタにIPアドレスなどのログが表示されればOK!

<img src="https://qiita-image-store.s3.amazonaws.com/0/120396/d097b772-187e-c37e-bb4e-2a3f9582dc1f.png" width=600 height=450>

ここら辺のEPCだのはECHONET Liteデバイスとして尤もらしく動くようにダミーを設定しているものです。一般用途では気にしないでください。商業用途ではまじめにやりましょう！

- 鳴らしてみる（単体でのサウンドテスト）

8音入ってますので色々テストできます。音が鳴っている最中は操作できません。よって，長い音は向いてないかもしれません。

![単体テスト](https://qiita-image-store.s3.amazonaws.com/0/120396/4fc50c91-f882-21a9-2c5f-329c7997c415.png)


# 鳴らしてみる（ECHONET Liteプロトコル）

ではWiFi経由で音を鳴らしてみます。実験にはWindowsにSSNGをインストールして利用するのが一番楽だと思います。

- SSNG(Win, iPhone, Node.jsなど)
 - http://sh-center.org/sdk


使用したECHONET Liteモジュールはサーチに対応しているので，下記手順で機器を検索できます。

![サーチ](https://qiita-image-store.s3.amazonaws.com/0/120396/2f2c9a5e-0f12-f878-91b4-b01e35a495e3.png)

発見出来たらIPを指定して鳴らします。

![鳴らす](https://qiita-image-store.s3.amazonaws.com/0/120396/fc76c32b-909b-5a70-acd1-d0f9f81702ef.png)


# 対応しているEPCリスト

管理しているプロパティを**echonet lite コンバータ**で表示すると下記の様な感じになります。そこそこまじめに実装したと思います！

echonet lite コンバータ: https://www.npmjs.com/package/echonet-lite-conv


```JSON:echonet-lite-conf出力結果
   { EOJs: [ 'ノードプロファイル01(0ef001)', 'ブザー01(02a001)' ],
     'ノードプロファイル01(0ef001)':
      { EPCs:
         [ '設置場所(81)',
           '自ノードインスタンスリストS(D6)',
           '状変アナウンスプロパティマップ(9D)',
           'Setプロパティマップ(9E)',
           'Getプロパティマップ(9F)' ],
        '設置場所(81)': '未設定(00)',
        '自ノードインスタンスリストS(D6)': 'ブザー01(0102A001)',
        '状変アナウンスプロパティマップ(9D)': '01[80](0180)',
        'Setプロパティマップ(9E)': '01[80](0180)',
        'Getプロパティマップ(9F)': '0e[80, 81, 82, 83, 88, 8a, 9d, 9e, 9f, d3, d4, d5, d6, d7](0E80818283888A9D9E9FD3D4D5D6D7)' },
     'ブザー01(02a001)':
      { EPCs:
         [ '動作状態(80)',
           '設置場所(81)',
           '規格Version情報(82)',
           '識別番号(83)',
           '状変アナウンスプロパティマップ(9D)',
           'Setプロパティマップ(9E)',
           'Getプロパティマップ(9F)' ],
        '動作状態(80)': 'ON(30)',
        '設置場所(81)': '未設定(00)',
        '規格Version情報(82)': 'Ver. K(00004B00)',
        '識別番号(83)': 'referSpec(FE0000000000000000000000000000000000)',
        '状変アナウンスプロパティマップ(9D)': '02[80, d6](0280D6)',
        'Setプロパティマップ(9E)': '01[e0](01E0)',
        'Getプロパティマップ(9F)': '09[80, 81, 82, 83, 88, 8a, 9d, 9e, 9f](0980818283888A9D9E9F)' } },
```



# おわり

鳴りましたか？



# 使用したフリー音源

効果音は下記のフリー音源を利用しています。
- http://taira-komori.jpn.org/freesound.html