Autor: Peter

  • Wie ist eigentlich der Jugendschutz möglich, wenn das Kind neben einem sitzt?

    Neulich saß ich mit den Kindern (beide 5 Jahre) auf der Couch, und ich wollte mit den beiden etwas zusammen spielen. Die Kids direkt danebensitzen zu lassen, während ich suche, war rückblickend nicht meine klügste Idee – aber das ist eine andere Geschichte.

    Ich hatte LEGO im Kopf. LEGO-Spiele gibt es im PlayStation Store einige, und ein neues hätte ich sogar gekauft. Also habe ich eins nach dem anderen geöffnet. USK 12. USK 12. USK 12. USK 12. Bis ich endlich eins gefunden habe, das USK 6 oder sogar USK 0 hatte. Cool, das kann ich installieren, das können wir spielen.

    Was mich daran so genervt hat: Ich musste jedes Spiel einzeln aufmachen. Auf den Kacheln im Store gibt es nicht mal ein kleines Alters-Icon, so wie auf der Hülle im Laden. Bei einem Film im Regal sehe ich die Freigabe sofort. Ich weiß, Sammler finden solche Badges auf dem Cover schrecklich. Aber für mich als Papa ist das in diesem Moment die einzige Information, die ich brauche.

    Was ich eigentlich will

    Ganz einfach: Ich setze mich an die Konsole – da sitze ich ja sowieso – und filtere nach Altersfreigabe. Punkt. Und das in meiner Bibliothek, und wenn die Tasche lockerer ist auch gerne im Shop.

    Wenn ich für mich selbst spiele, ist mir das egal. Ich sehe einen Trailer, das Spiel gefällt mir, ich kaufe es (nach erfolgter Freigabe des Finanzministeriums). Aber wenn die Kinder mitspielen, ist die Altersfreigabe doch für mich die einzig kritische Information. Und selbst bei Spielen, die ich gut kenne, liege ich mit meinem Bauchgefühl manchmal daneben. Astro Bot zum Beispiel – ist das USK 0? USK 6? USK 12? Ich hätte es nicht sicher sagen können (es ist USK 6 btw).

    Mir geht es dabei nicht um eine Empfehlung. Ob ein Spiel gut ist oder zu unseren Kindern passt, suchen meine Frau und ich selbst aus, wir arbeiten immerhin in der Branche und haben da ein ganz gutes Gefühl für. Ich will nur den ersten, einfachen Schritt: Zeig mir, was USK 0 oder 6 hat. Das ist meine Erwartung an eine Plattform – und ich hoffe, ich bin damit nicht allein.

    Ja, es gibt Wege – nur nicht dort, wo ich sitze

    Natürlich kann ich jedes Spiel einzeln aufrufen. Natürlich kann ich im Internet nach Empfehlungen suchen. Und es gibt dafür gute Anlaufstellen:

    • USK-Titelsuche – die offizielle Freigabe für jedes geprüfte Spiel. Leider ist die Seite ziemlich langsam
    • Stiftung Digitale Spielekultur – eine Datenbank mit Spielen, die pädagogisches Potenzial haben
    • Family Gaming Database – englischsprachig, lässt sich nach System, Altersfreigabe und Spielerzahl filtern und hat Listen mit Spielen, die sich für bestimmte Altersgruppen bewährt haben
    • PEGI-App – filtert nach Altersfreigabe, Genre und Plattform. Aber Achtung: PEGI ist das europäische System, in Deutschland gilt die USK. Die Stufen weichen teils voneinander ab

    Das geht alles, das weiß ich. Nur: Wenn ich an der Konsole sitzen, will ich dafür nicht das Handy rausholen. Ich will keinen Browser aufmachen und keine fremde Datenbank durchsuchen, während auf dem Fernseher der Store offen ist und zwei Fünfjährige neben mir sitzen. Keine dieser Seiten kennt meine Bibliothek, und keine sitzt da, wo ich gerade sitze: vor der Konsole. Genau dort will ich die Antwort.

    Also habe ich den Cross-Check gemacht und auf allen vier Plattformen nachgesehen, was direkt am Gerät tatsächlich geht. Das Ergebnis hat mich nicht zufriedengestellt – deshalb habe ich mir für eine der vier selbst geholfen. Wer die Lösung zuerst sehen will, springt direkt zu meinem Skript, das die komplette Steam-Bibliothek mit Altersfreigaben als Tabelle exportiert. Fairerweise vorweg: Es löst das Problem für Steam. Für Steam, und sonst nichts.

    Was die Plattformen anbieten

    PlattformStore nach Alter filternEigene Bibliothek filtern
    PlayStation 5❌ Nein❌ Nein
    Steam (Steam Machine)❌ Nein❌ Nein
    Xbox-App (am PC)✅ Ja✅ Ja, für Xbox- und Game-Pass-Spiele
    Nintendo Switch✅ Ja❌ Nein

    PlayStation: nichts

    Kein Filter im Store, kein Filter in der Bibliothek, kein Icon auf der Kachel. Einen Weg gibt es: ein Kinderprofil mit Altersgrenze. Das ist das richtige Werkzeug, wenn Kinder allein spielen. Für meine Frage hilft es aber nicht – warum, dazu weiter unten mehr.

    Steam & Steam Machine: nichts – obwohl die Daten da sind!

    An meiner Steam Machine am Fernseher gibt es weder in der Bibliothek noch im Store einen Filter nach Altersfreigabe. Das Absurde: Steam kennt die Freigaben. In den Shop-Daten jedes Spiels steht die Einstufung für Deutschland drin, sauber und maschinenlesbar. Sie wird nur nicht als Filter angeboten.

    Xbox: So stelle ich mir das vor

    Eine Xbox-Konsole habe ich nicht (mehr), aber die Xbox-App am PC. Und die kann genau das, was ich will (und ich vermute die XBOX kann dies auch). Im Store gibt es unter „Filter“ ein Feld Altersfreigabe mit den USK-Stufen. In Meine Spiele kann ich ebenfalls nach USK filtern – und das kombinieren: Was ist installiert? Was gibt es im Game Pass? Was kann ich per Cloud streamen? Was ist kostenlos? Über die Bibliothek und über den Store hinweg. Also genau die Frage: Was kann ich jetzt mit den Kindern spielen?

    Xbox-App, Ansicht Meine Spiele mit aktivem Filter nach USK-Altersfreigabe
    So sieht es aus, wenn eine Plattform mitdenkt: Filter nach Altersfreigabe, direkt in der eigenen Bibliothek.

    Eine Einschränkung gibt es: Die Xbox-App zeigt auch meine Steam-Spiele an, aber ohne Altersinformation. Der Filter greift nur bei Spielen, die über Xbox kommen. Trotzdem: Microsoft zeigt, dass es geht. Das ist keine technische Frage, sondern eine Frage, ob eine Plattform es umsetzen will.

    Nintendo Switch: der eShop kann es

    Das war die Überraschung beim Nachschauen. Der eShop hat den Filter, und er ist nicht mal versteckt: links das Trichter-Symbol, dann der Punkt Alterseinstufung. Aus 18.894 Artikeln wird damit in zwei Klicks eine Liste, die ich mit den Kindern durchgehen kann.

    Nintendo eShop mit geoeffnetem Filtermenue: Alterseinstufung mit den Stufen Nicht festgelegt, 0 bis 7, 12, 16 und 18
    Der Filter im eShop. Die Stufen 0–7, 12, 16 und 18 sind allerdings nicht die der USK.

    Eine Eigenheit hat der Filter allerdings. Die Stufen heißen Nicht festgelegt, 0–7, 12, 16 und 18. Eine 7 gibt es in der USK gar nicht – dort sind die Stufen 0, 6, 12, 16 und 18. Im europäischen PEGI-System dagegen schon. Nintendo wirft hier also mehrere Stufen in eine Schublade, statt die deutschen Freigaben einzeln anzubieten. Für meine Frage auf der Couch reicht das trotzdem: Ich will die unterste Schublade sehen, nicht auf ein Jahr genau sortieren.

    Zwei Dinge kann die Switch aber auch nicht. Auf der Kachel steht die Freigabe weiterhin nicht, die sehe ich erst auf der Detailseite. Und der Filter lebt nur im Store: Meine bereits gekauften und installierten Spiele auf der Konsole lassen sich nicht nach Alter filtern. Genau der Fall, der mich auf der Couch beschäftigt hat, bleibt also auch hier offen – immerhin habe ich beim Kauf im Store eine Chance.

    Und wie bei Sony gibt es auch hier den Weg über ein Kinderprofil. Über die App „Nintendo Switch – Altersbeschränkungen“ stelle ich am Handy ein, welche Altersstufe auf der Konsole gespielt werden darf – wahlweise über eine der vorgegebenen Stufen oder in Handarbeit. Gleiches Werkzeug, gleiche Lücke: Es schützt ein Kind, das selbst spielt. Mir hilft es nicht, wenn ich in meinem eigenen Profil sitze und den Controller in der Hand halte. Warum das zwei völlig verschiedene Dinge sind, dazu gleich mehr.

    Damit steht es zwei zu zwei. Microsoft und Nintendo bieten den Filter an, Sony und Valve nicht. Das ist der Punkt, an dem das Argument „zu aufwendig“ nicht mehr trägt: Zwei von vier Plattformen haben es längst gebaut.

    Damit das nicht falsch ankommt: Eine Kaufempfehlung für eine Konsole ist das nicht. Wer seine Kinder allein spielen lassen will, ist bei allen vieren gut aufgehoben – der Schutz über ein Kinderprofil funktioniert überall, nur auf unterschiedlichen Wegen. Am Ende ist es gelöst. Mir geht es um den anderen Fall: den mit dem Erwachsenen am Controller und dem Kind daneben. Und der ist bei zweien gelöst und bei zweien nicht.


    Mein Workaround – aber nur für Steam

    Weil ich nicht 20 Webseiten durchforsten wollte, habe ich mir für Steam selbst geholfen: mit einem kleinen Python-Skript, das meine komplette Bibliothek mit Altersfreigabe als Tabelle exportiert. Damit das klar ist: Das löst das Problem nur für Steam. Für die PlayStation habe ich immer noch dieselbe Situation wie auf der Couch – Sony bietet keine öffentliche Schnittstelle, über die ich an meine Bibliothek käme.

    Das kam bei meinen Steam-Spielen raus:

    FreigabeAnzahl
    USK 0131
    USK 6140
    USK 12401
    USK 16333
    USK 18205
    Ohne Angabe (nicht mehr im Shop, Betas, Playtests)100
    Gesamt1.312

    271 Spiele mit USK 0 oder 6 lagen also längst in meiner Bibliothek. 207 davon habe ich noch nie gestartet. Die Spiele waren da – ich konnte sie nur nicht sehen. Mit der Tabelle haben meine Frau und ich jetzt endlich eine Liste, mit der wir uns in Ruhe beschäftigen können.

    Tabelle der exportierten Steam-Bibliothek mit Spalten fuer Name, USK-Freigabe, Quelle der Einstufung und Koop-Features
    Das Ergebnis des Skripts: eine Zeile pro Spiel, sortiert nach Freigabe – und mit der Spalte, woher die Einstufung stammt.

    Achtung: Nicht jede Zahl ist eine USK-Freigabe

    Beim Durchschauen ist mir etwas aufgefallen, das man wissen muss. Das Skript schreibt in die Spalte „Quelle“, woher eine Einstufung kommt:

    • 558 Einstufungen stehen als USK-Freigabe drin – eingetragen vom Hersteller selbst. Laut Steams eigenen Regeln darf er das nur, wenn die USK genau diese Version wirklich geprüft hat
    • 654 Einstufungen sind „Steam-DE (generiert)“ – Valves eigenes Einstufungsverfahren für Deutschland, unter anderem auf Basis eines Fragebogens, den der Entwickler ausfüllt. Nicht von der USK geprüft
    • 100 Einträge haben gar keine Angabe

    Wie wenig die generierten Werte mit der USK zu tun haben, zeigen zwei Zeilen besonders schön: Endzone – A World Apart und Monster Prom 3 stehen bei Steam auf 14. Diese Altersstufe gibt es bei der USK überhaupt nicht.

    Und selbst beim USK-Label lohnt ein zweiter Blick: Warhammer 40,000: Gladius – Relics of War steht bei mir mit USK 6 in der Tabelle. In der USK-Titelsuche habe ich das Spiel aber nicht gefunden. Eine USK-Einstufung, die automatisch über einen anderen Store entstanden ist, dürfte bei Steam laut Valve gar nicht eingetragen werden. Vielleicht gibt es eine Erklärung – nachvollziehen kann ich die 6 so jedenfalls nicht.

    Mein Rat deshalb: Nimm die Tabelle als Vorauswahl, nicht als Freigabe. Bevor ein Spiel mit den Kindern auf der Couch landet, kurz in der USK-Titelsuche gegenchecken.

    Das Skript: So exportierst du deine eigene Steam-Bibliothek

    Das Skript ist in Python geschrieben und braucht keine Zusatzpakete. Es läuft unter Windows, macOS und Linux und schreibt eine CSV-Datei, die du direkt in Excel öffnen und filtern kannst – Umlaute inklusive.

    Das komplette Skript steht hier im Beitrag – aufklappen, lesen, kopieren. So siehst du vorher genau, was es tut, und musst keine Datei von einer fremden Seite herunterladen.

    Ganzes Skript anzeigen: steam_usk_report.py
    #!/usr/bin/env python3
    """
    steam_usk_report.py
    ===================
    
    Listet die eigene Steam-Bibliothek mit USK-Freigabe und Multiplayer-/Koop-Features
    als CSV auf. Nur Python-Standardlib, kein pip noetig.
    
    Datenquellen
    ------------
      * IPlayerService/GetOwnedGames        -> Bibliothek (AppIDs, Namen, Spielzeit)
      * store.steampowered.com/api/appdetails -> ratings.usk.rating + categories
    
    Voraussetzungen
    ---------------
      1. Web-API-Key:  https://steamcommunity.com/dev/apikey
      2. SteamID64:    https://steamid.io/  (17-stellige Zahl)
      3. Profil-Einstellung "Spieldetails" muss auf Oeffentlich stehen,
         sonst liefert GetOwnedGames eine leere Liste.
    
    Beispiele
    ---------
      python steam_usk_report.py --key ABC123 --steamid 7656119...
      python steam_usk_report.py --key ABC123 --steamid 7656119... --max-usk 6 --only-coop
      python steam_usk_report.py ... --out kinderspiele.csv --delay 2.0
    
    Der Store-Endpunkt ist rate-limited (grob 200 Anfragen / 5 Minuten pro IP).
    Das Script wartet daher standardmaessig 1.6s zwischen den Abfragen und legt
    alle Ergebnisse in einer Cache-Datei ab -- ein zweiter Lauf ist dadurch sofort
    fertig. Bei einer 400-Spiele-Bibliothek dauert der erste Lauf ca. 11 Minuten.
    """
    
    import argparse
    import csv
    import json
    import sys
    import time
    import urllib.error
    import urllib.parse
    import urllib.request
    from pathlib import Path
    
    OWNED_URL = "https://api.steampowered.com/IPlayerService/GetOwnedGames/v1/"
    DETAILS_URL = "https://store.steampowered.com/api/appdetails"
    STORE_PAGE = "https://store.steampowered.com/app/{}/"
    
    # Steam-Kategorie-IDs, die fuer gemeinsames Spielen relevant sind
    CATEGORY_LABELS = {
        1: "Multiplayer",
        9: "Koop",
        24: "Splitscreen",
        27: "Crossplay",
        36: "Online-PvP",
        37: "Splitscreen-PvP",
        38: "Online-Koop",
        39: "Splitscreen-Koop",
        44: "Remote Play Together",
        49: "PvP",
    }
    COOP_CATEGORY_IDS = {9, 24, 38, 39, 44}
    
    USER_AGENT = "steam-usk-report/1.0"
    
    
    # ---------------------------------------------------------------- HTTP-Helfer
    
    def http_json(url, timeout=30):
        req = urllib.request.Request(url, headers={"User-Agent": USER_AGENT})
        with urllib.request.urlopen(req, timeout=timeout) as resp:
            return json.loads(resp.read().decode("utf-8", errors="replace"))
    
    
    def http_json_retry(url, tries=5, base_delay=5.0, quiet=False):
        """GET mit Backoff bei 429 / 5xx / Netzwerkhaengern. None bei Dauerfehler."""
        for attempt in range(tries):
            try:
                return http_json(url)
            except urllib.error.HTTPError as exc:
                if exc.code in (429, 500, 502, 503, 504):
                    wait = base_delay * (2 ** attempt)
                    if not quiet:
                        print(f"    HTTP {exc.code} - warte {wait:.0f}s", file=sys.stderr)
                    time.sleep(wait)
                    continue
                raise
            except (urllib.error.URLError, TimeoutError, json.JSONDecodeError):
                wait = base_delay * (2 ** attempt)
                if not quiet:
                    print(f"    Netzwerkfehler - warte {wait:.0f}s", file=sys.stderr)
                time.sleep(wait)
        return None
    
    
    # ------------------------------------------------------------------ Bibliothek
    
    def get_owned_games(api_key, steamid):
        params = urllib.parse.urlencode({
            "key": api_key,
            "steamid": steamid,
            "include_appinfo": 1,
            "include_played_free_games": 1,
            "format": "json",
        })
        payload = http_json_retry(f"{OWNED_URL}?{params}")
        if payload is None:
            raise SystemExit("GetOwnedGames nicht erreichbar.")
        games = (payload.get("response") or {}).get("games")
        if not games:
            raise SystemExit(
                "Keine Spiele zurueckbekommen. Pruefe API-Key, SteamID64 und ob die "
                "Profil-Einstellung 'Spieldetails' auf Oeffentlich steht."
            )
        return games
    
    
    def get_app_details(appid, cc="de", lang="german"):
        params = urllib.parse.urlencode({
            "appids": appid, "cc": cc, "l": lang,
        })
        payload = http_json_retry(f"{DETAILS_URL}?{params}")
        if not payload:
            return None
        entry = payload.get(str(appid)) or {}
        if not entry.get("success"):
            return None            # z.B. regional nicht verfuegbar oder Tool/Soundtrack
        return entry.get("data") or {}
    
    
    # ------------------------------------------------------------------- Auswertung
    
    def extract_age_rating(data):
        """(Freigabe, Quelle). Leerer String, wenn nichts Belastbares vorliegt."""
        ratings = data.get("ratings") or {}
    
        usk = (ratings.get("usk") or {}).get("rating")
        if usk not in (None, ""):
            return str(usk), "USK"
    
        # Valves eigene Selbsteinstufung fuer den deutschen Markt
        steam_de = ratings.get("steam_germany") or {}
        rating = steam_de.get("rating")
        if rating not in (None, ""):
            suffix = " (generiert)" if steam_de.get("rating_generated") in (1, "1", True) else ""
            return str(rating), "Steam-DE" + suffix
    
        required = data.get("required_age")
        if required not in (None, "", 0, "0"):
            return str(required), "required_age"
    
        return "", ""
    
    
    def extract_categories(data):
        ids = set()
        for cat in data.get("categories") or []:
            try:
                ids.add(int(cat.get("id")))
            except (TypeError, ValueError):
                continue
        labels = [CATEGORY_LABELS[i] for i in sorted(ids) if i in CATEGORY_LABELS]
        return ids, labels
    
    
    def sort_key(row):
        """Nach Freigabe aufsteigend, Unbekanntes ans Ende, dann alphabetisch."""
        raw = row["USK"]
        try:
            rating = int(raw)
        except (TypeError, ValueError):
            rating = 999
        return (rating, row["Name"].lower())
    
    
    # ------------------------------------------------------------------------- Main
    
    def build_rows(games, cache, args):
        rows = []
        total = len(games)
        fetched = 0
    
        for index, game in enumerate(sorted(games, key=lambda g: g.get("name", "")), 1):
            appid = game.get("appid")
            name = game.get("name") or f"App {appid}"
            key = str(appid)
    
            if key in cache:
                data = cache[key]
            else:
                print(f"[{index}/{total}] {name}", file=sys.stderr)
                data = get_app_details(appid, cc=args.cc, lang=args.lang)
                cache[key] = data            # auch None cachen, spart Wiederholungen
                fetched += 1
                if fetched % 25 == 0:
                    save_cache(args.cache, cache)
                time.sleep(args.delay)
    
            if not data:
                rows.append({
                    "AppID": appid, "Name": name, "USK": "", "Quelle": "nicht abrufbar",
                    "Koop": "", "Features": "", "Spielzeit_h": round(game.get("playtime_forever", 0) / 60, 1),
                    "Store": STORE_PAGE.format(appid),
                })
                continue
    
            if args.games_only and data.get("type") != "game":
                continue
    
            rating, source = extract_age_rating(data)
            cat_ids, labels = extract_categories(data)
    
            rows.append({
                "AppID": appid,
                "Name": data.get("name") or name,
                "USK": rating,
                "Quelle": source,
                "Koop": "ja" if cat_ids & COOP_CATEGORY_IDS else "",
                "Features": ", ".join(labels),
                "Spielzeit_h": round(game.get("playtime_forever", 0) / 60, 1),
                "Store": STORE_PAGE.format(appid),
            })
    
        return rows
    
    
    def apply_filters(rows, args):
        out = rows
        if args.only_coop:
            out = [r for r in out if r["Koop"] == "ja"]
        if args.max_usk is not None:
            keep = []
            for row in out:
                try:
                    value = int(row["USK"])
                except (TypeError, ValueError):
                    if args.include_unrated:
                        keep.append(row)
                    continue
                if value <= args.max_usk:
                    keep.append(row)
            out = keep
        return out
    
    
    def load_cache(path):
        p = Path(path)
        if p.is_file():
            try:
                return json.loads(p.read_text(encoding="utf-8"))
            except (json.JSONDecodeError, OSError):
                print("Cache unlesbar, wird neu aufgebaut.", file=sys.stderr)
        return {}
    
    
    def save_cache(path, cache):
        try:
            Path(path).write_text(json.dumps(cache), encoding="utf-8")
        except OSError as exc:
            print(f"Cache konnte nicht geschrieben werden: {exc}", file=sys.stderr)
    
    
    def write_csv(path, rows):
        fields = ["AppID", "Name", "USK", "Quelle", "Koop", "Features", "Spielzeit_h", "Store"]
        # utf-8-sig, damit Excel die Umlaute nicht zerlegt
        with open(path, "w", newline="", encoding="utf-8-sig") as fh:
            writer = csv.DictWriter(fh, fieldnames=fields, delimiter=";")
            writer.writeheader()
            writer.writerows(rows)
    
    
    def parse_args(argv=None):
        ap = argparse.ArgumentParser(description="Steam-Bibliothek mit USK-Freigaben als CSV.")
        ap.add_argument("--key", required=True, help="Steam Web-API-Key")
        ap.add_argument("--steamid", required=True, help="SteamID64 (17-stellig)")
        ap.add_argument("--out", default="steam_usk.csv", help="Ziel-CSV")
        ap.add_argument("--cache", default="steam_appdetails_cache.json", help="Cache-Datei")
        ap.add_argument("--delay", type=float, default=1.6, help="Sekunden zwischen Store-Abfragen")
        ap.add_argument("--cc", default="de", help="Store-Region (Standard: de)")
        ap.add_argument("--lang", default="german", help="Store-Sprache")
        ap.add_argument("--max-usk", type=int, default=None, metavar="N",
                        help="Nur Titel mit Freigabe <= N (z.B. 6)")
        ap.add_argument("--include-unrated", action="store_true",
                        help="Titel ohne Freigabe trotz --max-usk mit ausgeben")
        ap.add_argument("--only-coop", action="store_true",
                        help="Nur Titel mit Koop-/Splitscreen-/Remote-Play-Kategorie")
        ap.add_argument("--games-only", action="store_true", default=True,
                        help="DLC, Tools und Soundtracks ausblenden (Standard)")
        ap.add_argument("--all-types", dest="games_only", action="store_false",
                        help="Auch DLC/Tools/Soundtracks aufnehmen")
        return ap.parse_args(argv)
    
    
    def main(argv=None):
        args = parse_args(argv)
    
        games = get_owned_games(args.key, args.steamid)
        print(f"{len(games)} Eintraege in der Bibliothek.", file=sys.stderr)
    
        cache = load_cache(args.cache)
        print(f"{len(cache)} Eintraege aus dem Cache.", file=sys.stderr)
    
        try:
            rows = build_rows(games, cache, args)
        finally:
            save_cache(args.cache, cache)
    
        rows = apply_filters(rows, args)
        rows.sort(key=sort_key)
        write_csv(args.out, rows)
    
        unrated = sum(1 for r in rows if not r["USK"])
        print(f"\n{len(rows)} Zeilen geschrieben nach {args.out} "
              f"({unrated} davon ohne Freigabe-Angabe).", file=sys.stderr)
        return 0
    
    
    if __name__ == "__main__":
        sys.exit(main())

    So speicherst du es: Button „Kopieren“ oben rechts im Code-Block anklicken, einen Texteditor öffnen, einfügen und die Datei als steam_usk_report.py speichern. Unter Windows beim Speichern darauf achten, dass nicht versehentlich .py.txt daraus wird.

    Schritt 1: Python installieren

    Falls noch nicht vorhanden: Python 3 von python.org herunterladen. Unter Windows bei der Installation unbedingt den Haken bei „Add python.exe to PATH“ setzen, sonst findet die Eingabeaufforderung den Befehl später nicht.

    Schritt 2: Steam-Web-API-Key holen

    Den Schlüssel bekommst du auf der Steam-Web-API-Key-Seite. Als Domain reicht localhost. Zwei Voraussetzungen: Dein Konto braucht den Steam Guard Mobile Authenticator, und eingeschränkte Konten ohne Käufe bekommen keinen Key.

    Behandle den Key wie ein Passwort. Nicht in Screenshots, nicht in Foren, nicht in Discord, nicht fest ins Skript schreiben. API-Keys sind ein beliebtes Ziel von Betrügern auf Steam. Wenn dich jemand „für eine Verifizierung“ nach deinem Key fragt: Das ist Betrug. Falls er doch mal rausgerutscht ist, kannst du ihn auf derselben Seite widerrufen und dir einen neuen holen.

    Schritt 3: SteamID64 herausfinden

    Das Skript braucht deine SteamID64, eine 17-stellige Zahl. Am schnellsten geht das über steamid.io: Link zu deinem Steam-Profil einfügen, auf „lookup“ klicken und die Zahl bei steamID64 kopieren.

    Schritt 4: Spieldetails kurz öffentlich stellen

    Steam gibt die Bibliothek nur heraus, wenn deine Spieldetails öffentlich sind. Sonst kommt eine leere Liste zurück. Der Weg: Steam → dein Profil → Profil bearbeiten → Privatsphäre-Einstellungen → „Spieldetails“ auf „Öffentlich“. Damit das geht, muss auch „Mein Profil“ auf „Öffentlich“ stehen.

    Mein Tipp: Nur für den Lauf umstellen und danach wieder zurück. Deine Bibliothek muss nicht dauerhaft für alle sichtbar sein.

    Schritt 5: Skript starten

    Eingabeaufforderung oder Terminal im Ordner mit dem Skript öffnen. Für die komplette Bibliothek:

    python steam_usk_report.py --key DEIN_KEY --steamid DEINE_STEAMID64 --out steam_alle.csv

    Oder direkt nur die Spiele bis USK 6:

    python steam_usk_report.py --key DEIN_KEY --steamid DEINE_STEAMID64 --max-usk 6 --out kinderspiele.csv

    Geduld beim ersten Lauf. Steam lässt nur rund 200 Shop-Abfragen in fünf Minuten zu. Bei meinen 1.300 Spielen hat der erste Durchlauf knapp eine Stunde gedauert. Das Skript speichert aber alles in einer Cache-Datei – jeder weitere Lauf, egal mit welchem Filter, ist in Sekunden durch.

    Die Filter

    • --max-usk 6 – nur Spiele bis zur angegebenen Freigabe
    • --only-coop – nur Spiele mit Koop, Splitscreen oder Remote Play Together
    • --include-unrated – Spiele ohne Freigabe trotz Altersfilter mit ausgeben
    • --all-types – auch DLCs, Soundtracks und Tools aufnehmen (standardmäßig fliegen die raus)

    Was in der Tabelle steht

    Pro Spiel eine Zeile: Name, Freigabe, Quelle der Freigabe, ob Koop möglich ist, welche Mehrspieler-Arten es gibt, deine bisherige Spielzeit und ein Link zur Shopseite. Sortiert ist nach Freigabe, die niedrigste zuerst. Wer zusammen spielen will, schaut in der Spalte „Features“ nach Splitscreen-Koop und Remote Play Together.

    Ein Blick unter die Haube

    Der interessanteste Teil ist die Frage, woher die Freigabe kommt. Das Skript arbeitet eine feste Reihenfolge ab und nimmt die erste Angabe, die es findet:

    def extract_age_rating(data):
        ratings = data.get("ratings") or {}
    
        # 1. USK-Label, vom Hersteller bei Steam eingetragen
        usk = (ratings.get("usk") or {}).get("rating")
        if usk not in (None, ""):
            return str(usk), "USK"
    
        # 2. Valves eigene Selbsteinstufung für Deutschland
        steam_de = ratings.get("steam_germany") or {}
        rating = steam_de.get("rating")
        if rating not in (None, ""):
            suffix = " (generiert)" if steam_de.get("rating_generated") in (1, "1", True) else ""
            return str(rating), "Steam-DE" + suffix
    
        # 3. Allgemeines Mindestalter aus dem Shop
        required = data.get("required_age")
        if required not in (None, "", 0, "0"):
            return str(required), "required_age"
    
        return "", ""

    So siehst du in der Tabelle, ob eine Zahl als USK-Freigabe angegeben ist oder nur von Steam generiert wurde. Diese Unterscheidung fehlt mir in den Shops selbst.


    Moment mal: Warum nutze ich beim Streaming Kinderprofile – und an der Konsole nicht?

    Beim Schreiben dieses Beitrags ist mir selbst etwas aufgefallen. Bei Netflix, Disney+ und Prime Video haben wir Kinderprofile, ganz selbstverständlich. An der PlayStation und an der Steam Machine nicht. Warum eigentlich?

    Weil ich an der Konsole der Einzige bin, der spielt. Die Kinder sitzen daneben oder spielen mit, aber den Controller halte ich. Und ich würde auch gar nicht wollen, dass sie dort allein loslegen. Beim Handy ist es genauso: Das ist kein Kinderhandy, sondern meins, ohne Kinderschutz. Wenn ich bei YouTube ein Video anmache, entscheide ich, ob die Kinder das sehen können – weil ich das Handy in der Hand halte.

    Da stecken also zwei ganz verschiedene Dinge drin:

    • Schutz: Das Kind bedient selbst, und die Plattform soll verhindern, dass es an Ungeeignetes kommt. Dafür ist ein Kinderprofil genau das richtige Werkzeug
    • Orientierung: Ich bediene selbst, in meinem eigenen Profil, und will schnell sehen, was für die Kinder passt. Die Frage ist nicht „Was darf mein Kind allein?“, sondern „Was suche ich für uns aus?“

    Prime Video zeigt, dass Orientierung auch ohne Kinderprofil geht: Ich bin in meinem eigenen Profil, wähle im Kids-Bereich einen Titel an – und die Freigabe steht direkt da. Genau so etwas wünsche ich mir für Spiele.

    Und ja, ich hinterfrage mich da auch selbst. Unsere Kinder werden älter und wollen bald selbst bedienen. Spätestens dann bekommen sie auch an der Konsole ein eigenes Profil – und dann filtert die Plattform ja doch für sie. Vielleicht bin ich mit meinem Wunsch also genau in dieser Übergangsphase. Oder vielleicht bin ich am Ende sogar allein damit. Das würde mich ehrlich interessieren.

    Was eine Freigabe nicht kann

    Damit kein falscher Eindruck entsteht: Eine Altersfreigabe sagt mir nicht, ob ein Spiel gut ist. Nicht, ob es pädagogisch sinnvoll ist. Nicht, ob es sich zu zweit spielen lässt. Und auch nicht, ob es ein gutes erstes Spiel ist, um einem kleinen Kind selbst den Controller in die Hand zu geben.

    Das alles finden wir weiterhin selbst heraus – und die Zeit nehmen wir uns gern. Aber der Filter wäre der Anfang. Statt tausend einzelner Shopseiten.

    Liebe Plattformen: Das muss einfacher gehen

    Als Papa will ich keine Skripte schreiben müssen, um herauszufinden, welche Spiele USK 0 haben. Und für die PlayStation könnte ich es nicht mal. Ich erwarte, dass die Plattformen das direkt anbieten:

    1. Ein Filter nach Altersfreigabe – im Store und in der eigenen Bibliothek, so wie in der Xbox-App
    2. Ein kleines Alters-Icon auf der Kachel – wie auf der Hülle im Laden
    3. Eine klare Kennzeichnung, ob eine Freigabe von der USK geprüft oder nur selbst eingestuft ist

    Ich glaube, es gibt einige Eltern, die mit ihren Kindern auf der Couch sitzen und genau diese Frage haben. Falls ich mich irre: Sagt es mir.

    Hinweis: Das Skript ist ein privates Hilfsmittel ohne Gewähr und steht in keiner Verbindung zu Valve, Sony, Microsoft, Nintendo oder der USK. Es liest nur öffentlich verfügbare Shop-Daten und deine eigene Bibliothek.

    Wie macht ihr das? Wie findet ihr Spiele, die für eure Kinder freigegeben sind – und kennt ihr einen Weg für die PlayStation, den ich übersehen habe? Schreibt es mir in die Kommentare.

  • Vom Govee zum Hue Flux Gradient: Umbau, Teileliste und was es gekostet hat

    Vom Govee zum Hue Flux Gradient: Umbau, Teileliste und was es gekostet hat

    Im Beitrag über Govee, Tuya und Hue habe ich erklärt, warum ich im Wohnzimmer vom Govee-Streifen auf Philips Hue gewechselt bin. Hier geht es um das Wie: wie der Umbau abgelaufen ist, warum ich vorher zwei Stunden mit dem Zollstock verbracht habe, wo gelötet werden musste – und was am Ende auf der Rechnung stand.

    Vorweg: Das ist kein Nachmittagsprojekt. Wer glaubt, man klebt einen Hue-Streifen einfach in die Decke, unterschätzt den Teil, den keine Produktseite erwähnt.

    Die Ausgangslage

    In der abgehängten Wohnzimmerdecke läuft rundherum eine Stuckleiste, in der die indirekte Beleuchtung sitzt. Vorher lag dort der 30-Meter-Streifen von Govee.

    Die Ecke der abgehängten Wohnzimmerdecke mit der Stuckleiste, in der später der LED-Streifen verlegt wird
    Die Stuckleiste rundherum – hier hinein kommt der Streifen.
    Blick entlang der Deckenkante mit der leeren Stuckleiste vor dem Umbau
    Das Wohnzimmer mit dem alten Govee-LED-Streifen, die Decke ist rundherum in einem einzigen violetten Ton beleuchtet
    Der Govee-Streifen im Betrieb: eine Farbe für den ganzen Raum.

    Warum man das nicht einfach draufklebt

    Der entscheidende Unterschied zum Govee-Streifen: Hue-Streifen lassen sich nur an markierten Stellen schneiden. Bei meinem Modell sitzt alle 17 Zentimeter eine solche Schnittmarkierung. Dazwischen geht nichts – man kann nicht auf den Zentimeter genau kürzen.

    Das klingt harmlos, bis man eine Wand hat, die 39 Zentimeter misst. Zwei Segmente ergeben 34 Zentimeter, drei ergeben 51. Beides passt nicht. Genau deshalb muss man vorher rechnen statt nachher zu improvisieren.

    Handskizze des Wohnzimmergrundrisses mit farbig eingezeichneten Wänden und notierten Maßen für die LED-Planung
    Erst der Zollstock, dann der Lötkolben: jede Wand einzeln vermessen und aufgezeichnet.

    Ich habe also jede Wand einzeln ausgemessen, aufgezeichnet und dann durchgerechnet, wie viele 17-Zentimeter-Segmente auf welche Wand passen und wie groß die Abweichung wird. Die Rechnerei habe ich mir dabei von einer KI gegenprüfen lassen – gebaut haben wir dann selbst.

    Die Rechnung, Wand für Wand

    WandReale LängeLED-SchnittlängeSegmente à 17 cmDifferenzVerbinder
    A4,751 m4,76 m28+0,9 cmEck-Verbinder
    B3,915 m3,91 m23−0,5 cmEck-Verbinder
    C0,390 m0,34 m2−5,0 cmFlex-Verbinder
    D0,433 m0,51 m3+7,7 cmFlex-Verbinder
    E0,382 m0,34 m2−4,2 cmEck-Verbinder
    F1,873 m1,87 m11−0,3 cmEck-Verbinder
    G4,774 m3,27 m19Rest des ersten StreifensÜbergang auf Streifen 2

    An den langen Wänden geht die Rechnung erstaunlich gut auf – bei A, B und F liegt die Abweichung unter einem Zentimeter. Das sieht später niemand.

    Die Nische war das Problem

    Schwierig wurde es bei den drei kurzen Wänden der Nische. Bei Wand C fehlen 5 Zentimeter, bei Wand D sind es 7,7 Zentimeter zu viel. Auf 39 beziehungsweise 43 Zentimetern Wandlänge fällt so etwas sofort auf.

    Die Lösung liegt in der Wahl der Verbinder, und die ist der eigentliche Trick am ganzen Umbau:

    • Starre Eck-Verbinder kommen an die Ein- und Ausgänge der Nische. Dort, wo die Maße ohnehin fast perfekt passen, sorgen sie für eine saubere 90-Grad-Kante.
    • Flexible Verbinder mit Kabel kommen innerhalb der Nische zum Einsatz. Wo der Streifen zu kurz ist, überbrückt das Kabel die fehlenden Zentimeter. Wo er zu lang ist, verschwindet der Überschuss als kleine Schlaufe in der Leiste.

    Ohne die Flex-Verbinder hätte der Streifen an diesen Stellen entweder gespannt oder geknickt – und ein geknickter LED-Streifen ist ein kaputter LED-Streifen. Das weiß ich aus Erfahrung.

    Detailaufnahme eines Verbinders zwischen zwei Abschnitten des Hue-Lightstrips in der Stuckleiste
    Nahaufnahme der Kabelverbindung zwischen zwei LED-Streifen-Abschnitten in der Deckenleiste
    So sitzt die Verbindung später in der Leiste – von unten unsichtbar.

    Löten statt stopfen

    Die mitgelieferten Verbindungskabel waren an mehreren Stellen deutlich länger als nötig. Statt den Überschuss irgendwo zu verstauen, haben wir die Kabel gekürzt: aufgetrennt, abisoliert, auf die passende Länge gebracht, verlötet und wieder isoliert.

    Wichtig dabei: Die Stecker und die Elektronik der Hue-Komponenten haben wir nicht angefasst. Geöffnet wurde nichts, gelötet wurde ausschließlich an den Verbindungskabeln dazwischen. Das ist der Unterschied zwischen „angepasst“ und „Garantie verloren“.

    Wer sich das nicht zutraut: Man kann die überschüssige Kabellänge auch einfach in der Leiste verstauen. Sieht niemand, kostet nur Platz. Wir wollten es sauber haben.

    Das Ergebnis

    Die beleuchtete Deckenecke mit dem Hue-Lightstrip, der Farbverlauf geht von Violett zu Blau
    Der Hue-Lightstrip in blauem Licht, die Kabelschlaufe des Flex-Verbinders ist in der Leiste verstaut
    Hier sieht man die Schlaufe des Flex-Verbinders – von unten fällt davon nichts auf.
    Blick in die ausgeleuchtete Deckenecke mit dem verlegten Hue-Lightstrip
    Indirekte Beleuchtung an der Wohnzimmerdecke mit dem Philips Hue Flux Gradient, der Streifen läuft von Magenta über Violett bis Cyan
    Fertig: ein einziger Streifen, mehrere Farben gleichzeitig.
    Der Hue Flux Gradient zieht sich rundherum um die abgehängte Wohnzimmerdecke, rechts Magenta, zur Raummitte hin Cyan
    Der Verlauf folgt dem Raum – genau das konnte der Govee-Streifen trotz RGBIC-Versprechen nicht.

    Was es gekostet hat

    Zum Einsatz kamen drei Streifen: ein 5-Meter-Grundset und zwei 10-Meter-Verlängerungen. Der Raum brauchte rund 25 Meter, verteilt auf zwei Stränge. Dazu die Verbinder, ohne die der ganze Aufbau nicht funktioniert hätte.

    BauteilMengePreis
    Philips Hue Flux 5 m Lightstrip (Grundset, 1.200 lm)1×99,99 €
    Hue Flux 10 m Lightstrip-Verlängerung1×189,99 €
    Hue Flux 10 m Lightstrip-Verlängerung (zweiter Strang)1×150,00 €
    Hue Flux Eckverbinder 90°, 4er-Pack1×19,99 €
    Hue Flux Flex-Verbinder 50 cm, 4er-Pack1×29,99 €
    Summe 489,96 €

    Und jetzt der Vergleich, der wehtut: Der 30-Meter-Streifen von Govee, der vorher an derselben Stelle lag, hat mich 49,99 Euro gekostet. Fünf Meter mehr Länge für ein Zehntel des Preises.

    Daran gibt es nichts schönzureden. Wer nur auf den Meterpreis schaut, muss zu Govee greifen – alles andere wäre unvernünftig.

    Der Haken an der Rechnung ist die Zeit. Der Govee-Streifen fing nach etwa einem Jahr an, in einzelnen Ecken zu flackern. Rechnet man den Preis auf die tatsächliche Nutzungsdauer um, verschiebt sich das Bild. Und das ist bei mir kein Einzelfall geblieben: Bei den Govee-Wandleuchten im Arbeitszimmer war nach vier Monaten die erste LED hinüber.

    Was in der Tabelle nicht steht, aber dazugehört: Die 50 Euro für die Verbinder hatte ich vorher nicht auf dem Zettel. Man plant den Streifen, rechnet mit dem Streifenpreis – und merkt erst beim Vermessen, dass man ohne Eck- und Flex-Verbinder um keine einzige Ecke kommt. Wer so einen Umbau plant, sollte die von Anfang an einkalkulieren.

    Hinweis in eigener Sache: Das 5-Meter-Grundset und die erste 10-Meter-Verlängerung wurden mir im Rahmen eines Produkttests kostenlos zur Verfügung gestellt. Die zweite Verlängerung und beide Verbinder-Sets habe ich selbst bezahlt. Ich rechne die Testprodukte hier trotzdem mit ihren regulären Preisen auf, damit du siehst, was das Projekt tatsächlich kostet. Nebenbei: „Kostenlos“ heißt auch bei Testprodukten nicht, dass gar nichts anfällt – auf den Warenwert werden Steuern fällig. Eine Bezahlung habe ich nicht erhalten, und der Hersteller hatte keinen Einfluss auf diesen Beitrag.

    Mein Fazit zum Umbau

    Der Preisunterschied zwischen den beiden Systemen ist erheblich, und ich will nicht so tun, als wäre er egal. Aber der Aufwand ist es genauso: Beim Govee-Streifen rollt man 30 Meter aus und klebt sie an. Beim Hue-Aufbau habe ich vorher jede Wand vermessen, durchgerechnet, die Verbinder geplant und am Ende gelötet.

    Ob sich das lohnt, hängt davon ab, was du willst. Für einen Partykeller oder eine Werkstatt würde ich immer den günstigen Streifen nehmen. Fürs Wohnzimmer, in dem man jeden Abend sitzt, war es die Sache wert – aber nicht, weil Hue draufsteht, sondern weil das Licht ruhig ist und der Verlauf dem Raum folgt.

    Habt ihr auch schon mal LED-Streifen um Ecken verlegt? Und wie habt ihr das mit den krummen Wandmaßen gelöst? Schreibt es mir in die Kommentare.

  • Govee, Tuya, Hue: Warum in meiner Decke jetzt ein Shelly steckt

    Govee, Tuya, Hue: Warum in meiner Decke jetzt ein Shelly steckt

    Es gibt diesen einen Moment, an dem Smart Home aufhört, smart zu sein. Bei mir ist das immer derselbe: Ich komme ins Arbeitszimmer, drücke den Schalter – und nichts passiert. Die Deckenlampe bleibt aus. In der App steht sie als erreichbar. Sie antwortet also. Sie tut nur nichts.

    Inzwischen hängt deshalb ein Shelly in meiner Decke. Nicht, weil ich die Lampe noch smarter machen wollte. Sondern damit ich ihr den Strom wegnehmen kann, wenn sie sich wieder aufgehängt hat.

    Das ist kein Govee-Verriss. Ich habe fünf Govee-Geräte im Haus und die meisten laufen. Aber ich habe daneben rund sechzig Philips-Hue-Leuchten und ein paar billige Lampen mit Tuya-Chip – und beim direkten Vergleich fällt ein Muster auf, das nichts mit Lichtqualität zu tun hat, sondern mit der Frage: Wie weit muss ein Schaltbefehl eigentlich reisen?

    Das Wichtigste vorab

    • Das Problem: zwei Govee-Deckenlampen hängen sich regelmäßig auf – erreichbar, aber taub
    • Der Workaround: Shelly davor, um hart stromlos zu schalten
    • Der eigentliche Unterschied: nicht Helligkeit oder Farbe, sondern lokal gegen Cloud
    • Der Beleg: 1.404 Zustandsabfragen in elf Stunden, davon 0 über mein lokales Netz
    • Und ja, auch Qualität: beim LED-Streifen war der Unterschied krass
    • Fairerweise: Govee kann Dinge, die Hue nicht kann – dazu unten mehr

    Was bei mir steht

    Damit du das einordnen kannst – das ist meine Ausgangslage, kein Labortest.

    Govee

    • Deckenleuchte RGBIC 48,5 W (H60A6) im Arbeitszimmer
    • Square Ceiling Light (H60A4) im Waschmaschinenraum
    • Glide Wandleuchten RGBIC, 6 Stück (H610A) hinter dem Schreibtisch
    • RGBIC LED-Streifen 30 m (H618F) – hing früher im Wohnzimmer
    • RGBWIC String Lights (H70C4) am Weihnachtsbaum

    Eingebunden über die Community-Bridge govee2mqtt. Dass ich überhaupt eine Community-Lösung brauche, ist schon Teil der Geschichte: Ich habe vorher alle offiziellen Wege probiert, und die waren schlechter.

    Philips Hue

    Rund sechzig Leuchten quer durchs Haus – Centura-Spots in den Decken, Fugato-Strahler, Infuse-Deckenleuchten, Xamento im Bad, Lightstrips in der Küche, Play-Leuchten hinterm Fernseher, Resonate draußen. Alles hängt an einer Hue Bridge, die wiederum in Home Assistant eingebunden ist.

    Tuya

    Ein paar namenlose Lampen mit Tuya-Chip, die typischen Dreißig-Euro-Teile aus dem Onlinehandel. Die nehme ich hier bewusst mit rein, weil sie exakt dasselbe Verhalten zeigen wie meine Govee-Deckenlampen. Genau das hat mich überhaupt erst auf die Spur gebracht, dass ich es hier nicht mit einem Markenproblem zu tun habe.

    Das Symptom: erreichbar, aber taub

    Beide Govee-Deckenlampen zeigen dasselbe Verhalten. Sie gehen nicht an. Kein Flackern, kein Verzögern, kein halbes Reagieren – einfach nichts. Die Govee-App meldet währenddessen brav, dass die Lampe online ist. Home Assistant schickt den Befehl raus und bekommt keinen Widerspruch.

    Es fühlt sich an, als hätte sich die Lampe intern aufgehängt und würde nach außen weiter freundlich winken. Und es gibt genau eine Lösung, die zuverlässig hilft: Strom weg, Strom wieder dran.

    Bei den Tuya-Lampen dasselbe Spiel. Auch da hilft am Ende nur der harte Neustart.

    Der Blick ins Log – und da wurde es interessant

    Weil Vermutungen langweilig sind, habe ich mir elf Stunden Protokoll der Govee-Bridge angesehen. Von morgens um halb acht bis abends um kurz vor sieben. In dieser Zeit hat die Bridge 1.404 Mal den Zustand meiner Govee-Geräte abgefragt. Davon liefen über mein lokales Netz: null.

    So sieht so eine Abfrage aus – Geräte-IDs habe ich geschwärzt:

    [2026-09-06T07:36:51 INFO govee::service::state]
      requesting update via Platform API
      H5044_XXXX (15:96:XX:XX:XX:XX:XX:XX H5044)
      DeviceState { on: false, brightness: 0,
                    source: "AWS IoT API",
                    updated: 2026-09-05T22:18:33Z }

    Zwei Dinge stecken in diesen fünf Zeilen. Erstens: Platform API und AWS IoT heißt, die Antwort kommt von Govees Servern, nicht aus meinem Wohnzimmer. Zweitens, und das ist der eigentliche Witz: Die Abfrage läuft morgens um 7:36 Uhr – und liefert einen Zustand, der auf 22:18 Uhr am Vorabend datiert ist. Neun Stunden alt.

    Diese Zeile wiederholt sich im Log über tausend Mal, alle dreißig Sekunden, immer mit demselben Zeitstempel. Tausend Anfragen quer über den Atlantik für eine Information, die sich nicht verändert.

    Lokal ist nur die halbe Miete

    Govee hat durchaus eine lokale Schnittstelle, und die Bridge nutzt sie auch. Aber nur in eine Richtung – zum Schalten. Und selbst da nicht durchgängig:

    [2026-09-06T08:19:00 INFO govee::service::state]
      Using LAN API to set Square Ceiling Light (H60A4) light power state
    
    [2026-09-06T10:55:57 INFO govee::service::state]
      Using Platform API to control Square Ceiling Light (H60A4)

    Dieselbe Lampe, zwei verschiedene Wege. Von 64 Befehlen an dieses Gerät gingen nur 9 lokal raus, 55 über die Cloud. Bei den Glide-Leuchten praktisch alles über die Cloud. Nur die Arbeitszimmerlampe schaltet überwiegend lokal, 8 von 9 Befehlen.

    Und dann ist da noch das hier:

    [2026-09-06T07:39:26 INFO govee::commands::serve]
      Querying platform API for device list
    
    [2026-09-06T07:42:18 INFO govee::commands::serve]
      Querying undocumented API for device + room list

    Undocumented API. Die Bridge muss neben der offiziellen Schnittstelle eine zweite, reverse-engineerte Hintertür mitbenutzen, weil die offizielle allein nicht ausreicht. In elf Stunden: 68 Abrufe über die eine, 67 über die andere.

    Im Klartext heißt das alles: Fällt mein Internet aus, kann ich einen Teil meiner Govee-Lampen noch schalten – weiß aber bei keiner einzigen mehr, ob sie an ist.

    Warum Hue dieses Problem nicht hat

    Hue funkt über Zigbee. Das ist ein eigener Funkstandard, kein WLAN. Der Befehl geht von Home Assistant an die Hue Bridge, von dort per Funk an die Lampe – und die Lampe funkt zurück, was sie gerade tut. Alles im Umkreis weniger Meter.

    Die Leuchten bilden dabei ein Mesh: Jede fest verbaute Lampe ist gleichzeitig Repeater für die nächste. Bei sechzig Leuchten habe ich praktisch überall im Haus Empfang, ohne dafür irgendwas aufgestellt zu haben.

    Und ja – das funktioniert auch ohne Internet, und zwar nicht nur in der Hue-App. Die Home-Assistant-Integration spricht die Bridge über deren lokale Schnittstelle an. Bei den quadratischen Bridges der zweiten Generation schickt die Bridge Zustandsänderungen sogar von sich aus an Home Assistant, über einen lokalen Event-Stream. Meine Wandpanels würden bei einem Internetausfall also weiterlaufen, weil die ganze Kette – Panel, Home Assistant, Bridge, Lampe – im Haus bleibt.

    Damit Hue hier nicht als Heiliger dasteht: Signify hat 2023 angekündigt, Nutzerkonten verpflichtend zu machen und Daten in die eigene Cloud zu laden. Die lokale Steuerung sollte davon unberührt bleiben – ob das so bleibt, weiß niemand. Der Unterschied ist trotzdem grundsätzlich: Bei Hue ist die Cloud eine Schicht obendrauf. Bei Govee ist sie der Weg.

    Die drei Systeme nebeneinander

    WasWie es funktCloud nötig?Internet weg
    Philips HueZigbee-Funk zur Bridge, Mesh-NetzNur für Fernzugriff über Hue und KontoLäuft komplett weiter
    Govee mit govee2mqttWLAN, lokal nur zum SchaltenKonto und API-Key immer nötigTeils schaltbar, Zustand unbekannt
    Tuya (Standard)WLAN zur Cloud und zurückFür allesTot

    Bei Tuya gibt es mit LocalTuya lokale Wege, aber dafür musst du dir die Geräteschlüssel aus der Cloud herausziehen. Das ist Bastelei für Leute, die Spaß daran haben – keine Lösung für jemanden, der einfach Licht anmachen will.


    Und dann ist da noch das Licht selbst

    Bis hierhin ging es nur um Technik unter der Haube. Aber es gibt auch einen Unterschied, den man schlicht sieht – und beim LED-Streifen im Wohnzimmer war der extrem.

    An derselben Stelle, an derselben Decke, hing erst der 30-Meter-Streifen von Govee und danach ein Hue Flux Gradient. Der Unterschied war Tag und Nacht: deutlich heller, sattere Farben, und vor allem ein ruhiges Licht. Beim Govee-Streifen flackerte es nach etwa einem Jahr in einzelnen Ecken, besonders beim Dimmen. Beim Hue ist das Licht einfach da und steht still.

    Dazu kommt, dass der Hue-Streifen mehrere Farben gleichzeitig darstellen kann und der Verlauf dem Raum folgt. Der Govee-Streifen konnte in der Praxis eine Farbe für alles – trotz RGBIC-Versprechen. Die Bilder vom Vorher-Nachher lege ich in einem eigenen Beitrag nebeneinander, in dem ich auch den Umbau und die Kosten aufschlüssele. Wie der Rest meines Hauses aufgebaut ist, steht unter Mein Setup.

    Und die Frage, wie lange es hält

    Bei den Glide-Wandleuchten ist nach vier Monaten echter Nutzung eine LED oben ausgefallen. Vorher lagen sie ein paar Monate nur zum Ausprobieren da. Vier Monate sind keine Lebensdauer, das ist eine Probefahrt.

    Zwei Govee Glide Lively Wandleuchten nebeneinander: die linke leuchtet mit rosa Verfärbung im oberen Bereich, die rechte gleichmäßig weiß
    Links die betroffene Leuchte mit dem rosa verfärbten oberen Segment, rechts wie es aussehen sollte.
    Nahaufnahme der defekten Govee Glide Lively Wandleuchte, bei der das obere Segment deutlich rosa statt weiß leuchtet
    Aus der Nähe wird der Farbstich im oberen Drittel noch deutlicher.

    Zum Vergleich: Ich benutze Hue seit der ersten Generation. Von damals hängen bei mir immer noch Glühbirnen, die bis heute funktionieren. Kaputt gegangen ist in all den Jahren genau ein einziger Hue-Streifen – und den habe ich selbst geknickt, weil ich ihn als Hintergrundbeleuchtung um einen Fernseher gelegt habe. Das war meine Entscheidung und mein Fehler, dafür kann Philips nichts.

    Was Govee wirklich gut macht

    Jetzt der faire Teil, denn den gibt es.

    Der Preis ist eine andere Liga. Ich habe 30 Meter RGBIC-Streifen für ungefähr das bezahlt, was Hue für zwei Meter aufruft. Wer eine Partykellerdecke oder einen Hobbyraum bunt machen will, kommt bei Hue schlicht nicht hin.

    Die Deckenlampe kann Vorder- und Hintergrundlicht getrennt schalten. Ein warmes Hauptlicht und dahinter ein farbiger Rand, unabhängig voneinander steuerbar – das habe ich bei Hue so nicht. Für Streaming-Hintergründe richtig praktisch.

    Die Govee-Deckenleuchte H60A6 an der Arbeitszimmerdecke mit eingeschaltetem Haupt- und Hintergrundlicht
    Beide Lichtebenen an: das helle Hauptlicht in der Mitte, außen der zusätzliche Ring.
    Dieselbe Govee-Deckenleuchte, bei der nur der äußere Leuchtring aktiv ist, während die Mitte dunkel bleibt
    Nur der äußere Ring – die Mitte bleibt dunkel. Das lässt sich in Home Assistant getrennt schalten.
    Dieselbe Govee-Deckenleuchte, bei der nur das innere Hauptlicht leuchtet und der äußere Ring dunkel bleibt
    Und umgekehrt: nur das Hauptlicht, der Ring aus. Genau das ist der Punkt, an dem Govee etwas kann, was meine Hue-Leuchten nicht können.
    Die Geräteseite der Govee-Deckenleuchte in Home Assistant mit den getrennten Schaltern für Background Light Toggle und Main Light Toggle
    In Home Assistant liegen dafür zwei eigene Schalter bereit: Background Light und Main Light.

    Die Effekte sind ein eigenes Universum. Meine Glide-Leuchten haben 88 vorgefertigte Effekte, von Aurora über Lagerfeuer bis Musikvisualisierung. Hue bietet eine Handvoll. Wenn du Show willst, liefert Govee Show.

    Und wo es dann doch klemmt

    Die Segmente gibt es – nur nicht dort, wo ich sie brauche. In der Govee-App kann ich die Glide segmentweise einfärben, und das sieht auch richtig gut aus: oben warmes Orange, unten kühles Blau, alles auf einer Leuchte.

    Die Govee Glide Lively Wandleuchte leuchtet im oberen Bereich orange und im unteren Bereich blau
    Zwei Farben auf einer Leuchte – technisch kann das Gerät es also durchaus.
    Screenshot der Govee-App mit der Segmentsteuerung, in der einzelne Abschnitte der Leuchte separat eingefärbt werden können
    In der Govee-App gibt es dafür eine eigene Oberfläche mit Schiebereglern pro Segment.

    In Home Assistant hört der Spaß dagegen auf. Dort liegen zwar zwölf Segment-Schalter bereit, aber sie tun nichts. Ich kann sie anklicken, es passiert nichts. Die Funktion existiert im Gerät, sie kommt nur nicht durch die Schnittstelle – und damit ist sie für jede Automatisierung wertlos. Was ich nicht aus Home Assistant heraus schalten kann, kann ich auch nicht an einen Sonnenuntergang, einen Bewegungsmelder oder eine Szene hängen.

    Insgesamt erzeugen meine fünf Govee-Geräte 67 Einträge in Home Assistant – mehr als meine sechzig Hue-Leuchten zusammen. Ein guter Teil davon sind Schaltflächen, die versprechen, was das Gerät nicht hält.

    Die Geräteseite der Govee Glide Lively in Home Assistant mit einer langen Liste einzelner Segment-Schalter
    Eine einzige Leuchte, eine endlose Liste: Segment für Segment steht hier als eigener Schalter – anfassen lässt sich davon nichts.

    Mein Fazit

    Die Regel, die ich daraus mitgenommen habe, ist simpel: Je weiter der Schaltbefehl reisen muss, desto mehr Stellen gibt es, an denen er hängen bleiben kann.

    Bei Zigbee sind das ein paar Meter Funk. Bei Govee und Tuya geht es über deinen Router, deinen Provider, ein Rechenzentrum und wieder zurück. Jede dieser Stationen kann klemmen – und wenn das Gerät sich dann aufhängt, merkst du es nicht mal, weil die Cloud noch den alten Zustand von gestern Abend ausliefert.

    Deshalb mein praktischer Rat, und der gilt für Govee genauso wie für Tuya: Plane bei WLAN-Leuchten von Anfang an eine Möglichkeit ein, den Strom zu kappen. Ein Shelly hinter dem Schalter, eine schaltbare Steckdose, irgendwas. Nicht weil du es hoffentlich brauchst – sondern weil du es sicher brauchen wirst.

    Und wenn eine Lampe an einer Stelle hängt, an die du schlecht rankommst, oder wenn eine Automatisierung sich darauf verlassen muss, dass der Zustand stimmt: dann nimm Zigbee. Der Aufpreis kauft dir keine schöneren Farben. Er kauft dir Verlässlichkeit – und, wie meine Glühbirnen aus der ersten Generation zeigen, ziemlich viele Jahre.

    Meine Wertungen

    • Govee Deckenleuchte RGBIC (H60A6/H60A4): ⭐⭐ (2/5) – schönes Licht, aber eine Lampe, die einen Shelly zum Neustarten braucht, ist keine smarte Lampe
    • Govee Glide Wandleuchten (H610A): ⭐⭐ (2/5) – tolle Effekte, aber defekte LED nach vier Monaten und eine Segmentsteuerung, die nur in Govees eigener App funktioniert
    • Govee LED-Streifen 30 m (H618F): ⭐⭐ (2/5) – unschlagbarer Meterpreis, dafür flaue Farben und Flackern nach einem Jahr
    • Philips Hue (quer durchs Sortiment): ⭐⭐⭐⭐⭐ (5/5) – teuer, langweilig, funktioniert einfach

    Hinweis: Das hier ist mein persönlicher Erfahrungsbericht mit meinen eigenen Geräten – kein Labortest und keine Aussage über die Marken insgesamt. Deine Erfahrung kann eine völlig andere sein. Sobald ich Partnerlinks einsetze, kennzeichne ich die transparent. Aktuell sind alle Links reine Produktverweise.


    Und demnächst wird es hier technischer: Ich schreibe gerade an einem Beitrag über ein kleines Python-Skript, das meine komplette Steam-Bibliothek durchgeht und nach USK-Alterseinstufung sortiert. Damit ich auf einen Blick sehe, was ich zocken kann, während der Nachwuchs im Raum ist. Das Skript gibt es dann zum Mitnehmen.

    Wie sieht es bei dir aus? Hast du WLAN-Leuchten, die sich regelmäßig verabschieden – oder läuft dein Govee-Kram tadellos? Schreib’s mir in die Kommentare, ich bin ehrlich neugierig, ob das an meinem Netz liegt.

  • Neustart: Zwei Jahre Funkstille – und was jetzt hier passiert

    Diese Seite gibt es seit 2024. Und wenn du jetzt oben auf das Datum der bisherigen Beiträge schaust, siehst du auch ziemlich schnell, was in der Zwischenzeit passiert ist: nicht besonders viel.

    Das lag nicht daran, dass mir die Themen ausgegangen wären. Eher im Gegenteil. In den zwei Jahren ist mein Haus zu einem ziemlichen Biest geworden – Home Assistant mit hunderten Geräten, Fußbodenheizung mit eigener Regelung pro Raum, ein NAS im Keller, auf dem meine Dokumente statt in irgendeiner Cloud liegen. Nur habe ich nie aufgeschrieben, wie das alles zustande kam.

    Das ändert sich jetzt.

    Warum ich das überhaupt mache

    Bei fast jedem Projekt hier war es dasselbe: Ich habe stundenlang gesucht und nichts gefunden. Anleitungen hören an der Stelle auf, an der es interessant wird. Produkttests bestehen aus abgeschriebenen Herstellerangaben. Und in Foren steht dann irgendwo ein Beitrag von 2019, der genau dein Problem beschreibt – ohne Antwort.

    Also schreibe ich es selbst auf. Was ich gebaut habe, wie ich es gebaut habe, was es gekostet hat und wo ich mich geirrt habe. Vor allem der letzte Teil, denn den findet man am seltensten.

    Was dich hier erwartet

    • Smart Home – Home Assistant, Zigbee, Beleuchtung, Heizung, alles was das Haus selbst steuert
    • Produkttests – Geräte, die ich tatsächlich benutze. Mit Sternen, auch wenn es nur zwei sind
    • Lokal statt Cloud – warum bei mir möglichst wenig auf fremden Servern liegt und wie das praktisch aussieht
    • DIY & Bauen – das Handfeste, von der Trockenbaudecke bis zum Kabelkanal
    • 3D-Druck – weil sich damit erstaunlich viele Probleme lösen lassen

    Kein Hochglanz, keine bezahlten Lobeshymnen. Wenn etwas nervt, steht das hier auch – selbst wenn ich es selbst gekauft habe und es eigentlich gut finden wollte.


    Womit du anfangen kannst

    Wenn du wissen willst, worauf sich das alles bezieht, schau dir am besten zuerst Mein Setup an. Da steht, was bei mir tatsächlich läuft – von der Zentrale bis zum 3D-Drucker, zum Durchklicken sortiert. Die Seite halte ich laufend aktuell, sie ist sozusagen das Inhaltsverzeichnis für alles andere hier.

    Und dann leg einfach los. Neue Beiträge kommen ab jetzt regelmäßig – diesmal wirklich.

    Falls du ein Thema hast, das dich besonders interessiert, oder irgendwo feststeckst: Schreib’s in die Kommentare. Ich schreibe lieber über Dinge, bei denen jemand tatsächlich wartet, als ins Leere.

  • Parkhaus aus Fahrradreifen

    Parkhaus aus Fahrradreifen

    2 Holzleisten + 1 Fahrradreifen = Parkhaus

    Für unsere Kinder wollte ich ein Parkhaus für die ganzen kleinen Matchbox- und Hot-Wheels-Autos bauen. Ich hatte verschiedene Entwürfe im Internet gefunden, doch keiner hat mich sonderlich überzeugt. Dann kam mir die Idee: Warum nicht etwas an der Wand? Aus der Idee wurde dann die Umsetzung.

    Fertiges Parkhaus aus einem Fahrradreifen mit mehreren Holzetagen, an der Kinderzimmerwand montiert und mit Spielzeugautos befüllt
    So sieht das Ergebnis aus: ein Fahrradreifen, ein paar Holzleisten – und jede Menge Parkplätze.

    Kaufliste (Kosten Stand 09/2024)

    • 1 Fahrradreifen – ich habe 28 Zoll genommen, ca. 15 €
    • 2–3 Holzleisten – etwa 10 € pro Stück, also 20–30 €
    • 3–4 Winkel zum Befestigen an der Wand
    • Schrauben und Dübel
    • Gesamtkosten: rund 50 €

    Was du sonst noch brauchst

    An Werkzeug brauchst du keine komplett ausgestattete Werkstatt:

    • Akkuschrauber (oder gute Energie in den Armen)
    • Bohrmaschine – mein Akkuschrauber kann auch bohren
    • Bohrer, etwas kleiner als die Schrauben, zum Vorbohren
    • Kappsäge, Handsäge oder Stichsäge – je nachdem, was du hast
    • Schleifpapier oder Schleifgerät – es ist für ein Kinderzimmer, da will niemand Splitter
    • Zollstock – hab ich mich vermessen?
    • Bleistift zum Anzeichnen
    • Optional: Pinsel und Farbe, falls du das Holz noch streichen möchtest

    Die Bauanleitung

    Und schon geht es los. Leg dir am besten alle Materialien zurecht. Die Kinder können dir dabei helfen – eigentlich bei allem außer dem Sägen. Ob sie dir nun die Schrauben anreichen, den Bohrkopf halten oder mit dem Bleistift den Schnitt anzeichnen: Das kommt natürlich aufs Alter deines Knirpses an.

    Ein Fahrradreifen und eine Holzleiste liegen zum Bauen bereit auf dem Pflaster
    Mehr als das braucht es nicht für den Anfang.

    Schritt 1: Die erste Leiste anzeichnen

    Beginne damit, die erste Holzleiste auf den Reifen zu legen und markiere die Mitte der Innenseite. Achte darauf, nicht die Seite zu markieren, an der normalerweise die Felge sitzt, und auch nicht die Außenseite, auf der gefahren wird – sondern ungefähr die Mitte.

    Ob du mit der oberen, unteren oder mittleren Leiste anfängst, hängt von deiner Vorliebe ab. Ich tendiere dazu, mit einer der Außenseiten zu beginnen, also oben oder unten. Von da aus kann man sich gut vorarbeiten und die Abstände lassen sich leichter passend machen.

    Eine Holzleiste wird an der Innenseite des Fahrradreifens angelegt, um die Länge zu bestimmen
    Mit einem Bleistift wird die Schnittkante auf der Holzleiste am Reifen markiert
    Anzeichnen, wo geschnitten werden muss – hier dürfen die Kinder ran.

    Schritt 2: Zuschneiden

    Säge die erste Außenkante ab und probier aus, ob sie so in deinen Reifen passt, bevor du die zweite Seite zuschneidest. Wenn du dir sicher bist, kannst du diesen Zwischenschritt natürlich überspringen. Danach markierst du die zweite Kante und schneidest sie ebenfalls zu.

    Die zugeschnittene Holzleiste wird zur Probe in den Fahrradreifen eingesetzt
    Die zweite Schnittkante der Holzleiste wird angezeichnet

    Schritt 3: Vorbohren und festschrauben

    Ich habe mich entschieden, das zugeschnittene Stück direkt einzubauen, statt erst alle Teile zu sägen. Also kam die Leiste an die Stelle, an der sie final sitzen soll.

    Dort habe ich mit einem 3-mm-Bohrer durch den Reifen und ins Holz vorgebohrt – immer kleiner als die Holzschraube selbst. Ich mag es nicht, wenn das Holz reißt, und Vorbohren verhindert genau das.

    Die Holzleiste sitzt an ihrer endgültigen Position im Fahrradreifen
    Mit einem kleinen Bohrer wird durch den Reifen hindurch in die Holzleiste vorgebohrt
    Vorbohren mit 3 mm – kleiner als die Schraube, dann reißt nichts.
    Die Holzleiste wird mit dem Akkuschrauber durch den Reifen hindurch verschraubt
    Festschrauben – und die erste Etage steht.

    Schritt 4: Etage für Etage

    Jetzt kennst du ungefähr den Abstand, den die Etagen brauchen. Ich habe 6,5 cm genommen. Das größte Fahrzeug der Kinder war zu dem Zeitpunkt 4,3 cm hoch – und die Finger müssen ja noch an das geparkte Gefährt herankommen. Mit 6,5 cm hatte ich genug Luft. Je nach Fuhrpark kannst du natürlich mehr oder weniger nehmen.

    Je nach Reifengröße wiederholst du das jetzt, bis du oben beziehungsweise unten angekommen bist.

    Mehrere Holzleisten sind bereits als Etagen im Fahrradreifen verschraubt

    Schritt 5: An die Wand

    Zum Schluss habe ich drei Winkel angebracht, um das Ganze an der Wand befestigen zu können. Löcher bohren, Dübel rein, festschrauben – fertig.

    Das Lächeln meiner Jungs war so groß und überragend. Es war jede Sekunde wert.

    Das fertig zusammengebaute Parkhaus steht vor der Montage im Freien
    Das montierte Parkhaus an der Kinderzimmerwand, die Etagen sind mit Spielzeugautos gefüllt
    Das Befüllen hat den Jungs fast genauso viel Spaß gemacht wie das Bauen.
    Nahaufnahme des fertigen Parkhauses mit den einzelnen Etagen voller Matchbox-Autos

    Mir und den Jungs hat das Bauen richtig Spaß gemacht. Jetzt ist das Parkhaus fester Teil vom Kinderzimmer.

    Was denkt ihr? Habt ihr eigene Interpretationen davon gebaut? Oder Ideen, wie man das Ganze noch pimpen könnte? Immer her damit – ich freue mich auf eure Inspirationen.

  • Test vom Nebula Cosmos 4K SE Beamer (2024 Version)

    Test vom Nebula Cosmos 4K SE Beamer (2024 Version)

    Produktabbildung des Nebula Cosmos 4K SE Beamers in der Seitenansicht

    Hinweis zum Alter dieses Tests: Der Beitrag stammt aus dem September 2024. Das Gerät ist weiterhin erhältlich, aber Preise, Software und Verfügbarkeit können sich seitdem geändert haben. Meine Einschätzung zur Hardware selbst hat sich nicht geändert.

    Ich konnte den neuesten Anker Beamer testen. Und was ist mein Urteil? Das Ding kann rocken – muss aber nicht…

    Die Marke

    Hinter „Nebula“ versteckt sich ANKER. Ein chinesischer Hersteller, den ich sonst nur durch den Astro-Beamer kenne oder aber durch Ladekabel & Powerbanks und ähnlichen. Die Powerbanks von Ihnen haben bis heute noch echt gute Dienste geleistet und das bei teilweise knapp 10 Jahren Nutzung. Daher, kann ich mit der Marke Anker bisher nur positive Dinge verknüpfen, wenngleich in den letzten Jahren auch hier der Preisanschub nicht halt gemacht hat und auch Anker Produkte durchaus teurer geworden sind.

    Das Gerät & Handlichkeit

    Mit einem Gewicht von 4,5 Kilogramm ist der Beamer tatsächlich recht schwer. Wer ihn kurzzeitig in einem Rucksack transportieren möchte, muss nicht nur das Gewicht tragen, sondern auch einen Rucksack besitzen, der die Maße 26x16x22 cm aufnehmen kann. Zufälligerweise wird auf der Shopseite eine attraktive Tragetasche angeboten, die jedoch mit 100€ meiner Meinung nach zu teuer ist. Der mobile Tragegriff macht die Option, den Beamer einfach mit einer Halterung an der Decke zu befestigen, zunichte. Ich hätte es bevorzugt, wenn der Griff abnehmbar wäre und unter ihm eine integrierte Halterung für eine Schraube vorhanden wäre. So wird mir Mobilität aufgezwungen, was für diejenigen ideal ist, die nach mobilen Geräten suchen.

    Beim Thema Transport muss erwähnt werden, dass die Linse des Beamers so exponiert ist, dass sie beim mobilen Einsatz völlig ungeschützt bleibt. Dies erscheint mir für ein mobiles Gerät nicht ausreichend durchdacht. Zwar könnte ich mit einem 3D-Drucker eine Abdeckung herstellen, doch stellt sich die Frage, warum diese nicht standardmäßig beigelegt wird. Optisch ist das Gerät jedoch sehr ansprechend und kann besonders im beruflichen Kontext, wo ein Beamer benötigt wird, überzeugen.

    Der Nebula Cosmos 4K SE Beamer mit seinem festen Tragegriff, daneben die Verpackung und die beleuchtete Fernbedienung
    Der feste Tragegriff macht den Beamer mobil – nimmt einem aber die Möglichkeit einer Deckenhalterung.

    Zubehör

    Das mitgelieferte Zubehör ist minimalistisch und beschränkt sich auf eine Fernbedienung sowie zwei Stromkabel. HDMI-Kabel sind nicht enthalten, was ich persönlich nicht problematisch finde, da ich dadurch meinen eigenen HDMI-Standard verwenden kann und bereits genügend Kabel besitze. Wer keine HDMI-Kabel hat, muss sich welche besorgen.

    Die Fernbedienung unterstützt die „Google Sprachsteuerung“, die tadellos und schnell funktioniert. Es ist auch möglich, den Beamer über das Handy einzuschalten – eine praktische Funktion. Die beleuchtete Fernbedienung erleichtert die Bedienung im Dunkeln, sodass man nicht nach den Tasten suchen muss. Dank des eingebauten Google-Cast kann ich Inhalte direkt von meinem Handy auf den Beamer streamen, was reibungslos und ohne Probleme funktioniert.

    Der Nebula Cosmos 4K SE mit der beleuchteten Fernbedienung und dem mitgelieferten Zubehör

    Anschlüsse

    Der Projektor verfügt über zwei HDMI-Anschlüsse, wobei einer davon auch ARC unterstützt, was tadellos funktioniert. Wenn die PS5 eingeschaltet wird, schaltet sich auch der Projektor ein – voilà. Zusätzlich gibt es einen AC-Anschluss für die Audioübertragung, womit ich den Sound an mein vertrautes 7.1 Soundsystem anschließen kann. Anders als sein Vorgängermodell sind 4K und Android direkt im Gerät integriert und nicht extern. Das ist fantastisch! Auch der HDMI-Anschluss wurde gegenüber dem Vorgängermodell aufgewertet und unterstützt nun HDMI2.1.

    Bildqualität

    Bevor ich auf die Bildqualität eingehe, möchte ich einige Dinge klarstellen. Ich verfüge über kein großes Testlabor oder einen XXL-Aufbau. Durch meine berufliche Erfahrung mit Projektoren bin ich mit verschiedenen Bildqualitäten vertraut. Diese sind jedoch subjektiv und andere könnten sie anders bewerten als ich. Hiermit teile ich lediglich meine persönliche Meinung – nicht mehr und nicht weniger.

    Die Auflösung beträgt native 3.840 x 2.160 4K. Es handelt sich nicht um ein hochskaliertes 1920×1080 Bild, wie es oft fälschlicherweise als 4K beworben wird, besonders im Projektor-Markt. Das Bild hat sich automatisch an die Wand angepasst, was eine optimale und gerade Darstellung ermöglichte. Dies geschah bereits während der Einrichtung automatisch und passte perfekt (ein Video dazu folgt noch). Die Farben sind kräftig und lebendig, die Bilder gestochen scharf. Keine Blockeffekte oder sichtbare Pixel, sondern wirklich scharfe Darstellung. Unsere Wand ist mit Raufasertapete versehen, und ich hatte nicht das Gefühl, dass wir eine zusätzliche Leinwand benötigen würden. Ja, das Bild ist so gut. Ich kann nur sagen: fantastisches Bild! Punkt.

    Lautstärke Lüfter / Wärme

    Man hört den Beamer – Ja. Aber ich hatte genug Beamer die erheblich lauter waren und auch erheblich mehr Wärme abgegeben haben. Beides ist hier der Fall. Er gibt wärme ab und ist zu hören. Aber auf einem Level, was ich so für ein Beamer absolut in Ordnung finde. Es stört einfach überhaupt nicht.

    Preview-Test-Video

    Eine kleine Preview, bevor das komplette Video an den Start geht kommt hier auch. So könnt ihr euch einmal selbst davon überzeugen.

    Technische Daten

    • Abmessungen und Gewicht
      • Größe – 264 x 221 x 165 mm
      • Gewicht – 4,5 Kilo
    • Display
      • Lichtquelle: Laser + LED
      • Auflösung: 3840×2160
      • Helligkeit: 1.800 ANSI-Lumen
      • Farbraum: 123,3% Rec. 709
      • Farbgenauigkeit: ΔE<1
      • Lebensdauer der Lichtquelle: 30.000 Stunden
      • Seitenverhältnis: 16:9
      • Projektionsverhältnis: 1.2:1
      • Offset: 100%
      • Fokuseinstellung:: Automatisch / Manuell
      • Projection Mode: Vorderseite / Rückseite / Vorderseite Decke / Rückseite Decke
      • Trapezkorrektur: Automatisch (Vertikal ±40°), Automatisch (Horizontal ±30°)
      • MEMC: Ja
      • Schnittstellen: AC-IN, HDMI 2.1 (eARC), HDMI 2.1, USB-A, AUX
    • Hardware
      • CPU: Quad-Core ARM Cortex-A55
      • GPU: ARM Mali-G52 MC1
      • RAM / ROM: 2GB / 16GB
      • Lautsprecher: 15W ×2 (unterstützt von Dolby Audio)
    • Software
      • OS: Betriebssystem: Google TV mit offiziellem Netflix
      • Modes: Projektormodus / Bluetooth-Lautsprechermodus
      • OTA: Unterstützt
      • App Store: Unterstützt
    Der Nebula Cosmos 4K SE im Einsatz mit projiziertem Bild an der Wand

    Fazit

    Das Google OS ist, wenn man ein Android Handy besitzt, super schnell mit seinem Account und seinen Apps gesynched. Der Ton ist für ein kleinen Beamer wirklich gut (natürlich kein 7.1. Surround Sound, aber wirklich gut genug). Das Bild, finde ich sehr gut. Die automatische Ausrichtung noch besser. Sowohl tagsüber als auch Abends / Nachts konnte das Bild im Vergleich zu 1080p Beamern aufwarten. Wer einen mobilen Beamer sucht oder für Camper oder für den Garten, den kann ich hier voll und ganz auf die sichere Seite wissen: wer das Gerät kauft, der macht wirklich nichts falsch! Von mir gibt es daher:

    BEWERTUNG

    ⭐⭐⭐⭐⭐ (5/5)

    POSITIV

    • Mobiler Beamer – Jetzt mit echtem 4K
    • Google OS ist fix eingerichtet
    • Das OS selbst ist flott im Beamer
    • Bildqualität ist hervorragend – natives 4K, kräftige Farben, gestochen scharf
    • Preis-Leistung geht für das Gebotene in Ordnung
    • Appstore bietet alles was das Android-Herz begehrt
    • IEA 4.0 (Hindernisserkennun und Autofokus) funktionieren hervorragend
    • 200 Zoll TV ist schon eine Ansage – und dann in der Qualität

    NEGATIV

    • Haltegriff ist fest und nicht lösbar
    • Keine Option für Deckenhalterung
    • Kein vorhandener Linsenschutz
    • Kein HDR – bei dem Preis und der sonst so guten Bildqualität ärgerlich
    • Listenpreis von 1.500 € ist zu hoch angesetzt – zum Release gab es ihn für 1.000 €, was den eigentlichen Wert eher trifft
    • Keine Schnittstelle zu Apple

    Hinweis an dieser Stelle und in eigener Sache:

    Das Gerät wurde mir im Rahmen eines Produkttests kostenlos zur Verfügung gestellt. Eine darüber hinausgehende Bezahlung habe ich nicht erhalten, und der Hersteller hatte keinen Einfluss auf den Inhalt dieses Beitrags. Nebenbei: „Kostenlos“ heißt auch bei Testprodukten nicht, dass gar nichts anfällt – auf den Warenwert werden Steuern fällig. Dieser Test basiert auf meinem Befinden und meiner subjektiven Wahrnehmung. Ich handle hier nach bestem Wissen und Gewissen.