18 Commits

Author SHA1 Message Date
ZeroDay 7b4849fb75 OPi unit: ExecStartPre stty сделан необязательным (-)
На Armbian trixie dev-preview шаг stty падал с SIGINT и валил старт
всего сервиса. Настройка serial дублируется в scales.py через pyserial,
так что при падении stty сервис теперь всё равно стартует.
2026-07-26 11:23:13 +03:00
ZeroDay aafbbc64d3 Runbook восстановления OPi на новой SD-карте + systemd-юнит
Инцидент 22.07: ФС ушла в read-only — захват кадра и SSH отвалились,
heartbeat и MQTT-вес продолжали работать. В репозитории не хватало
юнита и инструкции подъёма с нуля.

- orange_pi/scales.service (восстановлен по systemctl status)
- RECOVERY.md: установка, проверки, продление жизни карты,
  диагностика через MQTT без SSH
2026-07-23 09:09:21 +03:00
claude 94044fde75 OPi: авто-реконнект MQTT + проверка rc у publish (heartbeat и вес молча терялись с 10.07) 2026-07-15 07:38:35 +03:00
ZeroDay 451a30f74d OPi: shadow-распознавание Nomeroff (офлайн ANPR) параллельно с Claude
- фоновый вызов Nomeroff (:5010/recognize?crop=1&enhance=0) после захвата кадра
- результат -> /api/local-plate с ретраем на 404 (гонка с capture)
- полностью изолирован: ошибка/таймаут не влияют на боевой поток
- только для боевых снимков (не is_test)
2026-07-06 18:13:25 +03:00
Alexey Pavlov 3c325cbfc1 OPi: store-and-forward outbox для /api/capture (переживает обрыв сети)
- outbox.py: SQLite-очередь + JPEG на диске, at-least-once доставка
- scales.py: capture_and_send кладёт в очередь вместо прямого POST,
  heartbeat_loop каждые 30с дренирует очередь, статус публикует outbox_pending
- fw_version -> 2026-07-02-outbox
2026-07-02 16:00:21 +03:00
Claude ad95c90118 Mark test-shot photos with is_test flag (not saved as weighing) 2026-06-30 15:22:53 +03:00
Claude a4f8d5074e Add MQTT heartbeat + remote commands (ping/reboot/test-shot)
- scale/device/status: публикует раз в 30с uptime, state, память, диск, temp SoC, версию
- scale/device/cmd: слушает команды ping/reboot/test-shot от сервера
- использует только stdlib (/proc, /sys) — без новых зависимостей
2026-06-30 14:57:40 +03:00
claude ea036ab54e OPi: MIN_WEIGHT 1600 -> 2000 кг (отсечь ложные срабатывания) 2026-06-26 16:09:37 +03:00
claude c81b8fd72c OPi: слать нативный кадр без ужатия (сервер кропает зону номера) 2026-06-26 15:52:06 +03:00
claude b16e8c5e53 chore: убрать __pycache__ из репозитория, добавить .gitignore 2026-06-26 15:09:44 +03:00
claude 9d5d80ff7b OPi: авто-захват кадра с RTSP + отправка на распознавание номера 2026-06-26 15:09:33 +03:00
admin 69a773a2c9 fix: MIN_WEIGHT 500 -> 1600 кг 2026-06-18 10:30:40 +00:00
admin 5deee2f692 fix: repair broken string literal on line 200 (syntax error) 2026-06-14 08:55:02 +00:00
admin c663b31912 fix: MIN_WEIGHT 200 -> 500 кг (порог ложного срабатывания) 2026-06-14 08:50:43 +00:00
admin 3fcd43ea0d Fix syntax error + suppress duplicate weight logs 2026-06-07 08:57:43 +00:00
admin e4169735b1 Suppress duplicate weight logs (only log on change) 2026-06-07 08:56:29 +00:00
admin 207f8e0b0c Add traffic light GPIO control (PIN11=red, PIN13=green, 5min timeout, blink on fail) 2026-06-07 08:52:00 +00:00
admin ab2f189930 Add Orange Pi scales.py service 2026-06-06 21:32:02 +00:00