{
    "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": "44d5fdc0d0e60d56a5b2b92a742e62c4",
    "version": "0.1.2",
    "release_date": "2026-10-08",
    "published_at": "2026-10-08T11:59:33+00:00",
    "bytes": 2793224,
    "sha256": "1c3bbff71898e8d8605e7ce74ba9a62fbe566e29050307059ed7e5a0579c8ab6",
    "file_count": 52,
    "languages": {
        "Python": {
            "bytes": 102830,
            "files": 20
        },
        "CSS": {
            "bytes": 96668,
            "files": 3
        },
        "JavaScript": {
            "bytes": 36093,
            "files": 3
        },
        "Shell": {
            "bytes": 11195,
            "files": 3
        },
        "HTML": {
            "bytes": 5784,
            "files": 3
        },
        "PHP": {
            "bytes": 2725,
            "files": 1
        }
    },
    "installation_url": "https://update.estudium.eu/package.php?software_id=eair-server&version=0.1.2",
    "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.2",
        "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.2",
            "entrypoint": "./eair-server-0.1.2/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.2/install.sh",
                    "command_as_root": "bash ./eair-server-0.1.2/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.2/install.sh --update",
            "working_directory": ".",
            "documentation": "eair-server-0.1.2/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",
            "state": "/var/lib/eair",
            "backups": "/var/backups/eair",
            "logs": "/var/log/eair"
        },
        "documentation": {
            "readme": "eair-server-0.1.2/README.md",
            "manual_cs": "eair-server-0.1.2/docs/MANUAL-CS.md",
            "validation": "eair-server-0.1.2/docs/VALIDATION.md"
        },
        "integrity": {
            "algorithm": "sha256",
            "installer_sha256": "677e32b79483a1bce60e613a772609ff4d74795fcd700c080d68a60f73ad30cf",
            "payload_checksums_file": "eair-server-0.1.2/SHA256SUMS",
            "payload_checksums_base_directory": "eair-server-0.1.2",
            "payload_checksums_sha256": "dd2a3810c6efee0d903a458c3dc87cf4288b314ef2f12aad7567c1391c528a8d",
            "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-08T11:59:33+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.2\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.2` 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.2** opravuje GPIO chybu `.lgd-nfy-3`, spouští po bootu hlavní obrazovku\nna HDMI, přidává aktualizace z eUpdate a diagnostický ZIP. Backend používá HTTP.\nPři aktualizaci se původní výchozí port 8443 převede na 8080; vlastní port se zachová.\nRSS proužek se jednorázově zapne také během ON AIR. Nastavení RSS zdrojů zůstává.\n\nPro přechod ze stávající verze použijte `sudo bash install.sh --update --kiosk`\na po dokončení restartujte zařízení. Správa je přes SSH a webovou administraci.\nNa HDMI se automaticky přihlásí vyhrazený účet a otevře `/display` přes celou plochu.\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 z Open-Meteo, souřadnice a zákaznický API klíč pro komerční použití.\n- Více RSS/Atom zdrojů, ticker zprava doleva, rychlost a velikost písma.\n- Volitelný JSON výstup na až 8 eCast přijímačů; přiložený PHP přijímač.\n- Záloha/obnova konfigurace a loga, změna hesla, provozní log a diagnostika.\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=44d5fdc0d0e60d56a5b2b92a742e62c4",
    "package_target": "software",
    "requirements": [],
    "license": {
        "id": "MIT",
        "name": "MIT",
        "custom_text": ""
    },
    "deployment": {
        "archive_root": ".",
        "web_root": "."
    },
    "project_type": "application",
    "hosting": null
}