Energy Solutions in the AI era

Energy Solutions in the AI era

May 26, 2026

Tl;DR

How about doing energysolutions NOW?

alt text

+++ Solar assisted heat pump simulation (SAHP)

Intro

Coming from these next steps to improve the existing features.

Its just all about heat pumps.

The experiment

In retrospective, 12m2 of solar panels are enough to pay no electricity bill in south Spain.

Poprawne podsumowanie:

  • Prąd: ~100 kWh/m (avg 95.9)
  • Ciepło worst month: ~2.5 GJ (Feb 2025) ≈ 684 kWh thermal
  • Ciepło avg: ~0.8 GJ/m ≈ 220 kWh thermal/m

But how can we now this in advance?

Ive also seen invoices with less than 100kwh in regular months, then spike to 360wkh in august

Guess why :)

git clone /poc
cd ./poc/go-solar-trajectory
#npm run build
#npx wrangler pages deploy dist --project-name=solar-trajectory

https://solar-trajectory.pages.dev/

https://17e286bf.trip-planner-9lt.pages.dev/?sid=06380&lat=50.9167&lon=5.7833&name=Maastricht+Airport+Zuid+Limburg&country=NL

There are now two concepts:

  • Face sun now: sets the panel normal directly toward the current sun vector. This is the tracker-style instantaneous optimum.
  • Use annual fixed: finds the best fixed tilt/azimuth for the selected latitude using a clear-sky geometry proxy: it samples the year and maximizes max(0, sun · panelNormal) * sin(solarAltitude).

Important: this is not yet a real PV yield optimum.

It ignores clouds, shading, roof constraints, DNI/ DHI split, temperature losses, and self-consumption.

It answers: “geometrically, what fixed panel orientation catches the most clear-sky sun at this latitude?”

Is this for you if your kwh is 0.26 eur?

go-solar.pages.dev/era5-cities/

DHT IoT Setup

sudo docker ps -q | xargs -r sudo docker stop
sudo docker start mqtt-dht11-dashboard emqx 0ce58d132af6
sudo docker container prune -f   
git clone https://github.com/JAlcocerT/RPi/
#npm start
docker compose up --build -d
  1. Stop the local Node process.
  2. From mqtt-dht11-dashboard, run docker compose up --build -d
  3. The container should continue using the existing data/readings.sqlite

alt text

#sudo ufw status
#sudo ufw allow 1883/tcp
mosquitto_sub -h 192.168.1.106 -p 1883 -t "esp32/temperature/dht11" -v
mosquitto_sub -h 192.168.1.106 -p 1883 -t "esp32/humidity/dht11" -v

the esp32 got 192.168.1.109

see Tools -> Serial Monitor at arduinoIDE for the logs

// —- Configuration —- const char* WIFI_SSID = “your-wifi”; const char* WIFI_PASSWORD = “your-password”; // const char* handles special chars ($, @, etc.) const char* MQTT_BROKER = “192.168.1.106”; const int MQTT_PORT = 1883; const int DHT_PIN = 4; // GPIO4 (D4) — best category, no special boot functions const int PUBLISH_MS = 5000;

https://github.com/JAlcocerT/RPi/blob/main/Z_MicroControllers/ESP32/esp32-c/arduino-idea-esp32-internal-temp.png

Open ArduinoIDE in W11 and select ESP32 Dev Module + CTRL + U to compile the sketch esp32-internal-temp-mqtt.cpp into the board with the right wifi pwd.

ssh casa@192.168.1.106
#cd ./Home-Lab/emqx
#docker compose up -d
# Check if the container is running
docker ps | grep emqx
# Watch EMQX logs live
docker logs emqx -f

Connect to the UI via: http://192.168.1.106:18083 then add admin/public

the new node app is at http://192.168.1.106:3000/

https://www.youtube.com/shorts/ZcsaFZgWoEc

coming from https://jalcocert.github.io/JAlcocerT/thermodynamics/ and from https://jalcocert.github.io/JAlcocerT/heat-transfer-ice/

Where some magic happend: https://go-solar.pages.dev/era5-cities/

#git clone /poc
#cd ./poc/go-solar
#make eu-capitals-raw
make eu-capitals-status #-missing
#make era5-cities-bake       # resumable, only fetches new 31
make era5-cities-bake-local
make ship

https://go-solar.pages.dev/era5-cities/

alt text

What to bring

What to bring from the experiment:

  • The 5 IR readings + DHT22 (T_surface_in_u, T_surface_in_t, T_air_in, optional T_surface_out_u, T_surface_out_t)
  • Date + hour of the measurement (to look up the matching ERA5 GHI / T_air_out for that timestamp)
  • Material used + €/m² actually paid
  • Any photos of the patch + sensor placement (just nice to have)

What to bring from the bills:

  • 12 monthly kWh totals
  • Their real €/kWh (bill total ÷ kWh)
  • Contracted power (kW)
  • AC unit age/model if known

The flow we’ll run:

  1. Plug measurements into /era5-cities/Sevilla measured-seasonal section
  2. Calibrate AC COP using bills vs model prediction (per zzzzz-post-experiment.md step B5)
  3. Run the three-scenario projection (best/likely/worst)
  4. Generate the parent-facing one-pager from the template
  5. Decide whether to scale to full roof

The docs to reference when you’re back:

  • zzz-azotea-experiment-actionplan.md — execution checklist
  • zzz-experiment-expectations.md — sanity-check bands for the readings
  • zzzzz-post-experiment.md — workflow → parent presentation

Conclusions

cd ./poc/go-solar
make ship #https://go-solar.pages.dev/era5-cities/
#cd ./poc/aerothermics
make deploy #https://main.aerothermics-landing.pages.dev/

Anti-barbell example (what I steered you away from):

  • Free tier (limited)
  • €9/mo (more bins, more years)
  • €29/mo (API, batch)
  • €99 consult
  • Result: 4-way choice, weak free tier, no clear premium positioning

Barbell example (what you have):

  • Free, unlimited tool
  • € paid call
  • Done

CheckList

  1. The aerotermia PoC:
git clone /poc
cd ./poc/aero
  1. The IoT setup: sensor pushing data via mqtt
git clone /RPi
cd ./RPi/
  1. The historical invoice records: use kreuzberg or your eyes for once

If you dont go crazy, 100kwh/m avg seems reasonable, invoices in spain inform about neighbours, they do x2 (lol)

  1. Wrapping all together:

FAQ

How much Tilt matters for FV

Depending on: latitude, day of the year, hour