Monday, 2 February 2026

Making a ESP32-C3 based Smart Home Monitor

This device is well supported by Tasmota so the easiest path is to FLASH the binary image from https://ota.tasmota.com/tasmota32/release/tasmota32c3.bin on to it using the Tasmota Web based Installer at: https://tasmota.github.io/install/


Remember to press and HOLD the bott button when plugging in the cable so the USB serial port can be seen. Also remember to erase device first and load tasmota32c3.factory.bin before loaded the above binary and check wiith the LOG & CONSOLE option and RESET that it has booted OK.


Then ensure the IP address of 192.168.1.156 is reserved for it by the router and set up MQTT (Configure > MQTT) and rename it TasmotaESP32C3156 using the menus (Configure > Other > Device Name & Friendly Name) the device will reset itself after each setting change and you can use the WebInstaller to check its logs.


You are now ready to make it a MQTT connected Smart Home sensor!



Here are a few screen shots from the Linux Mint 22 laptop during the flashing process...

















Sunday, 1 February 2026

Making an ESP32-C6-GEEK smart home monitor

I will use ESPHome to create a device that shows RED / YELLOW / GREEN depending on my Smart Home status posted to a MQTT topic.




First I will install docker. on my Linux Mint 22 laptop :

coderdojo@rhubarb:~$ cat /etc/os-release | grep PRETTY
PRETTY_NAME="Linux Mint 22"

https://itsfoss.gitlab.io/post/how-to-install-docker-on-linux-mint-22-or-21-step-by-step/

Next used docker to install ESPHome :

https://esphome.io/guides/getting_started_command_line/


oderdojo@rhubarb:~$ docker pull ghcr.io/esphome/esphome

Using default tag: latest



..
coderdojo@rhubarb:~$ 
coderdojo@rhubarb:~$ nano livingroom.yaml 
coderdojo@rhubarb:~$ 
coderdojo@rhubarb:~$ docker run --rm --privileged -v "${PWD}":/config --device=/dev/ttyACM0 -it ghcr.io/esphome/esphome run kitchen.yaml
INFO ESPHome 2026.1.3
INFO Reading configuration kitchen.yaml...
WARNING 'esp32c6geek_monitor': Using the '_' (underscore) character in the hostname is discouraged as it can cause problems with some DHCP and local name services. For more information, see https://esphome.io/guides/faq/#why-shouldnt-i-use-underscores-in-my-device-name
INFO Generating C++ source...
..


Hash of data verified.
Wrote 3072 bytes (134 compressed) at 0x00008000 in 0.0 seconds (934.8 kbit/s).
Hash of data verified.
Wrote 8192 bytes (31 compressed) at 0x00009000 in 0.0 seconds (2075.3 kbit/s).
Hash of data verified.

Hard resetting via RTS pin...
INFO Successfully uploaded program.
INFO Starting log output from /dev/ttyACM0 with baud rate 115200

[14:04:01.286][I][app:087]: Running through setup()
[14:04:01.286][C][wifi:475]: Starting
[14:04:01.286][D][wifi:1098]: Starting scan
[14:04:01.286][C][component:249]: Setup wifi took 70ms
[14:04:01.286][I][app:134]: setup() finished successfully!
[14:04:01.286][W][component:395]: wifi set Warning flag: scanning for networks
[14:04:04.028][D][wifi:1227]: Found networks:
[14:04:04.029][I][wifi:1188]: - 'Tola Park' (48:5D:35:F6:D1:AA) ▂▄▆█ Ch: 1 -66dB P:0
[14:04:04.030][D][wifi:1259]: - 7 non-matching (VERBOSE to show)
[14:04:04.031][D][wifi:1563]: Retry phase: INITIAL_CONNECT → SCAN_CONNECTING
[14:04:04.032][I][wifi:899]: Connecting to 'Tola Park' (48:5D:35:F6:D1:AA) (priority 0, attempt 1/2 in phase SCAN_CONNECTING)...
[14:04:04.227][W][component:543]: safe_mode took a long time for an operation (158 ms)
[14:04:04.227][W][component:546]: Components should block for at most 30 ms
[14:04:06.083][I][wifi:1329]: Connected
[14:04:06.083][D][wifi:1346]: Disabling AP
[14:04:06.084][C][wifi:1037]:   IP Address: 192.168.1.162
[14:04:06.084][C][wifi:1048]:   SSID: 'Tola Park'
[14:04:06.085][C][wifi:1048]:   BSSID: 48:5D:35:F6:D1:AA
[14:04:06.085][C][wifi:1048]:   Hostname: 'esp32c6geek_monitor'
[14:04:06.086][C][wifi:1048]:   Signal strength: -66 dB ▂▄▆█
[14:04:06.086][C][wifi:1048]:   Channel: 1
[14:04:06.086][C][wifi:1048]:   Subnet: 255.255.255.0
[14:04:06.086][C][wifi:1048]:   Gateway: 192.168.1.1
[14:04:06.086][C][wifi:1048]:   DNS1: 192.168.1.1
[14:04:06.087][C][wifi:1048]:   DNS2: 0.0.0.0
[14:04:06.087][W][component:426]: wifi cleared Warning flag
[14:05:00.962][I][safe_mode:066]: Boot seems successful; resetting boot loop counter
[14:05:02.204][D][esp32.preferences:155]: Writing 1 items: 0 cached, 1 written, 0 failed


This worked OK and I managed to program it. But I think Tasmota might be easier.. as Web interface and console log make it easier to modify, maintain and debug  :)

https://tasmota.github.io/install/  "Tasmota32 LVGL (english)"


Blast! ESP32-C6 not yet supported!
https://ota.tasmota.com/tasmota32/release/
https://ota.tasmota.com/tasmota32/release/tasmota32c6.bin


NOTE: I tried Tasmota WebInstaller https://tasmota.github.io/install/ and factory binary (tasmota32c6.factory.bin)  but it still just said waiting for download after a reset.

Ha! This was actually working and I could connect to its WiFi hotspot and configure it! Happy Days :)

Now how to I control the display? LVGL or Berry or both?
I see its menu offers "Tools > Extension Manager" with a "LVGL Panel v25.10.1.0" option.

https://tasmota.github.io/docs/Tasmota-Extension/

https://docs.waveshare.com/ESP32-C6-GEEK

But maybe I must define its GPIO first? I see "Tools > GPIO Viewer" looks good but no entry for this board. Do I make one?

Board schematic:
https://files.waveshare.com/wiki/ESP32-C6-GEEK/ESP32-C6-GEEK.pdf

https://documentation.espressif.com/esp32-c6_datasheet_en.pdf
https://files.waveshare.com/wiki/common/ST7789P3.pdf

The schematic shows 5 control pins for LCD1 (the ST 7789 P3 display?) named:

GPIO2 a red box shows this mapping LCD MOSI goes to display pin SDA
GPIO1                                                  LCD CLK                                  SCL
GPIO3                                                  LCD DC                                     RS
GPIO4                                                  LCD RST                                   RESET
GPIO5                                                  LCD CS                                     CS
and
GPIO6                                                  LCD BL    separate Back Light (BL) circuit

So first test is to toggle BL on/off using GPIO6


Yep. Defined GPIO6 ad a Relay using "Configuration > Module" menus (Module Type was "ESP32C6(1)"

Then after reset I had a TOGGLE button at 192.168.1.162 which toggled the very faint back light ON and OFF :)


Now trying ESP-IDF build following instructions at..

https://docs.espressif.com/projects/esp-idf/en/stable/esp32c6/get-started/linux-macos-setup.html

 1186  cd esp

 1187  ls

 1188  git status .

 1189  cd esp-idf/

 1190  git status .

 1191  ./install.sh esp32c6

 1192  ./install.sh all

 1193  . $HOME/esp/esp-idf/export.sh


(Tues 3rd Feb 2026 20:30) Tried Arduino IDE to program device and success!

I used Arduino 1.8.19 program on my Linux Mint 22 laptop, I selected "ESP32C6 Dev Module" and unzipped the demo software who's below link was on page https://docs.waveshare.com/ESP32-C6-GEEK/Resources-And-Documents

https://files.waveshare.com/wiki/ESP32-C6-GEEK/ESP32-C6-GEEK-Demo.zip

I then moved the two library folders (lvgl & PNGdec) from /home/coderdojo/Downloads/ESP32-C6-LCD-1.47-Demo/Arduino/libraries to /home/coderdojo/Arduino/libraries (but not the two examples (LVGL_Arduino & LVGL_Image) from directory /home/coderdojo/Downloads/ESP32-C6-LCD-1.47-Demo/Arduino/examples to /home/coderdojo/Arduino/ESP32_C8_GEEK/examples as it already has lots of examples!)

So selected Erase all Flash before Sketch Upload as "Enabled" under Tools in the IDE I then opened the 05_LCD_Button.ino file from the "05_LCD_Button" folder which opened 17 files in the IDE but it compiled and downloaded happily and display a different LCD picture each time I pressed the side button.

NOTE: I had to remove and re-insert the USB module to get the code to work and output debug :)


(Weds 4th Feb 2026 16:24) Next I opened the 16_MQTT_pub_sub.ino from the 16_MQTT_pub_pub folder..

I added my WiFi details and all compiled and ran. I can now use this to monitor my MQTT broker and paint colours depending on the system state..

"Tola/status/system" topic has string "{ "date":"04-FEB-2026", "time":"16:42", "status":"good" }"

So "good", "fair" or "bad" which updates every 10 secs. If no update after 30 then assume "bad"

Might also be nice to show outside and inside temperature :)


coderdojo@rhubarb:~$ mosquitto_pub -h 192.168.1.150 -p 1883 -u tola -P 2016TolaPark! -t Tola/status/system -m '{ "date":"04-FEB-2026", "time":"16:42", "status":"good" }'

coderdojo@rhubarb:~$ 


2026-02-04T16:49:59+0000{"tst":"2026-02-04T16:49:59.247456+0000","topic":"Tola/status/system","qos":0,"retain":0,"payloadlen":57,"payload":{"date":"04-FEB-2026","time":"16:42","status":"good"}}


Pin 18 - USB0 N - GPIO 12
Pin 19 - USB0 P - GPIO 13

Can I make the serial output appear on these?







  





Saturday, 31 January 2026

Improving Smart Home Resilience

(Fri 6th Feb 2026)

I aim to actually start monitoring at least one device and service today.

Does the Fritz!Box 7530 KI has an API I can use?

https://fritz.support/resources/SmarthomeRestApiFRITZOS82.html


https://fritzconnection.readthedocs.io/en/1.10.3/sources/getting_started.html

(.venv) coderdojo@rhubarb:~/workspace/TolaSmartHome$ pip3 install fritzconnection
...
(.venv) coderdojo@rhubarb:~/workspace/TolaSmartHome$ date
Fri 06 Feb 2026 09:31:24 GMT
(.venv) coderdojo@rhubarb:~/workspace/TolaSmartHome$ fritzconnection -s -i 192.168.1.1
fritzconnection v1.15.1
FRITZ!Box 7530 at http://192.168.1.1
FRITZ!OS: 8.21
Servicenames:
                    any1
                    WANCommonIFC1
                    WANDSLLinkC1
                    WANIPConn1
                    WANIPv6Firewall1
                    DeviceInfo1
                    DeviceConfig1
                    Layer3Forwarding1
                    LANConfigSecurity1
                    ManagementServer1
                    Time1
                    UserInterface1
                    X_AVM-DE_Storage1
                    X_AVM-DE_WebDAVClient1
                    X_AVM-DE_UPnP1
                    X_AVM-DE_Speedtest1
                    X_AVM-DE_RemoteAccess1
                    X_AVM-DE_MyFritz1
                    X_VoIP1
                    X_AVM-DE_OnTel1
                    X_AVM-DE_Dect1
                    X_AVM-DE_TAM1
                    X_AVM-DE_AppSetup1
                    X_AVM-DE_Homeauto1
                    X_AVM-DE_Homeplug1
                    X_AVM-DE_Filelinks1
                    X_AVM-DE_Auth1
                    X_AVM-DE_HostFilter1
                    X_AVM-DE_USPController1
                    WLANConfiguration1
                    WLANConfiguration2
                    WLANConfiguration3
                    Hosts1
                    LANEthernetInterfaceConfig1
                    LANHostConfigManagement1
                    WANCommonInterfaceConfig1
                    WANDSLInterfaceConfig1
                    X_AVM-DE_WANMobileConnection1
                    WANDSLLinkConfig1
                    WANEthernetLinkConfig1
                    WANPPPConnection1
                    WANIPConnection1
(.venv) coderdojo@rhubarb:~/workspace/TolaSmartHome$ 

Cool!



(Thurs 5th Feb 2025)

Got Python3 development environment set up on Linux Mint 22 laptop. Uses PyCharm and local git and remote github. Got MQTT publish, time and date, device and service objects started.




(Mid-Jan 2026)

The other day I noticed the button on my Android MQTT Dash app wasn't turning my kitchen sink LEDs on and off.

That night my smart home failed to charge up my LFP batteries on cheap rate electricity.

The next morning I investigated and found that the sionnach RPi3 whose Node-Red program was responsible for both kitchen LEDs and LFP charging was off line.

Power cycling this computer fixed everything.

However, I decided after this that I must monitor my smart home better.

This blog post tracks my actions to achieve this!


DESIGN GOALS

1) Monitor all machines and services

2) Provide a fail safe RED / YELLOW / GREEN display

3) Provide hourly detailed status reports.

4) Write code in object oriented Python3 (or on ESP32 MicroPython)


DETAILED BREAKDOWN

My smart home is based on an LTE router for Internet access which is connect to a Fritz!Box router for local LAN/WiFi access.

The later has DHCP running to assign IP addresses to the various devices (i.e. RPi3s. Zigbee routers, etc.)


So what do we want to check on?

a) Is the LTE router connected to the internet?

b) Is the Fritz!Box connected to the internet?

c) Are the N devices with IP addresses online?

d) Are the M services supplied by the N devices running?

How can we do this?

Let's make every device and service created and update a MQTT topic periodically

Let's have the RPi4 devices check these topics for updates using object oriented Python3 scripts

Let's update a ESP32-C6-GEEK display with RED / YELLOW / GREEN every 10 secs based on the results of our checks

Let's publish details of these checks to other MQTT topics




Thursday, 15 January 2026

Battery monitoring over BLE

 Well, it's been a minute. So this post details how to talk to three 24V LFP batteries over bluetooth.




The goal is to run a Python3 script as a system service on a Raspberry Pi to update via MQTT the battery voltages, currents and SoC % every few minutes.

The BMS run by each battery is below:

 BLE MAC              Name                     Type
'A4:C1:37:10:00:D2', 'SP10S009-L8S-100A-B-U', 'JK?'
'04:7F:0E:00:1A:7C', 'BR2262e-s',             'Xiaoxiang'
'40:18:04:01:23:34', 'DL-401804012334',       'Daly'

 

Here's the pseudo code:

For each of the three batteries {
    connect to battery (MAC_ADDDRESS, BMS_TYPE )
    get_voltages()
    get_current()
    get_SoC()
    disconnect()
    publish_to_MQTT()
}

This will use object orientated Python3 code and timeouts if async calls need to be used in blocking function calls.

So, examining the https://github.com/KrystianD/smart_bms.git code which works with the "JK?" type BMS lets see how it get the job done...

The smart_bms/TransportBLE.py code makes a BLE connection to the battery using the Bleak library to provide a client.










Tuesday, 2 April 2024

Installed 2x 100W panels on 40' shipping container for Shannon Tidy Towns

 I did install one last year. See https://shannontidytowns.blogspot.com/2023/06/we-now-have-solar-powered-light-in-our.html

And that blog has the installation details. This blog concentrates more on the design.


So I have used Scratch to draw a system diagram overlaying photos of the components.


1) Two 100W PV panels wired in parallel to give 20V @ 10A max. (So a 200Wp system)

2) An isolation switch to disconnect both PV cables from the charge controller (inside the container)

3) An Epever LS2024B charge controller. NOTE: external fuses for battery and PV have been added

4) A 12V lead acid car battery (Exide Excell RB442 44Ah @ 12v) So when 100% charge can supply 12v @ 1A for 22 hours before it reaches 50% charge.

5) A LED lamp. This is a white LED strip fitted behind the white diffusion layer of a flat TV screen.

6) A rocker switch to turn the LED lamp ON and OFF








And below is a more traditional system diagram :)




Wednesday, 27 March 2024

Finally connected 2 more 100W 20v PV panels (5 in total) together for a 12v battery off-grid system

 So, I wire up the last two 100W PV panels this afternoon once their was a break in the showers.


I was pleasantly surprised that the panel that blew off the 40' Shannon Tidy Towns (STT) container is still producing 20v ! Ah this is the missing 6th panel! So maybe not. I'll look in the 40' container for this :)















The goal is to customised this system to be deployed next week back on the 40' container to provide battery powered LED lighting again.

I will loan a system to STT with a LiFEPO4 12v battery so that the LTE modem has plenty of juice. Though I do have two spare 12v lead acid batteries I may try as well :)

Next is reprogram the NodeMCU based WiFi charging monitor to work with the new STT WiFi SSID and password and a MQTT database and connect up an LTE router to the 12v battery. Finally I will create a STT blogger post to provide real time graphs.

But this time round everything will be more robust and remotely monitored.


Latter in the year we expect to a more capable, professionally installed PV system. Then I will reclaim this loaner system.





Friday, 16 February 2024

Getting a Heltec CubeCell Dev-Board Plus (HTCC-AB02) project up and running again..

 So I decided to see what state this project board was in today...



First to fire up Arduino IDE and see if it is talking on serial port,,

16:09:29.736 -> Copyright @2019-2020 Heltec Automation.All rights reserved.
16:09:29.923 -> (Weds 13th Sept 2023 09:13) (CubeCell-Board Plus (HTCC-AB02)) SLAN-032 BME680 Sensor (LoRaWAN_BMP680_3)
16:09:29.970 -> Starting ESP32FeatherWiFiDemo for BME680
16:09:29.970 -> - Initializing BME680 sensor
16:09:29.970 -> -  Unable to find BME680. Trying again in 5 seconds.
16:09:35.050 -> -  Unable to find BME680. Trying again in 5 seconds.

That looks hopeful. So I looked for that sketch found a listing in an old e-mail LoRaWan_BMP680_3.ino so saved it to a folder and loaded into IDE.

Changed name to LoRaWAN_BMP680_4 and compiled and flashed..

16:23:50.284 -> Copyright @2019-2020 Heltec Automation.All rights reserved.
16:23:50.518 -> (Fri 16th Feb 2024 16:18) (CubeCell-Board Plus (HTCC-AB02)) SLAN-032 BME680 Sensor (LoRaWAN_BMP680_4)
16:23:50.518 -> Starting ESP32FeatherWiFiDemo for BME680
16:23:50.518 -> - Initializing BME680 sensor
16:23:50.565 -> -  Unable to find BME680. Trying again in 5 seconds.
16:23:55.641 -> -  Unable to find BME680. Trying again in 5 seconds.

All good so let's connect up a BME680 sensor..

VCC - red -

GND - brown -

SCL - yellow -

SDA - orange -


https://heltec.org/project/htcc-ab02/




So this is wired,,


16:40:44.243 -> 
16:40:44.243 -> AT Rev 1.3
16:40:44.243 -> +AutoLPM=1
16:40:44.243 -> 
16:40:44.243 -> +LORAWAN=1
16:40:44.243 -> 
16:40:44.243 -> +KeepNet=0
16:40:44.243 -> +OTAA=1
16:40:44.243 -> +Class=A
16:40:44.243 -> +ADR=1
16:40:44.291 -> +IsTxConfirmed=1
16:40:44.291 -> +AppPort=13
16:40:44.291 -> +DutyCycle=300000
16:40:44.291 -> +ConfirmedNbTrials=4
16:40:44.291 -> +ChMask=0000000000000000000000FF
16:40:44.291 -> +DevEui=70B3D57ED004AFD7(For OTAA Mode)
16:40:44.291 -> +AppEui=0000000000000000(For OTAA Mode)
16:40:44.291 -> +AppKey=AEE3B1AF66A5594D6CAA49EA26645BFA(For OTAA Mode)
16:40:44.291 -> +NwkSKey=00000000000000000100010003000600(For ABP Mode)
16:40:44.291 -> +AppSKey=72640C00C40700000000000000000000(For ABP Mode)
16:40:44.291 -> +DevAddr=007E6AE1(For ABP Mode)
16:40:44.291 -> 
16:40:44.291 -> 
16:40:44.291 -> LoRaWAN EU868 Class A start!
16:40:44.291 -> 
16:40:44.458 -> joining...joined
16:40:50.144 -> {"SupplyVoltage":"3466", "Temperature":"19.60", "Humidity":"67.82", "Altitude":"-27.94"}
16:40:50.179 -> confirmed uplink sending ...
16:40:55.538 -> received unconfirmed downlink: rssi = -58, snr = 14, datarate = 5
16:40:55.573 -> {"SupplyVoltage":"3466", "Temperature":"19.37", "Humidity":"67.89", "Altitude":"-28.10"}
16:40:55.573 -> confirmed uplink sending ...
16:41:00.957 -> received unconfirmed downlink: rssi = -59, snr = 13, datarate = 5

Seems to be working fine..


v3/tola-park-environment@ttn/devices/slan-032/join

{"end_device_ids":{"device_id":"slan-032","application_ids":{"application_id":"tola-park-environment"},"dev_eui":"70B3D57ED004AFD7","join_eui":"0000000000000000","dev_addr":"260BE51D"},"correlation_ids":["gs:uplink:01HPSCNC3ZCCMFE0KWC4ERGRHV"],"received_at":"2024-02-16T16:40:46.227092695Z","join_accept":{"session_key_id":"AY2yyrCHtYZdueKcy6lmkw==","received_at":"2024-02-16T16:40:44.416586220Z"}}





v3/tola-park-environment@ttn/devices/slan-032/up

{"end_device_ids":{"device_id":"slan-032","application_ids":{"application_id":"tola-park-environment"},"dev_eui":"70B3D57ED004AFD7","join_eui":"0000000000000000","dev_addr":"260BE51D"},"correlation_ids":["gs:uplink:01HPSCNQ0CK2KATW9NTAYV7HY4"],"received_at":"2024-02-16T16:40:55.773798256Z","uplink_message":{"session_key_id":"AY2yyrCHtYZdueKcy6lmkw==","f_port":13,"f_cnt":1,"frm_payload":"pPTqWzaDig2IPA==","decoded_payload":{"battery":35341, "gas_resistance":348.76, "humidity":5999.5, "pressure":1387.8, "temperature":422.28},"rx_metadata":[{"gateway_ids":{"gateway_id":"eui-b827ebfffebc60e2","eui":"B827EBFFFEBC60E1"},"time":"2024-02-16T16:40:55.557862043Z","timestamp":30150331,"rssi":-69,"channel_rssi":-69,"snr":10.5,"location":{"latitude":52.7096664658595,"longitude":-8.88603665286287,"altitude":10,"source":"SOURCE_REGISTRY"},"uplink_token":"CiIKIAoUZXVpLWI4MjdlYmZmZmViYzYwZTISCLgn6//+vGDhELudsA4aDAiXoL6uBhCuiJuNAiD4lOao8LIZ","received_at":"2024-02-16T16:40:55.554548393Z"}],"settings":{"data_rate":{"lora":{"bandwidth":125000, "spreading_factor":7, "coding_rate":"4/5"}}, "frequency":"868100000", "timestamp":30150331, "time":"2024-02-16T16:40:55.557862043Z"},"received_at":"2024-02-16T16:40:55.565555763Z","confirmed":true,"consumed_airtime":"0.061696s","version_ids":{"brand_id":"heltec", "model_id":"cubecell-1-2-aa-node-class-a-otaa", "hardware_version":"_unknown_hw_version_", "firmware_version":"1.0", "band_id":"EU_863_870"},"network_ids":{"net_id":"000013","ns_id":"EC656E0000000181","tenant_id":"ttn","cluster_id":"eu1","cluster_address":"eu1.cloud.thethings.network"}}}


So can I just added the 3x small PV solar panels to it, box it up and put it in Westpark?

Changed update time from 5 minutes to 30 minutes and turned off status LEDs to save battery power. And to draw less attention to it :)

16:48:58.732 -> joining...joined
16:49:03.955 -> {"SupplyVoltage":"3512", "Temperature":"18.02", "Humidity":"71.18", "Altitude":"-29.43"}
16:49:03.955 -> confirmed uplink sending ...
16:49:09.120 -> received unconfirmed downlink: rssi = -58, snr = 13, datarate = 5
17:09:04.668 -> {"SupplyVoltage":"3530", "Temperature":"18.01", "Humidity":"71.08", "Altitude":"-29.60"}
17:09:04.668 -> confirmed uplink sending ...
17:09:09.810 -> received unconfirmed downlink: rssi = -68, snr = 14, datarate = 5

Looking good battery charging as tethered via USB to laptop.

These three 2v panels put out 6v+ when sunny.



Hard to see below but the orange charge LED is on.



Will connect to PV panel later.