システム全体的に運用が安定していたこともあり、このカテゴリで久々の投稿になります。現在24Vシステムで使用しているMPPT(40A)充放電コントローラを、48Vシステムで使用している現用機2台の予備機としたい動機で、同型のMPPT(60A)充放電コントローラに入替えることにしました。年末セールでだいぶ安くなっていたことも入替えの動機になりました。

⇒前回記事:「車庫屋根ソーラー発電システム62(車庫屋根フル積載)

IMG_3098


2026年1月3日(土)

 入替前の状態。いちばん左のコントローラが24Vシステム用です。真ん中が48Vシステムのコントローラ1、その右がコントローラ2。
#ちなみに、気になるくらい目立つ白いタンクは「毘沙門水」20リッターです。加熱調理用途で床に置くのは抵抗があったので・・・
IMG_3087
 「MPPT(40A)充放電コントローラ」は仕様上12Vと24Vバッテリー用で、48Vバッテリーには対応できません。
IMG_3088
 昨年末購入したコントローラ(上)と取り外したコントローラ1(下)。取り外したコントローラ1は24Vシステムに転用します。購入時期が3、4年前なので端子位置が変わっていないことを念のため確認。
IMG_3089
 インタフェース端子の位置も変わっていないことを確認。買う前にひょっとしたら一部変更されているのではないかと心配していました。
IMG_3090
 ただし、バージョンの方、こちらは取り外したコントローラ1。コントローラ2も同じです。
IMG_3091
 昨年末購入したコントローラは・・・だいぶ変わっていました。コントローラ1として入替後、コントローラ2と問題なく連携できるか心配なところです。
IMG_3092
 昨年末購入したコントローラ(=コントローラ1として使用)の設定、システム電圧(48V)とバッテリー種別(LI)以外はデフォルト設定としました。
IMG_3093_2
 今回、コントローラ2の方を先のデフォルト設定に合わせました。
IMG_3096_2
 以下計測システム変更前
スライド1
 以下計測システム変更後。
 Bluetoothモジュール(BT-1)の配置は変更しなかったので、RaspberryPI側の設定変更は不要でした。24Vシステムに使用するコントローラ(旧コントローラ1)本体の設定は24Vバッテリー用に変更しました。
スライド2
 以下48Vシステム構成。
 旧コントローラ1を24Vシステムに転用して昨年末購入したコントローラをコントローラ1として設置したので以下構成上の見た目は変更なし。
スライド3
 48Vシステム負荷構成も変更なし。
スライド4
 24Vシステム構成変更前。
スライド5
 24Vシステム構成変更後。
 コントローラの変更のみです。48Vシステムの2台と同型のため「コントローラ3」と命名しています。こちらも、Bluetoothモジュール(BT-1)の配置は変更しなかったので、RaspberryPI側の設定変更は不要でした。(設定変更が面倒なので変更しないようにこのような対応にしました)
スライド6
 12Vシステム構成は変更なし。
スライド7
 あとは、明日以降の運用確認・・・。


2026年1月4日(日)

 早速トラブル発生しました。RaspberryPI3と48Vシステムのコントローラ1(昨年末購入)とのbluetooth接続は問題ないのですが、ログを追うとデータの送信OKですが、データ受信でタイムアウトとなっているところまではわかりました。スマホアプリを使った通信は問題ありませんのでbluetoothモジュール(Renogy BT-1)の故障ではなさそうです。
 以前、似たような通信エラーを経験していて、モデルチェンジしていたBT-1を購入して交換したら回復したことがありました。
 今回はひょっとしたら本体のハードウェアバージョンが上がったことで、BT-1と本体との通信がうまくいかなくなったのではと推測しました。
 ひとまずコントローラ1(48Vシステム)とコントローラ3(24Vシステム)を入替てみようと思い、半日かけて入替を実施するも結局なぜか状況は変わらず・・・???。
 ソフトウェアに原因があるのではと思い、以前計測システム構築にあたって参考にしたgithubのページを確認してみたところ、
 solar-bt-monitor ⇒ 4年前から更新なし
 solarshed ⇒ 5年前から更新なし
 Renogy BT ⇒ 8か月前に一部更新あり

 3番目の内容を確認してみるとpython関連モジュールの更新コマンドに関する記載があったので、これを実行してみました。
# python3 -m pip install -r requirements.txt
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting bleak (from -r requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/61/b5/8900a62271b38049345fc26c4fe3e6848864d3a22f2e580e97b17b2bfecf/bleak-0.20.2-py3-none-any.whl
Collecting configparser (from -r requirements.txt (line 2))
  Using cached https://files.pythonhosted.org/packages/e0/7a/9d0f52bf4923b2e410c7d6fda472c32d9b728284e89ec99074820226102f/configparser-5.3.0-py3-none-any.whl
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from -r requirements.txt (line 3)) (2.21.0)
Collecting paho-mqtt (from -r requirements.txt (line 4))
  Using cached https://files.pythonhosted.org/packages/c4/cb/00451c3cf31790287768bb12c6bec834f5d292eaf3022afc88e14b8afc94/paho_mqtt-2.1.0-py3-none-any.whl
Collecting async-timeout<5,>=3.0.0; python_version < "3.11" (from bleak->-r requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/a7/fa/e01228c2938de91d47b307831c62ab9e4001e747789d0b05baf779a6488c/async_timeout-4.0.3-py3-none-any.whl
Collecting dbus-fast<2.0.0,>=1.83.0; platform_system == "Linux" (from bleak->-r requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/59/c5/34718c86fc171b7e7cd4870b4107f18667b024f75dd6a905b76660860111/dbus_fast-1.95.2.tar.gz
  Installing build dependencies ... done
Collecting typing-extensions<5.0.0,>=4.2.0; python_version < "3.8" (from bleak->-r requirements.txt (line 1))
  Using cached https://files.pythonhosted.org/packages/ec/6b/63cc3df74987c36fe26157ee12e09e8f9db4de771e0f3404263117e75b95/typing_extensions-4.7.1-py3-none-any.whl
Building wheels for collected packages: dbus-fast
  Running setup.py bdist_wheel for dbus-fast ... done
  Stored in directory: /root/.cache/pip/wheels/f5/a0/94/7260fcbb35d9aee7b9935fc6e35c155af9a4eae062990236d0
Successfully built dbus-fast
Installing collected packages: typing-extensions, async-timeout, dbus-fast, bleak, configparser, paho-mqtt
Successfully installed async-timeout-4.0.3 bleak-0.20.2 configparser-5.3.0 dbus-fast-1.95.2 paho-mqtt-2.1.0 typing-extensions-4.7.1

 その後「Renogy BT」のサンプルコマンド実行してみたら3台のコントローラの通信OKを確認できました。(各コントローラのアドレス情報はマスクしています)

# python3 ./example.py config_1.ini
INFO:root:Init RoverClient: BT-TH-XXXXXXXX=> XX:XX:XX:XX:XX:XX
INFO:root:Starting discovery...
INFO:root:Devices found: 3
INFO:root:Found matching device BT-TH-XXXXXXXX=> XX:XX:XX:XX:XX:XX
INFO:root:Client connection: True
INFO:root:subscribed to notification 0000fff1-0000-1000-8000-00805f9b34fb
INFO:root:found write characteristic 0000ffd1-0000-1000-8000-00805f9b34fb, service 0000ffd0-0000-1000-8000-00805f9b34fb
INFO:root:writing to 0000ffd1-0000-1000-8000-00805f9b34fb [255, 3, 0, 12, 0, 8, 145, 209]
INFO:root:characteristic_write_value succeeded
INFO:root:notification_callback
INFO:root:on_data_received: read operation success
INFO:root:writing to 0000ffd1-0000-1000-8000-00805f9b34fb [255, 3, 0, 26, 0, 1, 176, 19]
INFO:root:characteristic_write_value succeeded
INFO:root:notification_callback
INFO:root:on_data_received: read operation success
INFO:root:writing to 0000ffd1-0000-1000-8000-00805f9b34fb [255, 3, 1, 0, 0, 34, 209, 241]
INFO:root:characteristic_write_value succeeded
INFO:root:notification_callback
INFO:root:on_data_received: read operation success
INFO:root:writing to 0000ffd1-0000-1000-8000-00805f9b34fb [255, 3, 224, 4, 0, 1, 231, 213]
INFO:root:characteristic_write_value succeeded
INFO:root:notification_callback
INFO:root:on_data_received: read operation success
INFO:root:on_read_operation_complete
INFO:root:BT-TH-XXXXXXXX    => {'function': 'READ', 'model': 'RNG-CTRL-ROVER60', 'device_id': 1, 'battery_percentage': 100, 'battery_voltage': 58.3, 'battery_current': 0.0, 'battery_temperature': 55.4, 'controller_temperature': 60.8, 'load_status': 'off', 'load_voltage': 0.0, 'load_current': 0.0, 'load_power': 0, 'pv_voltage': 124.3, 'pv_current': 0.0, 'pv_power': 0, 'max_charging_power_today': 1, 'max_discharging_power_today': 0, 'charging_amp_hours_today': 0, 'discharging_amp_hours_today': 0, 'power_generation_today': 0, 'power_consumption_today': 0, 'power_generation_total': 4784630, 'charging_status': 'boost', 'battery_type': 'lithium', '__device': 'BT-TH-XXXXXXXX', '__client': 'RoverClient'}
INFO:root:Exit: Disconnecting device: BT-TH-XXXXXXXX     XX:XX:XX:XX:XX:XX

# python3 ./example.py config_2.ini
INFO:root:Init RoverClient: BT-TH-XXXXXXXX=> XX:XX:XX:XX:XX:XX
INFO:root:Starting discovery...
INFO:root:Devices found: 3
INFO:root:Found matching device BT-TH-XXXXXXXX=> XX:XX:XX:XX:XX:XX
INFO:root:Client connection: True
INFO:root:subscribed to notification 0000fff1-0000-1000-8000-00805f9b34fb
INFO:root:found write characteristic 0000ffd1-0000-1000-8000-00805f9b34fb, service 0000ffd0-0000-1000-8000-00805f9b34fb
INFO:root:writing to 0000ffd1-0000-1000-8000-00805f9b34fb [255, 3, 0, 12, 0, 8, 145, 209]
INFO:root:characteristic_write_value succeeded
INFO:root:notification_callback
INFO:root:on_data_received: read operation success
INFO:root:writing to 0000ffd1-0000-1000-8000-00805f9b34fb [255, 3, 0, 26, 0, 1, 176, 19]
INFO:root:characteristic_write_value succeeded
INFO:root:notification_callback
INFO:root:on_data_received: read operation success
INFO:root:writing to 0000ffd1-0000-1000-8000-00805f9b34fb [255, 3, 1, 0, 0, 34, 209, 241]
INFO:root:characteristic_write_value succeeded
INFO:root:notification_callback
INFO:root:on_data_received: read operation success
INFO:root:writing to 0000ffd1-0000-1000-8000-00805f9b34fb [255, 3, 224, 4, 0, 1, 231, 213]
INFO:root:characteristic_write_value succeeded
INFO:root:notification_callback
INFO:root:on_data_received: read operation success
INFO:root:on_read_operation_complete
INFO:root:BT-TH-XXXXXXXX     => {'function': 'READ', 'model': 'RNG-CTRL-ROVER60', 'device_id': 2, 'battery_percentage': 100, 'battery_voltage': 58.2, 'battery_current': 6.68, 'battery_temperature': 57.2, 'controller_temperature': 69.8, 'load_status': 'off', 'load_voltage': 0.0, 'load_current': 0.0, 'load_power': 0, 'pv_voltage': 105.3, 'pv_current': 3.84, 'pv_power': 405, 'max_charging_power_today': 700, 'max_discharging_power_today': 0, 'charging_amp_hours_today': 2, 'discharging_amp_hours_today': 0, 'power_generation_today': 116, 'power_consumption_today': 0, 'power_generation_total': 6060596, 'charging_status': 'boost', 'battery_type': 'lithium', '__device': 'BT-TH-XXXXXXXX', '__client': 'RoverClient'}
INFO:root:Exit: Disconnecting device: BT-TH-XXXXXXXX    XX:XX:XX:XX:XX:XX

# python3 ./example.py config_3.ini
INFO:root:Init RoverClient: BT-TH-XXXXXXXX=> XX:XX:XX:XX:XX:XX
INFO:root:Starting discovery...
INFO:root:Devices found: 3
INFO:root:Found matching device BT-TH-XXXXXXXX=> XX:XX:XX:XX:XX:XX
INFO:root:Client connection: True
INFO:root:subscribed to notification 0000fff1-0000-1000-8000-00805f9b34fb
INFO:root:found write characteristic 0000ffd1-0000-1000-8000-00805f9b34fb, service 0000ffd0-0000-1000-8000-00805f9b34fb
INFO:root:writing to 0000ffd1-0000-1000-8000-00805f9b34fb [255, 3, 0, 12, 0, 8, 145, 209]
INFO:root:characteristic_write_value succeeded
INFO:root:notification_callback
INFO:root:on_data_received: read operation success
INFO:root:writing to 0000ffd1-0000-1000-8000-00805f9b34fb [255, 3, 0, 26, 0, 1, 176, 19]
INFO:root:characteristic_write_value succeeded
INFO:root:notification_callback
INFO:root:on_data_received: read operation success
INFO:root:writing to 0000ffd1-0000-1000-8000-00805f9b34fb [255, 3, 1, 0, 0, 34, 209, 241]
INFO:root:characteristic_write_value succeeded
INFO:root:notification_callback
INFO:root:on_data_received: read operation success
INFO:root:writing to 0000ffd1-0000-1000-8000-00805f9b34fb [255, 3, 224, 4, 0, 1, 231, 213]
INFO:root:characteristic_write_value succeeded
INFO:root:notification_callback
INFO:root:on_data_received: read operation success
INFO:root:on_read_operation_complete
INFO:root:BT-TH-XXXXXXXX     => {'function': 'READ', 'model': 'RNG-CTRL-ROVER60', 'device_id': 3, 'battery_percentage': 100, 'battery_voltage': 26.7, 'battery_current': 1.79, 'battery_temperature': 57.2, 'controller_temperature': 71.6, 'load_status': 'off', 'load_voltage': 0.0, 'load_current': 0.0, 'load_power': 0, 'pv_voltage': 77.4, 'pv_current': 0.64, 'pv_power': 50, 'max_charging_power_today': 421, 'max_discharging_power_today': 0, 'charging_amp_hours_today': 11, 'discharging_amp_hours_today': 0, 'power_generation_today': 297, 'power_consumption_today': 0, 'power_generation_total': 598, 'charging_status': 'mppt', 'battery_type': 'lithium', '__device': 'BT-TH-XXXXXXXX', '__client': 'RoverClient'}
INFO:root:Exit: Disconnecting device: BT-TH-XXXXXXXX     XX:XX:XX:XX:XX:XX

 今になって冷静に考えてみると、元に戻しても回復しなかったわけだから、少し待っていれば通信できるようになったかもしれず、先のソフトウェアだけでなくハードウェアにも原因があったわけではないと思われます・・・。
 結果的に24Vコントローラのみ変更という形になりましたが、正確な内容は以下に反映しています。
⇒「車庫屋根ソーラー発電システム(まとめページ)

 あまり関係無いですが、ついでにcrontabをきれいに整理しました・・・。

31 01 * * * ntpdate time.windows.com

00,10,20,30,40,50 * * * * /root/bms-shed0.sh
03,13,23,33,43,53 * * * * /root/bms-shed3.sh

04,14,24,34,44,54 * * * * /root/solar-bt-monitor1.sh
05,15,25,35,45,55 * * * * /root/solar-bt-monitor2.sh
06,16,26,36,46,56 * * * * /root/solar-bt-monitor3.sh

07,17,27,37,47,57 * * * * /root/renogylogger1.sh
08,18,28,38,48,58 * * * * /root/renogylogger2.sh
09,19,29,39,49,59 * * * * /root/renogylogger3.sh

@reboot /root/bms-shed0.sh
@reboot /root/bms-shed3.sh

@reboot /root/solar-bt-monitor3.sh
@reboot /root/solar-bt-monitor2.sh
@reboot /root/solar-bt-monitor1.sh