---
title: "Wi-Sun Ethernet Gateway"
url: "https://maker.wiznet.io/bruno/projects/WiSun-Ethernet-Gateway/"
markdown_url: "https://maker.wiznet.io/bruno/projects/WiSun-Ethernet-Gateway/md"
type: "UCC: User Created Content"
author: "bruno"
author_url: "https://maker.wiznet.io/bruno/"
original_author: "bruno"
original_url: "https://qiita.com/katsumin/items/f3d460d5f23e2e05ea57"
published: "2022-02-08"
language: "en"
likes: 0
views: 179
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Wi-Sun Ethernet Gateway

> Wi-Sun Ethernet Gateway

Original author: bruno (source: https://qiita.com/katsumin/items/f3d460d5f23e2e05ea57)

## Article

自宅?況の見える化（M5Stack版）

by katsumin

1?/?7

## はじめに

- 2年ほど前に、[自宅?況の見える化](https://qiita.com/katsumin/items/b11da555daa506800933)という記事を投稿しています。

- ?該記事はRaspberryPi（?際は[NanoPi](http://nanopi.io/nanopi-neo2.html)を使用）ベ?スだったのですが、今年の１０連休を利用（完成はしなかったんですが）してM5Stackベ?スで作り直したので、そのご紹介記事となります。

## ?置の外?

[![view.jpg](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F166435%2F8a4b21b1-3fce-7ff5-938c-27b8516435b5.jpeg?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=0dde465bf9e67a032a2fb2783ad69bbf)](https://camo.qiitausercontent.com/56230b3fce1c8e2a40919250fbc32d1edeb995b7/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3136363433352f38613462323162312d336663652d376666352d393338632d3237623835313634333562352e6a706567)

- 表示?容
  - IPアドレス（左上）
  - 現在日時（右上）
  - 上から順に
    - BME280センサ?から取得した室?、?度、??
    - スマ?トメ?タ?から取得した瞬時電力、積算電力量（正方向、負方向）
    - エコキュ?トから取得した消費電力、タンク?量
    - ダイキンエアコンから取得した消費電力、室?、外??

## M5Stack化のメリット?デメリット

- メリット
  - QVGAディスプレイによる視認が可能。
    - NanoPiには表示機能がない。
  - 電源ON/OFFのストレスがない。
    - NanoPiの場合、電源OFFの前にssh接?＆シャットダウンを行う必要がある。

- デメリット
  - Pythonに比べて、お手?さがない。（MicroPythonというものがあるようですが、試したことがありません。）
  - Linuxによるマルチプロセスを期待できないので、一つのプログラム?で作り?む必要がある。
  - Linuxコマンドが使えない。（curlコマンドなど）

## プログラムソ?ス、回路?など

- GitHub([HomeM5](https://github.com/katsumin/HomeM5))で公開しています。

## 機能?明

1. スマ?トメ?タ?通信
  - ?態遷移 　　　　[![alt](https://qiita-user-contents.imgix.net/http%3A%2F%2Fwww.plantuml.com%2Fplantuml%2Fpng%2FTPB1IW917CRlynJB7WDVe4DuwL2GGdIB3k8kiP4ZkEjTTr2tahGEIXQLbDOX0n74RD67-JkpUl8LsjbfcytiiWpCx_j_t__RYPjMAcVbCwV8FrYwebAdmXezxtp8IXUgaZ8LpJ3JMOprjALh8GJs1zWz84z01hDHB-3CT0fZ0n-73BliUCCMhNIzUZbalWVzeI9s9ra32oEP1km1a7iW_lTiKIZEfkq0jVHSni0-Xz3Xnf4IoyMsVgLLDXLrSVl9nlLaGaNH6y66YJctczn90Ba3U-hRgEZdAhR2ySrv51U80wJD3rpYCbAYZtrQQz19CohNVBtSca-8alIzEXkNLII9m51qm65HZy0MXPRtq07x6SXDq8L3QqtU1U9yk9JKpbyTDde3KX4XbsxjVostbNrojMX-tYsolhrE9-7LYfRkbVToJITLEJo_viySRE_lHHgFwrZpd-4N?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=b9e06d86187d089c8920c83f4c2d4c6a)](http://www.plantuml.com/plantuml/png/TPB1IW917CRlynJB7WDVe4DuwL2GGdIB3k8kiP4ZkEjTTr2tahGEIXQLbDOX0n74RD67-JkpUl8LsjbfcytiiWpCx_j_t__RYPjMAcVbCwV8FrYwebAdmXezxtp8IXUgaZ8LpJ3JMOprjALh8GJs1zWz84z01hDHB-3CT0fZ0n-73BliUCCMhNIzUZbalWVzeI9s9ra32oEP1km1a7iW_lTiKIZEfkq0jVHSni0-Xz3Xnf4IoyMsVgLLDXLrSVl9nlLaGaNH6y66YJctczn90Ba3U-hRgEZdAhR2ySrv51U80wJD3rpYCbAYZtrQQz19CohNVBtSca-8alIzEXkNLII9m51qm65HZy0MXPRtq07x6SXDq8L3QqtU1U9yk9JKpbyTDde3KX4XbsxjVostbNrojMX-tYsolhrE9-7LYfRkbVToJITLEJo_viySRE_lHHgFwrZpd-4N)
  - 接??態の動作
    - 約~~１０ms~~1msごとにスマ?トメ?タ?からの受信がないかポ?リングする。
      - EVENT２５受信の取りこぼしは、インタ?バルが長過ぎた（10msで100byteを超えるデ?タが受信バッファに溜まってしまう）ためと思われ、修正。（2019/6/23）
      - さらに、HardSerialの受信バッファサイズ（デフォルト256byte）を2048byteに?張。（2019/6/23）
   ```
Serial2.setRxBufferSize(2048);
```
    - 受信電文により、?理を振り分ける。
      - デ?タ受信（取得コマンド?答の瞬時電力値、３０分?にスマ?トメ?タ?から送られてくる積算電力量値）
      - イベント受信（EVENTxxは、[無線モジュ?ル](https://www.rohm.co.jp/products/wireless-communication/specified-low-power-radio-modules/bp35c0-product)から送られてくる電文）
        - EVENT25…接?完了通知
          - 取得コマンド送信可能?態になる。
        - EVENT26…切?要求通知
          - 切?コマンド（TERM）送信後、接??理を開始。
        - EVENT27…切?成功通知
          - 切?コマンド（TERM）送信後、接??理を開始。
        - EVENT28…タイムアウト通知（切?要求に?する?答がなかった）
          - 切?コマンド（TERM）送信後、接??理を開始。
        - EVENT29…無線送信禁止通知
          - 取得コマンドの送信を止め、EVENT25の受信を待つ
      - 取得コマンド送信可能なら、約２分?に瞬時電力取得コマンドをスマ?トメ?タ?に送信する。
    - 切?要求のハンドリングは重要で、定期的にスマ?トメ?タ?から送られてくるので、うまく再接??理してやらないと、いつの間にか通信が止まっているという?況になってしまう。
      - NanoPi版で時?接?が切れてしまう事象があって、通信ログを追ったところ、1日に１回くらい切?要求が送られてきていたのを無視していた。
    - 無線送信禁止?態が解除されない場合がある(2019/6/12 追記)
    - EVENT29を受信した後のEVENT25が、時?受信できない。
      - そのため、取得コマンドを送れずに瞬時電力値が得られない。
      - スマ?トメ?タ?との接?は切れてないので、３０分ごとに送られてくる積算電力量は取得できる。
    - スマ?トメ?タからの受信をMicroSDカ?ドにログを取るようにして稼?させてみたところ、下記の?態になっていることを確認できた。
      - 正常（EVENT29が?た後、?秒以?にEVENT25）
   ```
2019/06/10 18:06:08 EV29
2019/06/10 18:06:08 RXUDP
2019/06/10 18:06:09 RXUDP
2019/06/10 18:06:09 RXUDP
2019/06/10 18:06:09 RXUDP
2019/06/10 18:06:09 EV25
```
      - 異常（EVENT29が?た後、ずっとEVENT25が?ない）
   ```
2019/06/12 08:32:38 EV29
2019/06/12 08:32:42 RXUDP
2019/06/12 08:32:43 RXUDP
```

2. ネットワ?ク
  - 起動時にEthernetがLink?態ならEthernetモジュ?ル（[WIZ850io](https://www.switch-science.com/catalog/3683/)）を使用し、それ以外はM5Stack??のWiFiを使用。
  - Echonet通信とNTP取得では、EthernetUDP（または、WiFiUDP）を使用。
  - InfluxDB送信は、EthernetClient（または、WiFiClient）を使用。

3. BME280センサ?
  - 起動直後は、??が異常な値（極端に小さい値）になることが多かったので、９００hPaを超えるまで繰り返し取得するように。
  - 約２分?にライブラリ（[BME280_Light](https://github.com/EnviroMonitor/BME280_light?utm_source=platformio&utm_medium=piohome)）?由で計測値を取得。

4. Echonet通信（エコキュ?ト、ダイキンエアコン）
  - 起動時に受信タスクを起動し、UDPポ?ト３６１０でEchonetパケットの受信を待つ。
  - 約２分?に取得要求コマンドを、エコキュ?トとダイキンエアコンに送信

5. NTP取得
  - 起動時にNTPサ?バ?に時刻取得を行う。
  - 以降は、millis()値を定期的に取得し、?分（ms）を加算していく。
  - 「NTP」ボタンが押されたら、NTPサ?バ?への再取得を行う。

6. InfluxDB送信
  - 上記の各計測値（スマ?トメ?タ?の瞬時電力、積算電力量、BME２８０センサ?値、エコキュ?ト値、ダイキンエアコン値）の取得タイミングで、InfluxDBサ?バに計測値を送信する。

## 今回、ハマったところ

- InfluxDB送信で、NanoPi版ではcurlコマンドを使用していたので同?にしようと、[libcurl](https://curl.haxx.se/libcurl/)の導入を試みたりしました。（これだけで三日くらい費やしている。）

- ふと思い立って、誰かがライブラリを提供しているんじゃないかと?索したところ、[ESP8266_Influx_DB](https://github.com/tobiasschuerg/ESP8266_Influx_DB)に行き着きました。
  - コ?ドを?んでHttpClientを使えば良いことがわかりました。
  - そのまま?該ライブラリを使ってもよかったんですが、なるべく有線LANでネットワ?ク接?したかったので、?考にして自作しています。

---

Source: https://maker.wiznet.io/bruno/projects/WiSun-Ethernet-Gateway/
