No description
  • Python 98.8%
  • Dockerfile 0.7%
  • Shell 0.5%
Find a file
2026-05-25 00:13:33 +02:00
config feat: add wikiquote and weather memory 2026-05-17 01:02:09 +02:00
deploy/platform docs: add rs2000 platform handoff 2026-05-19 09:55:28 +02:00
docs docs: add rs2000 platform handoff 2026-05-19 09:55:28 +02:00
prompts docs: add rs2000 platform handoff 2026-05-19 09:55:28 +02:00
scripts docs: add rs2000 platform handoff 2026-05-19 09:55:28 +02:00
src/pogodowa_babcia feat: add wikiquote and weather memory 2026-05-17 01:02:09 +02:00
tests feat: add wikiquote and weather memory 2026-05-17 01:02:09 +02:00
.env.example init weather brain MVP 2026-05-17 00:29:27 +02:00
.gitignore init weather brain MVP 2026-05-17 00:29:27 +02:00
docker-compose.yaml init weather brain MVP 2026-05-17 00:29:27 +02:00
Dockerfile fix: make data volume writable 2026-05-25 00:13:33 +02:00
pyproject.toml feat: add local daily context 2026-05-17 00:39:19 +02:00
README.md docs: add rs2000 platform handoff 2026-05-19 09:55:28 +02:00
uv.lock feat: add local daily context 2026-05-17 00:39:19 +02:00

Pogodowa Babcia

Mała lokalna usługa pogodowa dla Iskry/OpenClaw. Nie próbuje być własnym IMGW. Pobiera dane, normalizuje je, liczy proste ryzyko i wysyła gotowy komunikat do istniejącego kanału ntfy albo webhooka.

MVP

Pierwszy etap robi tylko warstwę pogodową:

  • IMGW SYNOP dla Warszawy (12375)
  • IMGW ostrzeżenia meteo filtrowane po TERYT Warszawy i okolic
  • Open-Meteo jako prognoza godzinowa
  • proste decyzje: deszcz w najbliższych 2h, porywy wiatru, oficjalne ostrzeżenia
  • pamięć decyzji: wykrywanie pogorszenia/poprawy score'u opadowego między przebiegami
  • REST API dla Iskry/OpenClaw
  • opcjonalne ntfy i webhook, domyślnie wyłączone
  • lokalny cytat dnia do porannego briefingu
  • lokalny kontekst dnia: wschód/zachód słońca, imieniny i święta z YAML

RainViewer uczestniczy w decyzjach jako lekki sampling radarowy: Warszawa plus kilka punktów na zachód od miasta, liczony na kilku ostatnich klatkach. To nadal nie jest pełny nowcasting, ale daje sygnał "pada teraz", "opad stoi przed miastem" i prosty trend ruchu.

Lokalny start

cp .env.example .env
uv sync --extra dev
WEATHER_BABCIA_SCHEDULER=0 uv run pogodowa-babcia

Endpointy:

  • GET /healthz
  • GET /snapshot
  • GET /briefing/today
  • GET /alerts/active
  • POST /run/fast
  • POST /run/hourly
  • POST /run/morning
  • POST /notify/test

Kanały wyjściowe

ntfy:

WEATHER_BABCIA_NTFY_URL=https://ntfy.pdurlej.com/<topic>
WEATHER_BABCIA_NTFY_TOKEN=

Webhook JSON:

WEATHER_BABCIA_WEBHOOK_URL=http://127.0.0.1:8787/example
WEATHER_BABCIA_WEBHOOK_TOKEN=

Payload webhooka jest stabilny i ma schematy:

  • pogodowa_babcia.alert.v1
  • pogodowa_babcia.briefing.v1

To jest celowo bezpieczniejsze niż dawanie OpenClaw dostępu do katalogu usługi albo do shell commands. Iskra dostaje gotowy tekst i JSON, nie uprawnienia do wnętrzności.

Cytat dnia

Kolejność źródeł:

  1. config/daily_quotes.yaml dla konkretnej daty (2026-05-17) albo dnia roku (05-17).
  2. Wikicytaty Wikicytaty:Cytat_dnia, cache'owane w SQLite raz dziennie.
  3. Lokalny fallback z daily_quotes.yaml.

Plik lokalny jest przygotowany pod prywatne użycie kupionej zrywki Loesje 2026/2027, ale projekt nie scrapuje i nie bundluje treści kalendarza.

Babciowy kontekst dnia

config/namedays.yaml i config/holidays.yaml działają tak samo: najpierw dokładna data (2026-05-17), potem dzień roku (05-17). Wschód i zachód słońca liczone są lokalnie przez astral, bez zewnętrznego API.

To celowo jest nudne i lokalne. Dla domowego asystenta stabilniejsze jest mieć małą tabelę, którą można poprawić ręcznie, niż poranny briefing zależny od kolejnego losowego endpointu.

Docker

cp .env.example .env
docker compose up -d --build
curl http://127.0.0.1:8787/healthz

Kontener jest spięty konserwatywnie: lokalny port, read_only, tmpfs /tmp, brak capabilities.

Następne kroki

  1. Babciowe dodatki: uzupełnić pełną tabelę imienin i dodać ruchome święta.
  2. Integracja docelowa z Iskrą: istniejący ntfy/webhook jako wejście, bez bezpośredniego grzebania w Signal/OpenClaw runtime.

RS2000 / platform handoff

Kontrakt wdrożeniowy dla pdurlej/platform jest w docs/rs2000-platform-contract.md. Gotowe szkice dla platformowego Codexa są w deploy/platform/, a prompt przekazania w prompts/codex-platform-integrate-pogodowa-babcia-2026-05-19.md.