先週はチャージコントローラの通信を無線化することに成功したが、チャージコントローラの通信プロトコルがmodbusと呼ばれるものであることが分かり、これを読み出してDBに書き出せばSolarStationMonitorを立ち上げずともロギングができることから調べてみた。
調べた結果、ArduinoでmodbusのライブラリがありEPEVERのコントローラを読み出しているコードがGitHubに公開されていたので、これを使わせてもらうことにした。
github.com
また、influxdbのArduinoライブラリもあることが分かったので、ESP-WROOM-02からラズパイ上のDBにライブデータを書き出すよう上記のコードに下記サンプルを例に手を加えた。
// InfluxDB server url, e.g. http://192.168.1.48:8086 (don't use localhost, always server name or ip address) #define INFLUXDB_URL "influxdb-url" // InfluxDB database name #define INFLUXDB_DB_NAME "database" // Single InfluxDB instance InfluxDBClient client(INFLUXDB_URL, INFLUXDB_DB_NAME); // Define data point with measurement name 'device_status` Point pointDevice("device_status"); // Set tags pointDevice.addTag("device", "ESP8266"); pointDevice.addTag("SSID", WiFi.SSID()); // Add data pointDevice.addField("rssi", WiFi.RSSI()); pointDevice.addField("uptime", millis()); // Write data client.writePoint(pointDevice);
github.com
■Grafanaで表示した結果