A serverless smart water boiler that reads the sun, respects the Shabbat, and runs the electric backup for exactly as long as needed. Zero idle time. Zero waste. $0.00/month.
Every afternoon at 16:00 (14:00 on Fridays), a single Lambda invocation fetches the day's weather, calculates how much solar energy the water heater actually got, and schedules exactly the right amount of electric backup — all without a server running 24/7.
Five weather factors combine into a single 0–6.5 score. A perfect sunny day in winter scores ~6.5 — the solar collector does almost all the work. A cloudy rainy day scores ~1. The delta from 6.5 is the deficit the electric element needs to cover.
Turning the boiler on isn't always the right call. dudbot has a set of contextual rules that adapt heating to the real situation — not just the forecast.
is_forbidden(now) regardless of how it arrived. A stale EventBridge rule can never cause chilul Shabbat — physically impossible.Four different day types, four different behaviours. Every edge case handled — including Shabbat ending directly into Yom Tov.
should_run_now() returns False. Telegram skip notice sent. One-time EventBridge rule created for tzait + 2 min.force_single_phase = False — shower times matter again.can_run_post_tzait() checks is_forbidden(now) — returns False immediately. Boiler stays off. Last day of Chag handles post-tzait normally.action: "on" invocation checks is_forbidden(now) before touching the boiler — regardless of how it arrived. A stale rule can never cause chilul Shabbat.Set HOUSEHOLD to a JSON array of your family groups. Phase 1 heats proportionally for early showers. Phase 2 runs a full independent reheat for adults — because by then, the kids have drained the tank and it needs a proper recovery.
The original dudbot ran on an EC2 instance that sat idle 23 hours a day. Lambda charges per 100ms of actual work. The math is brutal in the best possible way.
| Service | Monthly usage | Free tier limit | Cost |
|---|---|---|---|
| AWS Lambda | ~180 invocations · ~900 GB-sec | 1M requests · 400K GB-sec | $0.00 ✓ |
| EventBridge Scheduler | ~180 one-time rules | 14M invocations / month | $0.00 ✓ |
| Amazon ECR | ~250 MB container image | 500 MB / month | $0.00 ✓ |
| Amazon S3 | < 1 MB state files | 5 GB storage | $0.00 ✓ |
| CloudWatch Logs | < 10 MB / month | 5 GB ingestion | $0.00 ✓ |
No Kubernetes. No ECS. No RDS. Just Lambda, EventBridge, and a few API calls to services that were free to begin with.