{
    "schema": "eupdate-package-specification-v1",
    "author": "PB <pavel.bartos.pb@gmail.com>",
    "project_id": "18b00bc838c7679f",
    "software_id": "eair-server",
    "software": "eAir",
    "module": null,
    "release_id": "41681b420c5e7bb3adb10f19cbc51b95",
    "version": "0.1.5",
    "release_date": "2026-10-08",
    "published_at": "2026-10-08T13:38:49+00:00",
    "bytes": 4174066,
    "sha256": "1970cdc73095fb928e0781d12c49efc45bcb5ef861d6b7f43fae6b955c28cc74",
    "file_count": 67,
    "languages": {
        "Python": {
            "bytes": 175236,
            "files": 30
        },
        "CSS": {
            "bytes": 99479,
            "files": 3
        },
        "JavaScript": {
            "bytes": 83710,
            "files": 5
        },
        "Shell": {
            "bytes": 11370,
            "files": 3
        },
        "HTML": {
            "bytes": 6543,
            "files": 3
        }
    },
    "installation_url": "https://update.estudium.eu/package.php?software_id=eair-server&version=0.1.5",
    "update_url": "https://update.estudium.eu/package.php?software_id=eair-server",
    "install_json": {
        "schema": "eair-install-manifest-v1",
        "schema_version": 1,
        "software": "eAir",
        "software_id": "eair-server",
        "version": "0.1.5",
        "package_revision": 1,
        "package_type": "zip",
        "package_target": "software",
        "description": {
            "cs": "Studiová ON AIR časomíra pro Raspberry Pi 5: GPIO, HDMI kiosk, počasí, RSS, eCast a webová správa.",
            "en": "Studio ON AIR clock for Raspberry Pi 5 with GPIO, HDMI kiosk, weather, RSS, eCast and web administration."
        },
        "compatibility": {
            "os_types": [
                "linux"
            ],
            "distribution_ids": [
                "ubuntu"
            ],
            "os_versions": [
                "24.04",
                "26.04"
            ],
            "distributions": [
                {
                    "id": "ubuntu",
                    "name": "Ubuntu",
                    "versions": [
                        "24.04",
                        "26.04"
                    ]
                }
            ],
            "architectures": [
                "arm64",
                "amd64"
            ],
            "init_system": "systemd",
            "package_manager": "apt",
            "primary_target": "Ubuntu Server 26.04 ARM64 / Raspberry Pi 5",
            "compatibility_basis": "Installer targets; physical Pi hardware acceptance test is still required.",
            "native_windows_supported": false,
            "native_macos_supported": false,
            "any_linux_distribution": false
        },
        "installation": {
            "working_directory": ".",
            "package_directory": "eair-server-0.1.5",
            "entrypoint": "./eair-server-0.1.5/install.sh",
            "shell": "bash",
            "requires_root": true,
            "requires_internet": true,
            "interactive": true,
            "languages": [
                "cs"
            ],
            "commands": {
                "linux": {
                    "supported": true,
                    "command": "sudo bash ./eair-server-0.1.5/install.sh",
                    "command_as_root": "bash ./eair-server-0.1.5/install.sh",
                    "command_from_package_directory": "sudo bash ./install.sh",
                    "mode": "automatic"
                },
                "windows": {
                    "supported": false,
                    "command": null,
                    "mode": "unsupported",
                    "reason": {
                        "cs": "Instalace na Ubuntu Server; Windows může otevřít webové rozhraní."
                    }
                },
                "macos": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                },
                "other": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                },
                "source": {
                    "command": null,
                    "supported": false,
                    "mode": "unsupported"
                }
            },
            "extraction_required": true,
            "extract_entire_archive": true,
            "recommended_resources": {
                "cpu_cores": 4,
                "ram_mib": 2048,
                "free_disk_gib": 8
            },
            "web_root": "."
        },
        "upgrade": {
            "supported": true,
            "command": "sudo bash ./eair-server-0.1.5/install.sh --update",
            "working_directory": ".",
            "documentation": "eair-server-0.1.5/docs/MANUAL-CS.md",
            "automatic": {
                "supported": true,
                "command": "sudo eair-admin update-install",
                "check_command": "sudo eair-admin update-check",
                "ui": "Údržba a eUpdate"
            }
        },
        "installed_paths": {
            "application": "/opt/eair",
            "version_file": "/opt/eair/VERSION",
            "configuration": "/var/lib/eair/config.json",
            "configuration_backups": "/var/lib/eair/backups",
            "ssh_public_keys": "/etc/ssh/eair-keys",
            "state": "/var/lib/eair",
            "backups": "/var/backups/eair",
            "logs": "/var/log/eair"
        },
        "documentation": {
            "readme": "eair-server-0.1.5/README.md",
            "manual_cs": "eair-server-0.1.5/docs/MANUAL-CS.md",
            "validation": "eair-server-0.1.5/docs/VALIDATION.md"
        },
        "integrity": {
            "algorithm": "sha256",
            "installer_sha256": "38feae725867f47219e2db65679bca4f2283be962d4021cf5867e5e4283d9fb8",
            "payload_checksums_file": "eair-server-0.1.5/SHA256SUMS",
            "payload_checksums_base_directory": "eair-server-0.1.5",
            "payload_checksums_sha256": "c988ced78dd084b0be3cb1c3471f4618d823b8d59ddce609f1c12aa218409fea",
            "note": "Hashes verify integrity, not publisher authenticity."
        },
        "release_date": "2026-10-08",
        "creation_date": "10/2026",
        "homepage": "https://estudium.eu",
        "license": "MIT",
        "author": {
            "name": "PB",
            "email": "pavel.bartos.pb@gmail.com",
            "website": "https://estudium.eu"
        },
        "project": {
            "name": "eAir",
            "website": "https://estudium.eu"
        },
        "archive_metadata": {
            "working_directory": ".",
            "publisher": "dcf6d41fbcdf0e16",
            "updated_at": "2026-10-08T13:38:49+00:00",
            "application_author": "PB <pavel.bartos.pb@gmail.com>"
        },
        "package": {
            "type": "release",
            "target": "software",
            "visibility": "public",
            "modules_included": false
        },
        "requirements": [],
        "license_custom": ""
    },
    "readme": "# eAir 0.1.5\n\nStudiové hodiny a ON AIR časomíra pro Raspberry Pi 5 / Ubuntu Server ARM64.\nAutor **PB**, pavel.bartos.pb@gmail.com, https://estudium.eu. Vytvořeno **10/2026**, licence **MIT**.\n\n## Instalace\n\nRozbalte celý ZIP a v adresáři `eair-server-0.1.5` spusťte:\n\n```bash\nsudo bash install.sh\n```\n\nTUI nabízí hostname, HTTP port a lokální HDMI kiosk. Výchozí port je **8080**.\nInstalátor používá ASCII rámečky; nepotřebuje funkční vykreslování UTF‑8 rámečků.\nPro jednoduchý textový režim přidejte `--plain`. Práva spustitelnosti v ZIPu jsou\nnastavená; spuštění přes `bash` funguje i při rozbalení nástrojem, který je nezachová.\n\nVerze **0.1.5** doplňuje diagnostiku a opravu přístupu GPIO, automatický\ncheck-in eUpdate každých 24 hodin a přímé propojení s nativním API eCast 1.0.7.\nPro každou pipe lze nastavit vlastní text živého vstupu. Při neznámém GPIO\nse neposílá falešné OFF AIR. Oprava HTTP přihlášení z 0.1.4 zůstává zachována.\n\nAktualizace: `sudo bash install.sh --update`. Instalátor převezme současný port,\nkiosk, nastavení i heslo a opraví pravidlo GPIO i práva existujících zařízení.\nSamotná oprava nepotřebuje restart OS; služba eAir se restartuje automaticky.\nBackend používá **nginx + HTTP**, výchozí port je 8080.\n\n- Administrace: `http://IP_SERVERU:8080/`\n- Displej: `http://IP_SERVERU:8080/display`\n- První přihlášení: **admin / admin**. Heslo změníte v Údržba a eUpdate.\n- Raspberry Pi napájejte USB‑C zdrojem 5 V / 5 A; připojte monitor přes micro-HDMI.\n- Výchozí vstup: **GPIO17 / pin 11**, přes **1 kΩ** a beznapěťový kontakt na **GND / pin 9**.\n  Sepnutí = ON AIR, rozepnutí = logo. Nepřipojujte cizí napětí.\n\n## Funkce\n\n- Skutečný Flask/Waitress backend a SQLite, služba systemd, HTTP nginx.\n- Přihlášení a levé menu převzaté z eWeb 0.8.43 včetně původního loga eStudium\n  a animace trojúhelníků. Vlastní logo stanice se nahrává samostatně.\n- GPIO přes `lgpio`, detekce RP1, softwarový debounce a ruční AUTO / ON / OFF.\n- Hodiny podle času OS/NTP, digitální, kompaktní a analogový vzhled.\n- Stopky z monotónních hodin, poslední vstup, součet dne, historie a CSV.\n- Počasí dnes/zítra: volba Open-Meteo / MET Norway; souřadnice a popis místa.\n- RSS/Atom pouze z aktuálního dne v nastavené časové zóně, popup v přehledu a ticker i při ON AIR.\n- Volitelný JSON výstup na až 8 eCast přijímačů; nativní přijímač eCast 1.0.7.\n- Přehled posledních 30 záloh konfigurace a loga, obnova, stažení a mazání.\n- Upload loga a zálohy přes výběr souboru nebo drag & drop s progress barem.\n- CZ/EN administrace a displej; 27 nastavitelných polí, enable/disable a velikost 50–150 %.\n- Správa veřejných SSH klíčů běžných systémových účtů; přidání, otisk a odebrání.\n- V prvním kroku instalace: mc, pv, links, git, net-tools a openssh-server.\n- Kiosk Chromium/Openbox/LightDM s automatickým přihlášením vyhrazeného účtu.\n- eUpdate: kontrola a instalace nového vydání z backendu, průběh na pozadí.\n- Diagnostický ZIP: logy aplikace, instalace, aktualizátoru, GPIO, HDMI a systému.\n\nPočasí a RSS se zapínají v administraci. Výchozí lokalita je Praha, souřadnice\nzměňte podle skutečného studia. Při první instalaci bez GPIO je stav zobrazen jako\nneznámý; k vyzkoušení použijte ruční režim.\n\n## Aktualizace\n\nZ adresáře nového rozbaleného vydání:\n\n```bash\nsudo bash install.sh --update\n```\n\nInstalátor zachovává heslo, nastavení, logo a databázi ve `/var/lib/eair`.\nPřed aktualizací vytvoří zálohu; aktivní kód mění atomickým odkazem. Při zachycené\nchybě po přepnutí vrátí předchozí kód. Balíčky operačního systému se nevracejí.\nNeaktualizujte při živém vstupu: zastavení služby vstup ukončí jako přerušený.\n\n## eUpdate\n\n**Nahrajte tento ZIP beze změny**, nikoli pouze složku programu. V kořeni ZIPu je\n`install.json` a `eupdate-upload.json` s údaji projektu `eAir`, `software_id=eair-server`,\nverzí, autorem a licencí. Struktura instalačních metadat vychází z balíčku eWeb 0.8.43.\nV administraci otevřete **Údržba a eUpdate → Zkontrolovat aktualizace → Instalovat\nnovou verzi**. Výchozí zdroj je `https://update.estudium.eu`. Projekt musí být veřejný\ns identitou `eair-server` a cílem **software** (obecný software, nikoli hostovaná PHP\naplikace). Klient ověřuje HTTPS původ, SHA-256, identitu a obsah ZIPu. Instalace běží\nsamostatnou službou, takže přežije restart backendu. Spouští se ručně tlačítkem,\nnikoli samovolně během vysílání. Skutečný upload do vašeho eUpdate nebyl proveden.\n\nV téže sekci je **Stáhnout logy a diagnostiku (ZIP)**. Pro další vývoj přiložte tento\nZIP; obsahuje konce logů, stav služeb a konfiguraci s odstraněnými API klíči.\n\nPodrobný návod: [docs/MANUAL-CS.md](docs/MANUAL-CS.md).\nRozsah ověření: [docs/VALIDATION.md](docs/VALIDATION.md).\nNapojení eCast: [integrations/README.md](integrations/README.md).\n\n## Lokální vývoj\n\n```bash\npython3 -m venv .venv\n.venv/bin/pip install -r requirements.txt pytest\n.venv/bin/python -m eair --state .dev-state --port 8780\n```\n\nVývojové HTTP: `http://127.0.0.1:8780`. `lgpio` je potřeba jen pro fyzický GPIO vstup;\nchybějící hardware neblokuje web ani ruční časomíru. Aplikace musí běžet jako jediný\nproces (jediný vlastník GPIO/časomíry). Testy: `.venv/bin/pytest -q tests`.",
    "download_url": "https://update.estudium.eu/download.php?project=18b00bc838c7679f&release=41681b420c5e7bb3adb10f19cbc51b95",
    "package_target": "software",
    "requirements": [],
    "license": {
        "id": "MIT",
        "name": "MIT",
        "custom_text": ""
    },
    "deployment": {
        "archive_root": ".",
        "web_root": "."
    },
    "project_type": "application",
    "hosting": null
}