Energy Solutions in the AI era
Tl;DR
How about doing some energysolutions NOW?
+++ 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 (~10k$) 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 spikes 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-trajectoryThere 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- Stop the local Node process.
- From mqtt-dht11-dashboard, run
docker compose up --build -d - The container should continue using the existing data/readings.sqlite

See the IR sensor shows a massive T difference:
#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" -vthe 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;

Open ArduinoIDE in W11 and select
ESP32 Dev Module+CTRL + Uto compile the sketchesp32-internal-temp-mqtt.cppinto 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 -fConnect to the UI via:
http://192.168.1.106:18083then addadmin/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/

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:
- Plug measurements into
/era5-cities/Sevillameasured-seasonal section - Calibrate AC COP using bills vs model prediction (per zzzzz-post-experiment.md step B5)
- Run the three-scenario projection (best/likely/worst)
- Generate the parent-facing one-pager from the template
- 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
- The aerotermia PoC:
git clone /poc
cd ./poc/aero- The IoT setup: sensor pushing data via mqtt
git clone /RPi
cd ./RPi/- 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)
- Wrapping all together:
FAQ
How much Tilt matters for PV
Depending on: latitude, day of the year, hour
https://solar-trajectory.pages.dev/
https://go-solar.pages.dev/