Repository navigation
CLI: dom-odczyt — odczyt procesów iPadów dla domu z bazy - #88
Merged
Merged
Conversation
Dom w trybie `baza` trzyma device_read w domy.ustawienia, a nie bylo polecenia, ktorym administrator moglby go wlaczyc (jedyna droga: ponowny dom-importuj 1 z config.yaml). `kidwatch dom-odczyt <dom> [--wlacz|--wylacz] [--co S] [--alarm-po H]`: bez flag stan (enabled, poll_seconds, unreachable_alert_hours, urzadzenia z koncowka UDID i hostem, czy host dopuszcza straznik domu, czy jest rekord parowania w katalogu instancji). Zmiana tylko w trybie `baza`, w jednej transakcji: walidacja modelu domu i bledu startu, straznik sieci dla hostow iPadow (odmowa z gotowym `dom-sieci <dom> --dodaj <host>/32`), podbicie wersji (przeladowanie bez restartu), audyt `dom.odczyt` bez UDID. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Gorne granice i allow_inf_nan=False dla czasow z konfiguracji, ktore trafiaja do asyncio.sleep/timedelta (odczyt iPadow, TV, UniFi, MDM, czas gry, NextDNS/AdGuard, timeouty kanalow). `--alarm-po inf` dawal OverflowError w petli i restart domu w kolko, `--co inf` sen na zawsze. - load_pair_record: kazdy blad odczytu/parsowania rekordu parowania (uciety XML, smiec, nie-slownik) = DeviceUnavailable, bez tresci pliku; urzadzenie pominiete zamiast nieudanego przeladowania domu. - dom-odczyt --wlacz (z wylaczonego) czysci po COMMIT dev-ok/dev-since urzadzen domu w bazie zdarzen domu: stare klucze nie daja alarmu zaraz po wlaczeniu. - SejfError w dom-odczyt: czytelna odmowa (kod 2), baza bez zmian. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Co
Nowe polecenie administratora instancji (jak
dom-sieci):enabled,poll_seconds,unreachable_alert_hours, katalog rekordów parowania instancji (device_read.pair_record_dirz config.yaml) i urządzenia zudid/host: UDID tylko końcówka (…ABCD), host w całości, czy host dopuszcza strażnik sieci domu (jeśli nie, podpowiedźdom-sieci) i czy istnieje plik<UDID>.plist. Sprawdzamy tylko, czy plik istnieje, treści nie czytamy.konfiguracja_domu.ustaw_odczyt) działa tylko dla domu w trybiebaza. Dla domu w trybie yaml polecenie odmawia. Wszystko dzieje się w jednej transakcji:enabled/poll_seconds/unreachable_alert_hourswdomy.ustawienia["device_read"]; aliasy procesów, timeout i reszta ustawień domu zostają bez zmian;home_z_danychz bieżącymi integracjami i sekretami, jak przy starcie). Dom bez źródła DNS też jest walidowany, z zastępczym źródłem jak w imporcie struktury. Między innymi walidator „device_read.enabled=true, ale zadne urzadzenie nie ma udid i host” odrzuca włączenie;blad_startu_connprzed i po zmianie: zmiana, po której dom przestałby startować, jest odrzucana;enabled=truekażdyhosturządzenia zudidmusi być literałem IP dopuszczonym przezdozwolone_sieci. Robi to ta sama funkcja, którą sprawdzabuild_watchers. Jeśli nie, polecenie odmawia i podaje gotowekidwatch dom-sieci <dom> --dodaj <host>/32;domy.wersja(nadzorca przeładuje dom bez restartu) i wpis w audyciedom.odczyt(kto=cli, stan przed i po, bez UDID). Gdy nic się nie zmienia, nie ma zapisu ani podbicia wersji.Dlaczego
Odczyt iPadów z klastra działa po regule NAT na bramie domowej (2026-10-23 odczytano listę procesów iPada z poda). Dom 1 bierze jednak konfigurację z bazy, a
device_read.enabledwdomy.ustawieniadało się zmienić tylko ponownymdom-importuj 1z config.yaml, a tego chcemy uniknąć.Sprawdziłem ścieżkę runtime w trybie
bazai niczego nie trzeba było naprawiać:pair_record_dirto pole instancji.Config.split()wyłącza je zHomeConfig, więc nie trafia dodomy.ustawienia;build_home_runtimebierzeinst.device_read.records_path.TcpLockdownBackendbez jawnegocache_dirużywatempfile.gettempdir()/pmd3, czyli/tmp/pmd3./tmpw podzie to zapisywalny emptyDir (16Mi), przyreadOnlyRootFilesystem.bazabuild_watchersprzepuszcza tylko hosty dopuszczone przez strażnika domu. Polecenie sprawdza to samo przed zapisem.Testy
tests/test_dom_odczyt.py(8 testów):zbuduj_dom→build_watchersz katalogiem rekordów instancji daje obserwatora iPada;dom-siecito działające polecenie), brak urządzeń z udid+host (Dom 1 oraz dom bez źródła DNS),--co 1poniżej minimum modelu, dom yaml, nieistniejący dom;Kanarki (odwrócona poprawka,
python -B,-p no:cacheprovider): strażnik, podbicie wersji, odmowa yaml, maska UDID, walidacja modelu, zachowanie resztydevice_read. Po każdym odwróceniu wskazany test pada.uv run pytest -qiuv run ruff check: zielone.Wdrożenie
Kolejność, prawdziwe adresy tylko w prywatnym repo infrastruktury:
helm.valuesObject):networkPolicy.egress.wDomu+={cidr: <IP iPada>/32, port: 62078}dla każdego iPada orazdeviceRead.enabled: true. Bez tego/pairingnie jest montowany. config.yaml w Sekrecie musi miećdevice_read.pair_record_dir: /pairing.kidwatch dom-sieci 1 --dodaj <IP iPada>/32dla każdego iPada.kidwatch dom-odczyt 1: sprawdzić stan (sieć „dopuszczony”, rekord „jest”), potemkidwatch dom-odczyt 1 --wlacz.🤖 Generated with Claude Code