おもちゃ、家電、もろもろの修理の足跡と備忘録

色々と忘れるので、趣味のメモ

太陽光パワーコンディショナからのデータを見える化してみた(売買電力量と発電量の見える化)

2024-02-23 15:30:02 | 太陽光パワコンデータの見える化
[2024/2/25 10:00追記あり]
 とりあえず自作アダプタ経由で太陽光発電電力量のモニタができるようになったので、電力会社への売買電力量と一緒に見ることができるようにしてみました。上記はその概念図です。
 電力会社との売買電力量は、電力計に備わっているいわゆるBルート、というやつを使って、NatureさんのRemo E lite経由でNatureさんのサーバへデータが送られて溜まっています。このデータは通常、専用のスマホのアプリ経由で見ることができます。
 太陽光発電電力量は、今回作成した自作のアダプタ経由でAmbientさんのサーバへ送られ、作成したグラフをWEB経由で見ることができます。
 で、今回この両者のデータを一緒に見るために、Googleさんの力を借りました。両者はどちらもWEB経由でデータがやり取りできるAPIを用意してくれていて、そんなに手をかけずにデータを抜いてくることができました。また両者はそれぞれデータを蓄積してくれていて、今回は売買電力と発電電力の状況を見たいだけなので、データをDBに入れるとか、きちんと確保することは考えないことしました。
 GASでの仕組みの概要は、GASのタイマ起動機能を使って1分間隔で両者から最新データを取ってきて、Google Spreadsheetへ書き込み、それをグラフにして公開、という流れです。気をつけることはGoogle Spreadsheetは最大書き込みセル数(1000万セルだったか、、)があって、それを超過するとエラーになります。以前、Nature Remo E liteのデータを入れていたら、それに引っかかってエラーが山程(1分に1回やっていたので、それなりに、、、)来てびっくりしました。それも考慮する必要があります。
 現在は、午前0時に列を追加するようにしていて、それをグラフ化しています。つまり、午前0時から23時59分までのグラフを見えるようにしてあります。
 この状態が出来上がってから天気が良くないので、今度良い日(発電が十分されている日)のデータがあったらここに貼りたいと思っています。

青は、売買電力量(プラスが買電、マイナスが売電)、赤は太陽光発電量(発電方向がマイナス)です。青は、発電量を相殺、差し引いたデータのグラフになります。
さて、今度はEchoNetでも調べてみますかね。

<以下、2024/2/25に追記>

 昨日久しぶりに晴れたので一日分を貼りました。青が買電力(+)、赤が太陽光発電電力のそれぞれ瞬時値です。我が家での実際の家電製品等での合計消費電力は青線と赤線の差分となります。
 0時から4時くらいまでの1kW位の二山(後ろは良くわからないですが、それくらいしかない、、)は多分エコキュートです。4時すぎの500W位の凸凹は多分洗濯機。6時半前に太陽光発電を始めています。8時前のピークは、200V系エアコンと調理器具の消費ですね。ちなみ我が家はオール電化です。
 青線をたどると8時位に売電(マイナス)に切り替わって、10時から13時位まで買電量が下がっているのは、エコキュートの「昼間シフト」機能で追加で沸き上がっています。朝の湯量を見てみましたが、350Lとなっていたので、昼間に沸き上げる制御なのでしょうね。100%を昼間に沸き上げる制御ではない(天気を信用していない、、、)という感じでしょうか。ちなみに昼間はでかけていたので昼食に関わる電力消費はないです。14時位にも買電量が下がっていますが、これは私がエコキュートの追加での沸き上げをしたものです。沸き上げ指示をした時点で湯量は500Lと表示されていました。23時からの1.5kW位はこれも多分エコキュートだと思います。エコキュートは低電力(多分1kW)での沸き上げ設定をしているのですが、多分それじゃ朝までに沸き上がらないと判断して1.5kWにしたのだと思います。1.5kWでの運転は私は初めて見ました。ちなみに今日は朝から雨予想だったので「昼間シフト」設定は解除してました。
 この数日寒い(と言っても最低は+ですが)のと、娘が子供を連れて遊びに来ているので消費人数が多い状態なので、エコキュートも結構稼働しているようです。
 現在は、前夜に明日の天気予報や日射量予測を見て「昼間シフト」の設定をマニュアルで設定していますが、究極は自動運用をしたいと思っています。(いくつの会社からこの手のサービスが始まってますね、、、)
ということで、まだやることあります、、。まぁ、暇つぶしと趣味の延長なので悩みながら、楽しみながら進めて行こうと思っています。

太陽光パワーコンディショナからのデータを見える化してみた(毎朝のESP32の起動制御改)

2024-01-21 11:44:39 | 太陽光パワコンデータの見える化

(2024/1/22 7:50追記修正)
以前、毎朝のPowerConの起動で、立ち上がりの時にPowerConからの12V電源がOn/Offを繰り返す(いくつかパタンがあるようで0.5秒毎、1秒毎に点滅をとか)、という話でCRによる遅延回路でESP32のENpin制御でうまく動いている、と書きましたが、あれだめでした。思ったように動かない(うまく起動しない、プログラムが消えちゃう等のことはなくなったんですが、計算上の時定数と動作が全然合わないので気になっていました、、)ので色々とESP32について調べると、ENpinは、Resetボタンと同じ(パラ?)ようで、CRの遅延制御ではそもそも動かないですね。「電源」がOn/Offを繰り返すのでESP32じゃ制御できないので、CRのパッシブな回路でうまくゆくかな、と思ったのですがそれがだめ、、、。
で、じゃぁ外付け回路(アクティブな回路、、)でやる?PIC、となりました。
PICであれば、PICに電源印加、即動作(限界はありますが)してくれるので、印加電圧が加わっていれば、そこからタイマをかけてタイムアウトするまでENをlowにしてやれば良い、多分ENpinをトランジスタなりで制御してやればよいので、電源印加でOnにして継続して電源が入っていればその間タイマで監視して、タイム・アウトしたらOff(→トランジスタがOff→ENpinがhigh→ESP32が動作)してやれば良さそうです。
で、早速やってみました。電源が入ってENをOff(low)、電源が継続して約10秒間OnであればENがOn(high)になるようにプログラムを書いて、ENpinに接続。実際には後段にトランジスタを入れたのでこれの負論理にしてあります。これで思ったように制御できるようになりました。めでたしめでたし。PICの電源は、ESP32の3.3V出力(後段にトランジスタを入れたのでESP32入力の5Vでも良かったですかね)をもらってきています。

追加したものは、8pinの12F675と、ジャンク箱に転がっていたUsedな2SC372(なんでもよかったのですが、流石に古すぎますかね、、ハット版!)、10kΩの抵抗一本と、あとはモニタ用にLEDと電流制御用の抵抗一本を追加。
上の写真だと、ESP32のお腹の下に見えるのがPIC 12F675です。その下に起動時のENの停止を示すLED(赤)が見えます。トランジスタは奥の方にあるので見にくいです。
%ESP32のUSBコネクタが、MicroBからCに変わっているのは気にしないでください。単にいじっていて壊しちゃっただけです(なんで壊れたのかは不明ですが、EN制御で色々とやっているうちに壊れちゃいました、、)。再度大陸からお取り寄せしました。(円安のせいで高くなっちゃってましたが、、)

朝の起動時に丁度?立ち会えたのでPanaさんのモニタと比べてみましたが、連続電源印加10秒程度でLCDに表示が出てきて、次のデータ転送で発電量の表示が出ます。この連続値はPanaさんのを参考にしたわけでもありませんが、ほぼ同じだったのはちょっとびっくりしました。とりあえず完了。

太陽光パワーコンディショナからのデータを見える化してみた(起動時の様子編)

2023-12-21 07:46:10 | 太陽光パワコンデータの見える化

起動時の様子です。下の図の紫線の07:00近辺の0と200の行ったり来たりは、200が前回サーバにデータを正常にあげられた事を示していて、0は前回再起動した事を示しています。なので、ENを制御して、継続して数秒間12Vが検出できると起動していますが、データを送信したけれど、やはり12Vが安定せず断になってまた再起動した、ということを示しています。
上の図は当日の発電量(起動時=0として)を示していますが、07:10頃から発電量が検出できる状態になった、多分連携を始めているのではないかと思います。
毎朝、心配?で覗きにゆくのですが、EN対処後は一度も起動失敗することも止まることなく順調に動いています。 →次の記事で改造しました。

太陽光パワーコンディショナからのデータを見える化してみた(サーバへの転送時Errorの話)

2023-12-17 09:12:16 | 太陽光パワコンデータの見える化

 先のソフトウェア周りの話のところ書きましたが、今回、CircuitPythonでambientへ書き込み時にCircutPythonの先の深いところでエラーが起きてアプリが落ちる事がありました。
 Error自体は、Repeated socket failuresとでてadafruit_requests.pyの中で落ちているようです。色々調べて海外でのやり取りを見つけましたが、どうやらadafruit_requests.pyの先で落ちているようで、そのやり取りも途中状態でまだFixされていないような感じです。
未だ根本解決はしていないようですが、今回はPythonのtry/exceptで救える事がわかったのでその対処をしていて、どのくらいの頻度で落ちているのかを知るために失敗した次の成功した転送でその状態をサーバに送るようにしていました。
 上の3枚のグラフは、2023/12/6、12/7、12/8の横軸時刻、縦軸が緑が転送にかかった時間(sec)、紫がサーバからのresponce値(失敗した場合は1000を足しているので急に立ち上がっているところが前回失敗しているところ)です。転送に要した時間は、プログラムの中で8秒でタイムアウトするように設定しているので、実際にはもっとかかっているものもありますが所望の動作です。
 問題の紫のグラフですが、真ん中の12/7のお昼ころを境に明らかに挙動(頻度)が変わっています。もちろんESP32側のソフトウェア環境は継続して動作しているので変わっていません。この後も一日数回から10回程度のエラーは起きていますが頻度は以前と明らかに違います。途中経路のNetwork側の設定が変わったのか、サーバ側の設定が変わったのか、どちらにしてもESP32/CircuitPythonの外部の要因がきっかけでこのエラーの発生頻度が大きく変わる、ということはわかりました。
 今回はtry/exceptでアプリ側で救えているので良いですが、複数のシステムが絡んでいるとこういうところは難しいです。

太陽光パワーコンディショナからのデータを見える化してみた(動かしてみたらアプリが消えたり編)

2023-12-17 09:00:09 | 太陽光パワコンデータの見える化
[最終的なシステム概要を追加 2023/12/16 21:00]
[遅延回路?に一部追記 2023/12/17 9:00]



その後ですが、とりあえず、このまま動くかなと思っていたのですが、そうはうまくゆきませんでした。
朝、ambientを覗くとデータが上がっていない。あれっ、と思って見にゆくと、変なタイミングでESP32の青いランプが点滅。外してPCに繋いで見ると、アプリが消えていました。なんで? うまく動く日もあれば、python sourceだけ消えていたり、中途半端にソフトが消えてしまっていてBootすらしていない日も。
で、見つけました。朝、微妙に発電はし始めているが、まだ電力連携が始まっていないという時に、なんとパワコンからの12Vが、1秒間隔位で点滅を繰り返していました。ESP32的には、「電源が入った、Bootするか」と青のLEDが点灯するような微妙なタイミングで電源がOffになる、を繰り返されていたようです。

12V:(夜間)OFF→(日の出)1秒間隔位でON/OFFの繰り返し→ON→
で、安定しない時は
→ON→OFF→ON、とか→ON→1秒間隔の点滅→ON→

というような動作をしていることがわかりました。さて、どうする。

対処1:降圧した5Vに大きめのキャパシタを挿入
 5Vラインに接続してあった、5V電源確認用のLEDも電力節減?のために切断したりしてやってみましたが、うまくゆきませんでした。ESP32の消費電力を賄うそれなり?の大きさのキャパシタ分が必要ですね、、、。(真面目に計算していません、、)

対処2:ESP32のEN端子(Enable端子、内部で弱Pull-Upされているようです)をC/Rで制御して、点滅している間は起動しないようにする
 これうまく行きました。LTspiceを久しぶりに引っ張り出して、「点滅している間はhigh-Levelにならない、数秒のON継続でhigh-Levelになる」をシミュレートして5Vのラインで検出する回路を入れました。実際には計算通りゆかないので、Try&Errorで抵抗を追加しましたが、この一週間程毎朝無事に起動してくれています。 [後日PICで回路を追加しました。太陽光パワーコンディショナからのデータを見える化してみた(毎朝のESP32の起動制御改)参照の事。2024/1/24追記]
こういうところ、「やってみないとわからない」、システム化の苦労?面白い?ところですね。

後は、電源確認用LEDを5Vラインに入れていました(シガーライタ用の基板についていただけ)が、それは切断、12V側に緑色のLEDを挿入しました。

純正のモニタは、もちろんしっかりちゃんとできていて、12Vが点滅している間は表示はしない、ある程度継続すると表示が出る、安定して電力連携が開始されると電力連携の緑LEDが点灯する、でした。データの中に電力連携のビットがあるのでしょうけれど、累積電力量が受信データの中にあるので、起動したときの累積電力量との差分を取ると当日の発電量はわかるので良しとしています。

現時点でのシステム概要構成: