Merge branch 'master' into master

This commit is contained in:
LordGrey 2020-09-25 19:46:22 +02:00 committed by GitHub
commit 28cbec1009
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 483 additions and 163 deletions

View File

@ -4,27 +4,27 @@
"InfoDialog_changePassword_success": "Passwort erfolgreich gespeichert!", "InfoDialog_changePassword_success": "Passwort erfolgreich gespeichert!",
"InfoDialog_changePassword_title": "Ändere Passwort", "InfoDialog_changePassword_title": "Ändere Passwort",
"InfoDialog_iswitch_text": "Sollte in deinem lokalen Netzwerk Hyperion mehr als einmal laufen, kannst du hier zwischen den Web Konfigurationen hin und her schalten. Wähle dazu die Instanz unten aus und switche!", "InfoDialog_iswitch_text": "Sollte in deinem lokalen Netzwerk Hyperion mehr als einmal laufen, kannst du hier zwischen den Web Konfigurationen hin und her schalten. Wähle dazu die Instanz unten aus und switche!",
"InfoDialog_iswitch_title": "Hyperion switcher", "InfoDialog_iswitch_title": "Hyperion-Switcher",
"InfoDialog_lang_text": "Sollte dir die Vorauswahl der automatischen Spracherkennung nicht gefallen, kannst du die Sprache hier manuell festlegen.", "InfoDialog_lang_text": "Sollte dir die Vorauswahl der automatischen Spracherkennung nicht gefallen, kannst du die Sprache hier manuell festlegen.",
"InfoDialog_lang_title": "Spracheinstellung", "InfoDialog_lang_title": "Spracheinstellung",
"InfoDialog_nowrite_foottext": "Die Webkonfiguration wird automatisch wieder freigegeben, sobald das Problem behoben wurde!", "InfoDialog_nowrite_foottext": "Die Webkonfiguration wird automatisch wieder freigegeben, sobald das Problem behoben wurde!",
"InfoDialog_nowrite_text": "Hyperion hat keinen Schreibzugriff auf die aktuell geladene Konfiguration. Bitte korrigiere die Dateizugriffsrechte um fortzufahren.", "InfoDialog_nowrite_text": "Hyperion hat keinen Schreibzugriff auf die aktuell geladene Konfiguration. Bitte korrigiere die Dateizugriffsrechte, um fortzufahren.",
"InfoDialog_nowrite_title": "Fehler beim Schreibzugriff!", "InfoDialog_nowrite_title": "Fehler beim Schreibzugriff!",
"about_3rd_party_licenses": "Drittanbieter Lizenzen", "about_3rd_party_licenses": "Drittanbieter Lizenzen",
"about_3rd_party_licenses_error": "Wir hatten Probleme beim Laden der Drittanbieter Lizenzen aus dem Internet. <br />Klicke hier um die Datei auf GitHub aufzurufen.", "about_3rd_party_licenses_error": "Wir hatten Probleme beim Laden der Drittanbieter Lizenzen aus dem Internet. <br />Klicke hier, um die Datei auf GitHub aufzurufen.",
"about_build": "Build", "about_build": "Build",
"about_builddate": "Build Datum", "about_builddate": "Build Datum",
"about_contribute": "Entwickel Hyperion mit uns weiter!", "about_contribute": "Entwickle Hyperion mit uns weiter!",
"about_credits": "Einen Dank an alle Entwickler!", "about_credits": "Einen Dank an alle Entwickler!",
"about_resources": "$1 Bibliotheken", "about_resources": "$1 Bibliotheken",
"about_translations": "Übersetzungen", "about_translations": "Übersetzungen",
"about_version": "Version", "about_version": "Version",
"conf_colors_blackborder_intro": "Ignoriere schwarze Balken, jeder Modus nutzt einen anderen Algorithmus um diese zu erkennen. Erhöhe die Schwelle, sollte es nicht funktionieren.", "conf_colors_blackborder_intro": "Ignoriere schwarze Balken, jeder Modus nutzt einen anderen Algorithmus, um diese zu erkennen. Erhöhe die Schwelle, sollte es nicht funktionieren.",
"conf_colors_color_intro": "Erstelle Kalibrierungsprofile die einzelnen Komponenten zugewisen werden können. Passe dabei Farben, Gamma, Helligkeit, Kompensation und mehr an.", "conf_colors_color_intro": "Erstelle Kalibrierungsprofile die einzelnen Komponenten zugewiesen werden können. Passe dabei Farben, Gamma, Helligkeit, Kompensation und mehr an.",
"conf_colors_smoothing_intro": "Glätte den Farbverlauf und Helligkeitsänderungen um nicht von schnellen Übergängen abgelenkt zu werden.", "conf_colors_smoothing_intro": "Glätte den Farbverlauf und Helligkeitsänderungen um nicht von schnellen Übergängen abgelenkt zu werden.",
"conf_effect_bgeff_intro": "Definiere einen Hintergrund Effekt/Farbe. Dieser wird aktiv, wenn Hyperion sich im Leerlauf befindet. Wird immer mit Priorität 255 gestartet.", "conf_effect_bgeff_intro": "Definiere einen Hintergrund Effekt/Farbe. Dieser wird aktiv, wenn Hyperion sich im Leerlauf befindet. Wird immer mit Priorität 255 gestartet.",
"conf_effect_fgeff_intro": "Definiere einen Start Effekt/Farbe, dieser wird angezeigt, wenn Hyperion startet für die angegebene Dauer.", "conf_effect_fgeff_intro": "Definiere einen Start Effekt/Farbe, dieser wird angezeigt, wenn Hyperion startet für die angegebene Dauer.",
"conf_effect_path_intro": "Hier kannst du Ordner angeben, die beim Laden von Effekten berücksichtig werden sollen. Zusätzlich können Effekte anhand ihres Namens deaktiviert werden um sie aus Listen zu löschen.", "conf_effect_path_intro": "Hier kannst du Ordner angeben, die beim Laden von Effekten berücksichtigt werden sollen. Zusätzlich können Effekte anhand ihres Namens deaktiviert werden, um sie aus Listen zu löschen.",
"conf_general_createInst_btn": "Instanz erstellen", "conf_general_createInst_btn": "Instanz erstellen",
"conf_general_impexp_expbtn": "Exportieren", "conf_general_impexp_expbtn": "Exportieren",
"conf_general_impexp_impbtn": "Importieren", "conf_general_impexp_impbtn": "Importieren",
@ -32,28 +32,28 @@
"conf_general_impexp_l2": "Exportiere eine Konfiguration, indem du auf \"Exportieren\" klickst. Dein Browser startet einen Download.", "conf_general_impexp_l2": "Exportiere eine Konfiguration, indem du auf \"Exportieren\" klickst. Dein Browser startet einen Download.",
"conf_general_impexp_title": "Importiere/Exportiere Konfiguration", "conf_general_impexp_title": "Importiere/Exportiere Konfiguration",
"conf_general_inst_actionhead": "Aktionen", "conf_general_inst_actionhead": "Aktionen",
"conf_general_inst_delreq_h": "LED Hardware Instanz löschen", "conf_general_inst_delreq_h": "LED-Hardware Instanz löschen",
"conf_general_inst_delreq_t": "Bist du dir sicher, das du die Instanz \"$1\" löschen möchtest? Alle Einstellungen zu dieser Instanz gehen verloren.", "conf_general_inst_delreq_t": "Bist du dir sicher, dass du die Instanz \"$1\" löschen möchtest? Alle Einstellungen zu dieser Instanz gehen verloren.",
"conf_general_inst_desc": "Verwende mehrere LED Hardware gleichzeitig. Jede Instanz läuft unabhängig voneinander, wodurch unterschiedliche LED-Layouts und Kalibrierungseinstellungen möglich sind. Laufende Instanzen sind in der oberen Symbolleiste verfügbar.", "conf_general_inst_desc": "Verwende mehrere LED-Hardware gleichzeitig. Jede Instanz läuft unabhängig voneinander, wodurch unterschiedliche LED-Layouts und Kalibrierungseinstellungen möglich sind. Laufende Instanzen sind in der oberen Symbolleiste verfügbar.",
"conf_general_inst_name_title": "Neuer Instanzname", "conf_general_inst_name_title": "Neuer Instanzname",
"conf_general_inst_namehead": "Instanzname", "conf_general_inst_namehead": "Instanzname",
"conf_general_inst_renreq_t": "Gib in das untere Feld deinen neuen Instanznamen ein.", "conf_general_inst_renreq_t": "Gib in das untere Feld deinen neuen Instanznamen ein.",
"conf_general_inst_title": "LED Hardware Instanzverwaltung", "conf_general_inst_title": "LED-Hardware Instanzverwaltung",
"conf_general_intro": "Grundsätzliche Einstellungen zu Hyperion oder WebUI, die in keine andere Kategorie passen.", "conf_general_intro": "Grundsätzliche Einstellungen zu Hyperion oder WebUI, die in keine andere Kategorie passen.",
"conf_general_label_title": "Allgemeine Einstellungen", "conf_general_label_title": "Allgemeine Einstellungen",
"conf_grabber_fg_intro": "Plattform Aufnahme ist das lokale System auf dem Hyperion installiert wurde, welches als Bildquelle dient.", "conf_grabber_fg_intro": "Plattform Aufnahme ist das lokale System auf dem Hyperion installiert wurde, welches als Bildquelle dient.",
"conf_grabber_v4l_intro": "USB Aufnahme ist ein Gerät, welches via USB angeschlossen ist und als Bildquelle dient.", "conf_grabber_v4l_intro": "USB-Aufnahme ist ein Gerät, welches via USB angeschlossen ist und als Bildquelle dient.",
"conf_helptable_expl": "Erklärung", "conf_helptable_expl": "Erklärung",
"conf_helptable_option": "Option", "conf_helptable_option": "Option",
"conf_leds_contr_label_contrtype": "Steuerungstyp:", "conf_leds_contr_label_contrtype": "Steuerungstyp:",
"conf_leds_device_intro": "Wähle eine Methode zur Steuerung deiner LEDs aus, sie sind unterteilt in verschiedene Kategorien. Neben den allgemeinen Optionen die für alle gültig sind, gibt es auch spezfische die sich unterscheiden je nach Wahl.", "conf_leds_device_intro": "Wähle eine Methode zur Steuerung deiner LEDs aus, sie sind unterteilt in verschiedene Kategorien. Neben den allgemeinen Optionen die für alle gültig sind, gibt es auch spezifische, die sich unterscheiden je nach Wahl.",
"conf_leds_layout_advanced": "Erweiterte Optionen", "conf_leds_layout_advanced": "Erweiterte Optionen",
"conf_leds_layout_btn_checklist": "Zeige Checkliste", "conf_leds_layout_btn_checklist": "Zeige Checkliste",
"conf_leds_layout_button_savelay": "Speichere Layout", "conf_leds_layout_button_savelay": "Speichere Layout",
"conf_leds_layout_button_updsim": "Aktualisiere Vorschau", "conf_leds_layout_button_updsim": "Aktualisiere Vorschau",
"conf_leds_layout_checkp1": "Die schwarze eingefärbte LED ist die erste LED. Das ist der Punkt, an dem die Daten eingespeist werden.", "conf_leds_layout_checkp1": "Die schwarze eingefärbte LED ist die erste LED. Das ist der Punkt, an dem die Daten eingespeist werden.",
"conf_leds_layout_checkp2": "Das Layout ist die Ansicht vor dem Fernseher stehend, nicht dahinter.", "conf_leds_layout_checkp2": "Das Layout ist die Ansicht vor dem Fernseher stehend, nicht dahinter.",
"conf_leds_layout_checkp3": "Stelle sicher, dass die Richtung richtig eingestellt ist, dazu ist die zweite und dritte LED grau markiert um den Datenfluss anzuzeigen.", "conf_leds_layout_checkp3": "Stelle sicher, dass die Richtung richtig eingestellt ist, dazu ist die zweite und dritte LED grau markiert, um den Datenfluss anzuzeigen.",
"conf_leds_layout_checkp4": "Vorgang Lücke: Solltest du eine Lücke benötigen, ignoriere diese bei der LED Angabe Oben/Unten/Rechts/Links und gebe anschließend unter Lückenlänge an, wieviel LEDs du abziehen möchtest. Verändere jetzt die Lückenposition, um die Lücke an die richtige Stelle zu rücken.", "conf_leds_layout_checkp4": "Vorgang Lücke: Solltest du eine Lücke benötigen, ignoriere diese bei der LED Angabe Oben/Unten/Rechts/Links und gebe anschließend unter Lückenlänge an, wieviel LEDs du abziehen möchtest. Verändere jetzt die Lückenposition, um die Lücke an die richtige Stelle zu rücken.",
"conf_leds_layout_cl_bottom": "Unten", "conf_leds_layout_cl_bottom": "Unten",
"conf_leds_layout_cl_bottomleft": "Unten Links (Ecke)", "conf_leds_layout_cl_bottomleft": "Unten Links (Ecke)",
@ -62,7 +62,7 @@
"conf_leds_layout_cl_edgegap": "Rahmenabstand", "conf_leds_layout_cl_edgegap": "Rahmenabstand",
"conf_leds_layout_cl_gaglength": "Lückenlänge", "conf_leds_layout_cl_gaglength": "Lückenlänge",
"conf_leds_layout_cl_gappos": "Lückenposition", "conf_leds_layout_cl_gappos": "Lückenposition",
"conf_leds_layout_cl_hleddepth": "Horizontale LED Tiefe", "conf_leds_layout_cl_hleddepth": "Horizontale LED-Tiefe",
"conf_leds_layout_cl_inppos": "Einspeisepunkt", "conf_leds_layout_cl_inppos": "Einspeisepunkt",
"conf_leds_layout_cl_left": "Links", "conf_leds_layout_cl_left": "Links",
"conf_leds_layout_cl_leftbottom": "Links unten (50% bis 100%)", "conf_leds_layout_cl_leftbottom": "Links unten (50% bis 100%)",
@ -77,10 +77,10 @@
"conf_leds_layout_cl_top": "Oben", "conf_leds_layout_cl_top": "Oben",
"conf_leds_layout_cl_topleft": "Oben Links (Ecke)", "conf_leds_layout_cl_topleft": "Oben Links (Ecke)",
"conf_leds_layout_cl_topright": "Oben Rechts (Ecke)", "conf_leds_layout_cl_topright": "Oben Rechts (Ecke)",
"conf_leds_layout_cl_vleddepth": "Vertikale LED Tiefe", "conf_leds_layout_cl_vleddepth": "Vertikale LED-Tiefe",
"conf_leds_layout_frame": "Klassisches Layout (Rahmen)", "conf_leds_layout_frame": "Klassisches Layout (Rahmen)",
"conf_leds_layout_generatedconf": "Generierte/Aktuelle LED Konfiguration", "conf_leds_layout_generatedconf": "Generierte/Aktuelle LED-Konfiguration",
"conf_leds_layout_intro": "Du benötigst ebenfalls ein LED Layout, welches deine LED-Positionen wiederspiegelt. Das klassische Layout wird für gewöhnlichen für TVs verwendet, Hyperion unterstützt aber auch LED Wände (Matrix). Die Ansicht des LAYOUTS ist die perspektive VOR dem Fernseher, nicht dahinter.", "conf_leds_layout_intro": "Du benötigst ebenfalls ein LED-Layout, welches deine LED-Positionen wiederspiegelt. Das klassische Layout wird für gewöhnlichen für TVs verwendet, Hyperion unterstützt aber auch LED-Wände (Matrix). Die Ansicht des Layouts ist die Perspektive VOR dem Fernseher, nicht dahinter.",
"conf_leds_layout_ma_cabling": "Verkabelung", "conf_leds_layout_ma_cabling": "Verkabelung",
"conf_leds_layout_ma_horiz": "Horizontal", "conf_leds_layout_ma_horiz": "Horizontal",
"conf_leds_layout_ma_optbottomleft": "Unten links", "conf_leds_layout_ma_optbottomleft": "Unten links",
@ -92,17 +92,17 @@
"conf_leds_layout_ma_opttopright": "Oben rechts", "conf_leds_layout_ma_opttopright": "Oben rechts",
"conf_leds_layout_ma_optvert": "Vertikal", "conf_leds_layout_ma_optvert": "Vertikal",
"conf_leds_layout_ma_order": "Reihenfolge", "conf_leds_layout_ma_order": "Reihenfolge",
"conf_leds_layout_ma_position": "Einpeisepunkt", "conf_leds_layout_ma_position": "Einspeisepunkt",
"conf_leds_layout_ma_vert": "Vertikal", "conf_leds_layout_ma_vert": "Vertikal",
"conf_leds_layout_matrix": "Matrix Layout (LED Wand)", "conf_leds_layout_matrix": "Matrix Layout (LED-Wand)",
"conf_leds_layout_pbl": "Punkt unten links", "conf_leds_layout_pbl": "Punkt unten links",
"conf_leds_layout_pbr": "Punkt unten rechts", "conf_leds_layout_pbr": "Punkt unten rechts",
"conf_leds_layout_peview": "LED Layout Vorschau", "conf_leds_layout_peview": "LED-Layout Vorschau",
"conf_leds_layout_preview_l1": "Das ist die erste LED (Einspeisung)", "conf_leds_layout_preview_l1": "Das ist die erste LED (Einspeisung)",
"conf_leds_layout_preview_l2": "Das visualisiert die Richtung des Datenstroms (zweite/dritte LED)", "conf_leds_layout_preview_l2": "Das visualisiert die Richtung des Datenstroms (zweite/dritte LED)",
"conf_leds_layout_preview_ledpower": "Max. Stromstärke: $1 A", "conf_leds_layout_preview_ledpower": "Max. Stromstärke: $1 A",
"conf_leds_layout_preview_originCL": "Erstellt von: Klassisches Layout (Rahmen)", "conf_leds_layout_preview_originCL": "Erstellt von: Klassisches Layout (Rahmen)",
"conf_leds_layout_preview_originMA": "Erstellt von: Matrix Layout (LED Wand)", "conf_leds_layout_preview_originMA": "Erstellt von: Matrix Layout (LED-Wand)",
"conf_leds_layout_preview_originTEXT": "Erstellt von: Textfeld", "conf_leds_layout_preview_originTEXT": "Erstellt von: Textfeld",
"conf_leds_layout_preview_totalleds": "LEDs gesamt: $1", "conf_leds_layout_preview_totalleds": "LEDs gesamt: $1",
"conf_leds_layout_ptl": "Punkt oben links", "conf_leds_layout_ptl": "Punkt oben links",
@ -111,8 +111,8 @@
"conf_leds_layout_ptlv": "Vertikal", "conf_leds_layout_ptlv": "Vertikal",
"conf_leds_layout_ptr": "Punkt oben rechts", "conf_leds_layout_ptr": "Punkt oben rechts",
"conf_leds_layout_textf1": "Das Textfeld zeigt dir dein aktuell geladenes Layout, sofern du kein neues Layout mit den Optionen oben erstellt hast. Optional kann man die Werte hier weiter bearbeiten.", "conf_leds_layout_textf1": "Das Textfeld zeigt dir dein aktuell geladenes Layout, sofern du kein neues Layout mit den Optionen oben erstellt hast. Optional kann man die Werte hier weiter bearbeiten.",
"conf_leds_nav_label_ledcontroller": "LED Steuerung", "conf_leds_nav_label_ledcontroller": "LED-Steuerung",
"conf_leds_nav_label_ledlayout": "LED Layout", "conf_leds_nav_label_ledlayout": "LED-Layout",
"conf_leds_optgroup_RPiGPIO": "RPi GPIO", "conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_RPiPWM": "RPi PWM", "conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiSPI": "RPi SPI", "conf_leds_optgroup_RPiSPI": "RPi SPI",
@ -122,7 +122,7 @@
"conf_logging_btn_autoscroll": "Automatisch scrollen", "conf_logging_btn_autoscroll": "Automatisch scrollen",
"conf_logging_btn_pbupload": "Bericht für Supportanfrage hochladen", "conf_logging_btn_pbupload": "Bericht für Supportanfrage hochladen",
"conf_logging_contpolicy": "Berichts-Datenschutzerklärung", "conf_logging_contpolicy": "Berichts-Datenschutzerklärung",
"conf_logging_label_intro": "Überprüfe die Meldungen im Prokotoll um zu erfahren was Hyperion gerade beschäftigt. Je nach eingestellter Protokoll-Stufe siehst du mehr oder weniger Informationen.", "conf_logging_label_intro": "Überprüfe die Meldungen im Protokoll um zu erfahren was Hyperion gerade beschäftigt. Je nach eingestellter Protokoll-Stufe siehst du mehr oder weniger Informationen.",
"conf_logging_lastreports": "Frühere Berichte", "conf_logging_lastreports": "Frühere Berichte",
"conf_logging_nomessage": "Keine Einträge vorhanden.", "conf_logging_nomessage": "Keine Einträge vorhanden.",
"conf_logging_report": "Bericht", "conf_logging_report": "Bericht",
@ -133,18 +133,18 @@
"conf_network_bobl_intro": "Boblight Empfänger", "conf_network_bobl_intro": "Boblight Empfänger",
"conf_network_createToken_btn": "Erstelle Token", "conf_network_createToken_btn": "Erstelle Token",
"conf_network_fbs_intro": "Google Flatbuffers Empfänger. Wird genutzt für schnellen Bildempfang.", "conf_network_fbs_intro": "Google Flatbuffers Empfänger. Wird genutzt für schnellen Bildempfang.",
"conf_network_forw_intro": "Leite alles an eine zweite Hyperion Instanz weiter, diese kann dann mit einer anderen LED Steuerung genutzt werden", "conf_network_forw_intro": "Leite alles an eine zweite Hyperion Instanz weiter, diese kann dann mit einer anderen LED-Steuerung genutzt werden",
"conf_network_json_intro": "Der JSON-RPC-Port aller Hyperion-Instanzen, wird genutzt zur Fernsteuerung.", "conf_network_json_intro": "Der JSON-RPC-Port aller Hyperion-Instanzen, wird genutzt zur Fernsteuerung.",
"conf_network_net_intro": "Einstellungen zum Netzwerk die für alle Netzwerk-Dienste gelten", "conf_network_net_intro": "Einstellungen zum Netzwerk die für alle Netzwerk-Dienste gelten",
"conf_network_proto_intro": "Der PROTO-Port aller Hyperion-Instanzen, wird genutzt für \"Bildstreams\" (HyperionScreenCap, Kodi Addon, Android Hyperion Grabber, ...)", "conf_network_proto_intro": "Der PROTO-Port aller Hyperion-Instanzen, wird genutzt für \"Bildstreams\" (HyperionScreenCap, Kodi Add-on, Android Hyperion Grabber, ...)",
"conf_network_tok_cidhead": "Beschreibung", "conf_network_tok_cidhead": "Beschreibung",
"conf_network_tok_comment_title": "Token Beschreibung", "conf_network_tok_comment_title": "Token Beschreibung",
"conf_network_tok_desc": "Tokens erlauben andere Anwendungen auf die Hyperion API zuzugreifen. Eine Anwendung kann ein Token anfordern welches von dir bestätigt werden muss oder du erstellst dir selbst ein neues Token. Diese Tokens werden nur benötigt, wenn \"API Autorisierung\" in den Netzwerkeinstellungen aktiviert ist.", "conf_network_tok_desc": "Tokens erlauben andere Anwendungen auf die Hyperion API zuzugreifen. Eine Anwendung kann ein Token anfordern, welches von dir bestätigt werden muss oder du erstellst dir selbst ein neues Token. Diese Tokens werden nur benötigt, wenn \"API-Autorisierung\" in den Netzwerkeinstellungen aktiviert ist.",
"conf_network_tok_diaMsg": "Hier ist dein neues Token, welches für den Zugriff auf die Hyperion API verwendet werden kann. Aus Sicherheitsgründen können Tokens nach der Erstellung nur einmalig eingesehen werden, notiere es dir daher jetzt.", "conf_network_tok_diaMsg": "Hier ist dein neues Token, welches für den Zugriff auf die Hyperion API verwendet werden kann. Aus Sicherheitsgründen können Tokens nach der Erstellung nur einmalig eingesehen werden, notiere es dir daher jetzt.",
"conf_network_tok_diaTitle": "Neues Token erstellt!", "conf_network_tok_diaTitle": "Neues Token erstellt!",
"conf_network_tok_grantMsg": "Eine App fordert Zugriff auf die Hyperion API durch ein Token. Möchtest du dies zulassen? Bitte überprüfe die angegebenen Informationen!", "conf_network_tok_grantMsg": "Eine App fordert Zugriff auf die Hyperion API durch ein Token. Möchtest du dies zulassen? Bitte überprüfe die angegebenen Informationen!",
"conf_network_tok_grantT": "App Token angefordert", "conf_network_tok_grantT": "App Token angefordert",
"conf_network_tok_intro": "Hier kannst du Token zur API Authentifizierung erstellen oder löschen. Neu erstellte Token werden einmalig angezeigt.", "conf_network_tok_intro": "Hier kannst du Token zur API-Authentifizierung erstellen oder löschen. Neu erstellte Token werden einmalig angezeigt.",
"conf_network_tok_lastuse": "Zuletzt genutzt", "conf_network_tok_lastuse": "Zuletzt genutzt",
"conf_network_tok_title": "Token Management", "conf_network_tok_title": "Token Management",
"conf_webconfig_label_intro": "Einstellungen zur Webkonfiguration. Änderungen können die Erreichbarkeit des Webinterfaces beeinflussen.", "conf_webconfig_label_intro": "Einstellungen zur Webkonfiguration. Änderungen können die Erreichbarkeit des Webinterfaces beeinflussen.",
@ -154,7 +154,7 @@
"dashboard_alert_message_confsave_success": "Deine Hyperion Konfiguration wurde erfolgreich gespeichert. Deine Änderungen sind somit übernommen.", "dashboard_alert_message_confsave_success": "Deine Hyperion Konfiguration wurde erfolgreich gespeichert. Deine Änderungen sind somit übernommen.",
"dashboard_alert_message_confsave_success_t": "Konfiguration gespeichert", "dashboard_alert_message_confsave_success_t": "Konfiguration gespeichert",
"dashboard_alert_message_disabled": "Diese Instanz ist momentan deaktiviert! Um sie zu nutzen, musst du sie zuerst wieder im Dashboard aktivieren.", "dashboard_alert_message_disabled": "Diese Instanz ist momentan deaktiviert! Um sie zu nutzen, musst du sie zuerst wieder im Dashboard aktivieren.",
"dashboard_alert_message_disabled_t": "LED Hardware instanz deaktiviert", "dashboard_alert_message_disabled_t": "LED-Hardware Instanz deaktiviert",
"dashboard_componentbox_label_comp": "Komponente", "dashboard_componentbox_label_comp": "Komponente",
"dashboard_componentbox_label_status": "Status", "dashboard_componentbox_label_status": "Status",
"dashboard_componentbox_label_title": "Komponenten Status", "dashboard_componentbox_label_title": "Komponenten Status",
@ -172,13 +172,13 @@
"dashboard_infobox_message_updatesuccess": "Du nutzt die aktuellste Version von Hyperion.", "dashboard_infobox_message_updatesuccess": "Du nutzt die aktuellste Version von Hyperion.",
"dashboard_infobox_message_updatewarning": "Eine aktuellere Version von Hyperion ist verfügbar! ($1)", "dashboard_infobox_message_updatewarning": "Eine aktuellere Version von Hyperion ist verfügbar! ($1)",
"dashboard_label_intro": "Das Dashboard zeigt dir Informationen zum Systemstatus, ob Updates verfügbar sind, den Komponentenstatus sowie die letzten Blog-Posts vom Hyperion Team.", "dashboard_label_intro": "Das Dashboard zeigt dir Informationen zum Systemstatus, ob Updates verfügbar sind, den Komponentenstatus sowie die letzten Blog-Posts vom Hyperion Team.",
"dashboard_message_default_password": "Das Standardpasswort der WebUi ist gesetzt. Wir empfehlen dringend, dieses zu ändern.", "dashboard_message_default_password": "Das Standardpasswort der WebUI ist gesetzt. Wir empfehlen dringend, dieses zu ändern.",
"dashboard_message_default_password_t": "WebUi Standardpasswort gesetzt", "dashboard_message_default_password_t": "WebUI Standardpasswort gesetzt",
"dashboard_message_do_not_show_again": "Diese Meldung nicht mehr anzeigen", "dashboard_message_do_not_show_again": "Diese Meldung nicht mehr anzeigen",
"dashboard_message_global_setting": "Die Einstellungen auf dieser Seite sind instanzunabhängig. Änderungen werden global übernommen.", "dashboard_message_global_setting": "Die Einstellungen auf dieser Seite sind instanzunabhängig. Änderungen werden global übernommen.",
"dashboard_message_global_setting_t": "Instanzunabhängige Einstellung", "dashboard_message_global_setting_t": "Instanzunabhängige Einstellung",
"dashboard_newsbox_label_title": "Hyperion-Blog", "dashboard_newsbox_label_title": "Hyperion-Blog",
"dashboard_newsbox_noconn": "Fehler bei dem Versuch die letzten Blog-Posts zu laden, funtkioniert dein Internet?", "dashboard_newsbox_noconn": "Fehler bei dem Versuch die letzten Blog-Posts zu laden, funktioniert dein Internet?",
"dashboard_newsbox_readmore": "Weiterlesen", "dashboard_newsbox_readmore": "Weiterlesen",
"dashboard_newsbox_visitblog": "Besuche den Hyperion-Blog", "dashboard_newsbox_visitblog": "Besuche den Hyperion-Blog",
"edt_append_degree": "°", "edt_append_degree": "°",
@ -198,47 +198,47 @@
"edt_conf_bb_borderFrameCnt_title": "Randbilder", "edt_conf_bb_borderFrameCnt_title": "Randbilder",
"edt_conf_bb_heading_title": "Schwarze Balken Erkennung", "edt_conf_bb_heading_title": "Schwarze Balken Erkennung",
"edt_conf_bb_maxInconsistentCnt_expl": "Anzahl der zu ignorierenden Bilder bis ein neuer Rand überprüft wird.", "edt_conf_bb_maxInconsistentCnt_expl": "Anzahl der zu ignorierenden Bilder bis ein neuer Rand überprüft wird.",
"edt_conf_bb_maxInconsistentCnt_title": "Inkosistente Bilder", "edt_conf_bb_maxInconsistentCnt_title": "Inkonsistente Bilder",
"edt_conf_bb_mode_expl": "Algorithmus zur Auswertung. (siehe Wiki)", "edt_conf_bb_mode_expl": "Algorithmus zur Auswertung. (siehe Wiki)",
"edt_conf_bb_mode_title": "Modus", "edt_conf_bb_mode_title": "Modus",
"edt_conf_bb_threshold_expl": "Wenn die Erkennung nicht funktioniert, erhöhe die Schwelle um auf 'graues' schwarz zu reagieren.", "edt_conf_bb_threshold_expl": "Wenn die Erkennung nicht funktioniert, erhöhe die Schwelle, um auf 'graues' schwarz zu reagieren.",
"edt_conf_bb_threshold_title": "Schwelle", "edt_conf_bb_threshold_title": "Schwelle",
"edt_conf_bb_unknownFrameCnt_expl": "Anzahl an Bildern die negativ sind, welche den Rand auf 0 zurücksetzen.", "edt_conf_bb_unknownFrameCnt_expl": "Anzahl an Bildern die negativ sind, welche den Rand auf 0 zurücksetzen.",
"edt_conf_bb_unknownFrameCnt_title": "Unbekannte Bilder", "edt_conf_bb_unknownFrameCnt_title": "Unbekannte Bilder",
"edt_conf_bge_heading_title": "Hintergrund Effekt/Farbe", "edt_conf_bge_heading_title": "Hintergrund Effekt/Farbe",
"edt_conf_bobls_heading_title": "Boblight Server", "edt_conf_bobls_heading_title": "Boblight Server",
"edt_conf_color_backlightColored_expl": "Die Hintergrundbeleuchtung kann mit oder ohne Farbanteile genutzt werden.", "edt_conf_color_backlightColored_expl": "Die Hintergrundbeleuchtung kann mit oder ohne Farbanteile genutzt werden.",
"edt_conf_color_backlightColored_title": "Farbige Hintergrund - beleuchtung", "edt_conf_color_backlightColored_title": "Farbige Hintergrundbeleuchtung",
"edt_conf_color_backlightThreshold_expl": "Eine Beleuchtung die dauerhaft aktiv ist. (Automatisch deaktiviert bei Effekten, Farben oder im Zustand \"Aus\")", "edt_conf_color_backlightThreshold_expl": "Eine Beleuchtung die dauerhaft aktiv ist. (Automatisch deaktiviert bei Effekten, Farben oder im Zustand \"Aus\")",
"edt_conf_color_backlightThreshold_title": "Hintergrund - beleuchtung", "edt_conf_color_backlightThreshold_title": "Hintergrundbeleuchtung",
"edt_conf_color_black_expl": "Kalibrierter Schwarzwert.", "edt_conf_color_black_expl": "Kalibrierter Schwarzwert.",
"edt_conf_color_black_title": "Schwarz", "edt_conf_color_black_title": "Schwarz",
"edt_conf_color_blue_expl": "Kalibrierter Blauwert.", "edt_conf_color_blue_expl": "Kalibrierter Blauwert.",
"edt_conf_color_blue_title": "Blau", "edt_conf_color_blue_title": "Blau",
"edt_conf_color_brightnessComp_expl": "Kompensiert unterschiede in der Helligkeit zwischen Rot Grün Blau, Cyan Magenta Gelb und weiß. 100 ist volle Kompensation, 0 keine Kompensation", "edt_conf_color_brightnessComp_expl": "Kompensiert Unterschiede in der Helligkeit zwischen Rot Grün Blau, Cyan Magenta Gelb und weiß. 100 ist volle Kompensation, 0 keine Kompensation",
"edt_conf_color_brightnessComp_title": "Helligkeits Kompensation", "edt_conf_color_brightnessComp_title": "Helligkeitsabgleich",
"edt_conf_color_brightness_expl": "Die gesamte Helligkeit", "edt_conf_color_brightness_expl": "Die gesamte Helligkeit",
"edt_conf_color_brightness_title": "Helligkeit", "edt_conf_color_brightness_title": "Helligkeit",
"edt_conf_color_channelAdjustment_header_expl": "Passe die Farbkanäle deinen LEDs an", "edt_conf_color_channelAdjustment_header_expl": "Passe die Farbkanäle deiner LEDs an",
"edt_conf_color_channelAdjustment_header_itemtitle": "Profil", "edt_conf_color_channelAdjustment_header_itemtitle": "Profil",
"edt_conf_color_channelAdjustment_header_title": "Anpassung Farbkanäle", "edt_conf_color_channelAdjustment_header_title": "Anpassung Farbkanäle",
"edt_conf_color_cyan_expl": "Kalibrierter Cyanwert.", "edt_conf_color_cyan_expl": "Kalibrierter Cyanwert.",
"edt_conf_color_cyan_title": "Cyan", "edt_conf_color_cyan_title": "Cyan",
"edt_conf_color_gammaBlue_expl": "Gamma von blau. 1.0 ist neutral. Über 1.0 wird blau reduziert, unter 1.0 wird blau erhöht.", "edt_conf_color_gammaBlue_expl": "Gamma Blau. 1.0 ist neutral. Über 1.0 wird der Blauanteil reduziert, unter 1.0 wird der Blauanteil erhöht.",
"edt_conf_color_gammaBlue_title": "Gamma Blau", "edt_conf_color_gammaBlue_title": "Gamma Blau",
"edt_conf_color_gammaGreen_expl": "Gamma von grün. 1.0 ist neutral. Über 1.0 wird grün reduziert, unter 1.0 wird grün erhöht.", "edt_conf_color_gammaGreen_expl": "Gamma Grün. 1.0 ist neutral. Über 1.0 wird der Grünanteil reduziert, unter 1.0 wird der Grünanteil erhöht.",
"edt_conf_color_gammaGreen_title": "Gamma Grün", "edt_conf_color_gammaGreen_title": "Gamma Grün",
"edt_conf_color_gammaRed_expl": "Gamma von rot. 1.0 ist neutral. Über 1.0 wird rot reduziert, unter 1.0 wird rot erhöht.", "edt_conf_color_gammaRed_expl": "Gamma Rot. 1.0 ist neutral. Über 1.0 wird der Rotanteil reduziert, unter 1.0 wird der Rotanteil erhöht.",
"edt_conf_color_gammaRed_title": "Gamma Rot", "edt_conf_color_gammaRed_title": "Gamma Rot",
"edt_conf_color_green_expl": "Kalibrierter Grünwert.", "edt_conf_color_green_expl": "Kalibrierter Grünwert.",
"edt_conf_color_green_title": "Grün", "edt_conf_color_green_title": "Grün",
"edt_conf_color_heading_title": "Farbkalibrierung", "edt_conf_color_heading_title": "Farbkalibrierung",
"edt_conf_color_id_expl": "Eine vom Benutzer frei angegebene ID.", "edt_conf_color_id_expl": "Eine vom Benutzer frei angegebene ID.",
"edt_conf_color_id_title": "ID", "edt_conf_color_id_title": "ID",
"edt_conf_color_imageToLedMappingType_expl": "Sofern nicht \"Mehrfarbig\", wird dein LED Layout mit einer anderen Bildzuweisung überschrieben", "edt_conf_color_imageToLedMappingType_expl": "Sofern nicht \"Mehrfarbig\", wird dein LED-Layout mit einer anderen Bildzuweisung überschrieben",
"edt_conf_color_imageToLedMappingType_title": "LED-Bereich Zuordnungstyp", "edt_conf_color_imageToLedMappingType_title": "LED-Bereich Zuordnungstyp",
"edt_conf_color_leds_expl": "Zugewiesen zu allen (*) LEDs oder nur zu bestimmten LED Nummern (0-17).", "edt_conf_color_leds_expl": "Zugewiesen zu allen (*) LEDs oder nur zu bestimmten LED Nummern (0-17).",
"edt_conf_color_leds_title": "LED index", "edt_conf_color_leds_title": "LED-Iindex",
"edt_conf_color_magenta_expl": "Kalibrierter Magentawert.", "edt_conf_color_magenta_expl": "Kalibrierter Magentawert.",
"edt_conf_color_magenta_title": "Magenta", "edt_conf_color_magenta_title": "Magenta",
"edt_conf_color_red_expl": "Kalibrierter Rotwert.", "edt_conf_color_red_expl": "Kalibrierter Rotwert.",
@ -271,7 +271,7 @@
"edt_conf_enum_dl_informational": "informativ", "edt_conf_enum_dl_informational": "informativ",
"edt_conf_enum_dl_nodebug": "keine Debugausgabe", "edt_conf_enum_dl_nodebug": "keine Debugausgabe",
"edt_conf_enum_dl_statechange": "bei Änderungen", "edt_conf_enum_dl_statechange": "bei Änderungen",
"edt_conf_enum_dl_verbose": "sehr detailiert", "edt_conf_enum_dl_verbose": "sehr detailliert",
"edt_conf_enum_dl_verbose1": "Stufe 1", "edt_conf_enum_dl_verbose1": "Stufe 1",
"edt_conf_enum_dl_verbose2": "Stufe 2", "edt_conf_enum_dl_verbose2": "Stufe 2",
"edt_conf_enum_dl_verbose3": "Stufe 3", "edt_conf_enum_dl_verbose3": "Stufe 3",
@ -297,16 +297,16 @@
"edt_conf_fbs_timeout_expl": "Wenn für die angegebene Zeit keine Daten empfangen werden, wird die Komponente (vorübergehend) deaktiviert", "edt_conf_fbs_timeout_expl": "Wenn für die angegebene Zeit keine Daten empfangen werden, wird die Komponente (vorübergehend) deaktiviert",
"edt_conf_fbs_timeout_title": "Zeitüberschreitung", "edt_conf_fbs_timeout_title": "Zeitüberschreitung",
"edt_conf_fg_device_title": "Device", "edt_conf_fg_device_title": "Device",
"edt_conf_fg_display_expl": "Gebe an von welchem Desktop aufgenommen werden soll. (Multi Monitor Setup)", "edt_conf_fg_display_expl": "Gebe an, von welchem Desktop aufgenommen werden soll. (Multi Monitor Setup)",
"edt_conf_fg_display_title": "Display", "edt_conf_fg_display_title": "Display",
"edt_conf_fg_frequency_Hz_expl": "Wie schnell neue Bilder aufgenommen werden.", "edt_conf_fg_frequency_Hz_expl": "Wie schnell werden neue Bilder aufgenommen.",
"edt_conf_fg_frequency_Hz_title": "Aufnahmefrequenz", "edt_conf_fg_frequency_Hz_title": "Aufnahmefrequenz",
"edt_conf_fg_heading_title": "Plattform Aufnahme", "edt_conf_fg_heading_title": "Plattform Aufnahme",
"edt_conf_fg_height_expl": "Verkleinere Bild auf dieser Höhe, da das Rohmaterial viel Leistung benötigen würde.", "edt_conf_fg_height_expl": "Verkleinere Bild auf dieser Höhe, da das Rohmaterial viel Leistung benötigen würde.",
"edt_conf_fg_height_title": "Höhe", "edt_conf_fg_height_title": "Höhe",
"edt_conf_fg_pixelDecimation_expl": "Bildverkleinerung (Faktor) ausgehend von der original Größe. 1 für unveränderte/originale Größe.", "edt_conf_fg_pixelDecimation_expl": "Bildverkleinerung (Faktor) ausgehend von der ursprünglichen Größe. 1 für die unveränderte/ursprüngliche Größe.",
"edt_conf_fg_pixelDecimation_title": "Bildverkleinerung Faktor", "edt_conf_fg_pixelDecimation_title": "Bildverkleinerung Faktor",
"edt_conf_fg_type_expl": "Art der Plattform Aufnahme, standard ist 'auto'", "edt_conf_fg_type_expl": "Art der Plattform Aufnahme; Standard ist 'auto'",
"edt_conf_fg_type_title": "Typ", "edt_conf_fg_type_title": "Typ",
"edt_conf_fg_width_expl": "Verkleinere Bild auf dieser Breite, da das Rohmaterial viel Leistung benötigen würde.", "edt_conf_fg_width_expl": "Verkleinere Bild auf dieser Breite, da das Rohmaterial viel Leistung benötigen würde.",
"edt_conf_fg_width_title": "Breite", "edt_conf_fg_width_title": "Breite",
@ -341,27 +341,27 @@
"edt_conf_general_priority_title": "Priorität", "edt_conf_general_priority_title": "Priorität",
"edt_conf_instC_systemEnable_expl": "Aktiviert die Plattform Aufnahme für diese LED Hardware Instanz.", "edt_conf_instC_systemEnable_expl": "Aktiviert die Plattform Aufnahme für diese LED Hardware Instanz.",
"edt_conf_instC_systemEnable_title": "Aktiviere Plattform Aufnahme", "edt_conf_instC_systemEnable_title": "Aktiviere Plattform Aufnahme",
"edt_conf_instC_v4lEnable_expl": "Aktiviert die USB Aufnahme für diese LED Hardware Instanz.", "edt_conf_instC_v4lEnable_expl": "Aktiviert die USB Aufnahme für diese LED -Hardware Instanz.",
"edt_conf_instC_v4lEnable_title": "Aktiviere USB Aufnahme", "edt_conf_instC_v4lEnable_title": "Aktiviere USB-Aufnahme",
"edt_conf_instCapture_heading_title": "Instance Aufnahme", "edt_conf_instCapture_heading_title": "Instance Aufnahme",
"edt_conf_js_heading_title": "JSON Server", "edt_conf_js_heading_title": "JSON Server",
"edt_conf_log_heading_title": "Protokoll", "edt_conf_log_heading_title": "Protokoll",
"edt_conf_log_level_expl": "Abhängig der Stufe sind weniger oder mehr Meldungen sichtbar.", "edt_conf_log_level_expl": "Abhängig der Stufe sind weniger oder mehr Meldungen sichtbar.",
"edt_conf_log_level_title": "Protokollstufe", "edt_conf_log_level_title": "Protokollstufe",
"edt_conf_net_apiAuth_expl": "Zwinge alle Anwendungen welche die Hyperion API nutzen sich zu authentifizieren. Aktivieren für höhere Sicherheit, da nun jede neue Anwendung einmalig von dir bestätigt werden muss.", "edt_conf_net_apiAuth_expl": "Zwinge alle Anwendungen, welche die Hyperion API nutzen sich zu authentifizieren. Aktivieren für höhere Sicherheit, da nun jede neue Anwendung einmalig von dir bestätigt werden muss.",
"edt_conf_net_apiAuth_title": "API Authentifizierung", "edt_conf_net_apiAuth_title": "API-Authentifizierung",
"edt_conf_net_heading_title": "Network", "edt_conf_net_heading_title": "Network",
"edt_conf_net_internetAccessAPI_expl": "Erlaube Zugriff auf die Hyperion API/Webinterface aus dem Internet, deaktivieren für höhere Sicherheit.", "edt_conf_net_internetAccessAPI_expl": "Erlaube Zugriff auf das Hyperion API/Webinterface über das Internet. Deaktiviere den Zugriff für höhere Sicherheit.",
"edt_conf_net_internetAccessAPI_title": "Internet API Zugriff", "edt_conf_net_internetAccessAPI_title": "Internet API-Zugriff",
"edt_conf_net_ipWhitelist_expl": "Anstatt den Zugriff für alle Verbindungen aus dem Internet zu erlauben kannst du hier Ausnahmen für zugelassene IP Adressen hinzufügen.", "edt_conf_net_ipWhitelist_expl": "Anstatt den Zugriff für alle Verbindungen aus dem Internet zu erlauben kannst du hier Ausnahmen für zugelassene IP-Adressen hinzufügen.",
"edt_conf_net_ipWhitelist_title": "Erlaubte IP's", "edt_conf_net_ipWhitelist_title": "Erlaubte IP-Adressen",
"edt_conf_net_ip_itemtitle": "IP", "edt_conf_net_ip_itemtitle": "IP",
"edt_conf_net_localAdminAuth_expl": "Wenn aktiviert, muss der Administrationszugriff aus dem Heimnetzwerk mit einem Passwort authentifiziert werden.", "edt_conf_net_localAdminAuth_expl": "Wenn aktiviert, muss der Administrationszugriff aus dem Heimnetzwerk mit einem Passwort authentifiziert werden.",
"edt_conf_net_localAdminAuth_title": "Lokale Admin Authentifizierung", "edt_conf_net_localAdminAuth_title": "Lokale Admin Authentifizierung",
"edt_conf_net_localApiAuth_expl": "Wenn aktiviert, müssen Verbindungen aus dem Heimnetzwerk mit einem Token authentifiziert werden.", "edt_conf_net_localApiAuth_expl": "Wenn aktiviert, müssen Verbindungen aus dem Heimnetzwerk mit einem Token authentifiziert werden.",
"edt_conf_net_localApiAuth_title": "Lokale API Authentifizierung", "edt_conf_net_localApiAuth_title": "Lokale API-Authentifizierung",
"edt_conf_net_restirctedInternetAccessAPI_expl": "Den Zugriff auf die API durch das Internet auf bestimmte IP's beschränken", "edt_conf_net_restirctedInternetAccessAPI_expl": "Den Zugriff auf die API über das Internet auf bestimmte IP-Adressen beschränken",
"edt_conf_net_restirctedInternetAccessAPI_title": "Auf IP's beschränken", "edt_conf_net_restirctedInternetAccessAPI_title": "Auf IP-Adressen beschränken",
"edt_conf_pbs_heading_title": "Protocol Buffers Server", "edt_conf_pbs_heading_title": "Protocol Buffers Server",
"edt_conf_pbs_timeout_expl": "Wenn für die angegebene Zeit keine Daten empfangen werden, wird die Komponente (vorübergehend) deaktiviert", "edt_conf_pbs_timeout_expl": "Wenn für die angegebene Zeit keine Daten empfangen werden, wird die Komponente (vorübergehend) deaktiviert",
"edt_conf_pbs_timeout_title": "Zeitüberschreitung", "edt_conf_pbs_timeout_title": "Zeitüberschreitung",
@ -374,11 +374,11 @@
"edt_conf_smooth_type_title": "Art", "edt_conf_smooth_type_title": "Art",
"edt_conf_smooth_updateDelay_expl": "Verzögere die Ausgabe, sollte dein ambient light schneller sein als dein TV.", "edt_conf_smooth_updateDelay_expl": "Verzögere die Ausgabe, sollte dein ambient light schneller sein als dein TV.",
"edt_conf_smooth_updateDelay_title": "Aktualisierungsverzögerung", "edt_conf_smooth_updateDelay_title": "Aktualisierungsverzögerung",
"edt_conf_smooth_updateFrequency_expl": "Die Geschwindigkeit der Datenausgabe an die LED Steuerung.", "edt_conf_smooth_updateFrequency_expl": "Die Geschwindigkeit der Datenausgabe an die LED-Steuerung.",
"edt_conf_smooth_updateFrequency_title": "Aktualisierungsfrequenz", "edt_conf_smooth_updateFrequency_title": "Aktualisierungsfrequenz",
"edt_conf_v4l2_blueSignalThreshold_expl": "Je höher die blaue Schwelle je eher wird abgeschalten bei entsprechendem blau-Anteil.", "edt_conf_v4l2_blueSignalThreshold_expl": "Je höher der Blauwert ist, je eher wird bei entsprechendem Blauanteil abgeschaltet.",
"edt_conf_v4l2_blueSignalThreshold_title": "Blaue Signalschwelle", "edt_conf_v4l2_blueSignalThreshold_title": "Schwelle Blauwert",
"edt_conf_v4l2_cecDetection_expl": "Die USB-Erfassung wird vorübergehend deaktiviert, wenn ein CEC-Standby-Ereignis vom HDMI-Bus empfangen wird.", "edt_conf_v4l2_cecDetection_expl": "Die USB-Erfassung wird vorübergehend deaktiviert, wenn ein CEC-Standby-Signal vom HDMI-Bus empfangen wird.",
"edt_conf_v4l2_cecDetection_title": "CEC-Erkennung", "edt_conf_v4l2_cecDetection_title": "CEC-Erkennung",
"edt_conf_v4l2_cropBottom_expl": "Anzahl der Pixel auf der unteren Seite die vom Bild entfernt werden.", "edt_conf_v4l2_cropBottom_expl": "Anzahl der Pixel auf der unteren Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_cropBottom_title": "Entferne unten", "edt_conf_v4l2_cropBottom_title": "Entferne unten",
@ -392,24 +392,24 @@
"edt_conf_v4l2_device_title": "Gerät", "edt_conf_v4l2_device_title": "Gerät",
"edt_conf_v4l2_framerate_expl": "Die unterstützten Bilder pro Sekunde des aktiven Gerätes. Auf 'Automatisch' wird der gewählte Modus vom v4l interface beibehalten.", "edt_conf_v4l2_framerate_expl": "Die unterstützten Bilder pro Sekunde des aktiven Gerätes. Auf 'Automatisch' wird der gewählte Modus vom v4l interface beibehalten.",
"edt_conf_v4l2_framerate_title": "Bilder pro Sekunde", "edt_conf_v4l2_framerate_title": "Bilder pro Sekunde",
"edt_conf_v4l2_greenSignalThreshold_expl": "Je höher die grüne Schwelle je eher wird abgeschalten bei entsprechendem grün-Anteil.", "edt_conf_v4l2_greenSignalThreshold_expl": "Je höher der Grünwert ist, je eher wird bei entsprechendem Grünanteil abgeschaltet..",
"edt_conf_v4l2_greenSignalThreshold_title": "Grüne Signalschwelle", "edt_conf_v4l2_greenSignalThreshold_title": "Schwelle Grünwert",
"edt_conf_v4l2_heading_title": "USB Aufnahme", "edt_conf_v4l2_heading_title": "USB Aufnahme",
"edt_conf_v4l2_input_expl": "Wähle den Videoeingang deines Gerätes. Auf 'Automatisch' wird der Videoeingang vom v4l interface beibehalten.", "edt_conf_v4l2_input_expl": "Wähle den Videoeingang deines Gerätes. Auf 'Automatisch' wird der Videoeingang vom v4l interface beibehalten.",
"edt_conf_v4l2_input_title": "Eingang", "edt_conf_v4l2_input_title": "Eingang",
"edt_conf_v4l2_redSignalThreshold_expl": "Je höher die rote Schwelle je eher wird abgeschalten bei entsprechendem rot-Anteil.", "edt_conf_v4l2_redSignalThreshold_expl": "Je höher der Rotwert ist, je eher wird bei entsprechendem Rotanteil abgeschaltet.",
"edt_conf_v4l2_redSignalThreshold_title": "Rote Signalschwelle", "edt_conf_v4l2_redSignalThreshold_title": "Schwelle Rotwert",
"edt_conf_v4l2_resolution_expl": "Eine Liste von unterstützten Auflösungen des aktiven Gerätes. Auf 'Automatisch' wird der gewählte Modus vom v4l interface beibehalten.", "edt_conf_v4l2_resolution_expl": "Eine Liste von unterstützten Auflösungen des aktiven Gerätes. Auf 'Automatisch' wird der gewählte Modus vom v4l interface beibehalten.",
"edt_conf_v4l2_resolution_title": "Auflösung", "edt_conf_v4l2_resolution_title": "Auflösung",
"edt_conf_v4l2_sDHOffsetMax_expl": "Signal Erkennungs-Bereich horizontal maximum (0.0-1.0)", "edt_conf_v4l2_sDHOffsetMax_expl": "Signal Erkennungsbereich horizontales Maximum (0.0-1.0)",
"edt_conf_v4l2_sDHOffsetMax_title": "Signal Erkennung HMax", "edt_conf_v4l2_sDHOffsetMax_title": "Signal Erkennung HMax",
"edt_conf_v4l2_sDHOffsetMin_expl": "Signal Erkennungs-Bereich horizontal minimum (0.0-1.0)", "edt_conf_v4l2_sDHOffsetMin_expl": "Signal Erkennungsbereich horizontales Minimum (0.0-1.0)",
"edt_conf_v4l2_sDHOffsetMin_title": "Signal Erkennung HMin", "edt_conf_v4l2_sDHOffsetMin_title": "Signal Erkennung HMin",
"edt_conf_v4l2_sDVOffsetMax_expl": "Signal Erkennungs-Bereich vertikal maximum (0.0-1.0)", "edt_conf_v4l2_sDVOffsetMax_expl": "Signal Erkennungbereich vertikales Maximum (0.0-1.0)",
"edt_conf_v4l2_sDVOffsetMax_title": "Signal Erkennung VMax", "edt_conf_v4l2_sDVOffsetMax_title": "Signal Erkennung VMax",
"edt_conf_v4l2_sDVOffsetMin_expl": "Signal Erkennungs-Bereich vertikal minimum (0.0-1.0)", "edt_conf_v4l2_sDVOffsetMin_expl": "Signal Erkennungsbereich vertikales Minimum (0.0-1.0)",
"edt_conf_v4l2_sDVOffsetMin_title": "Signal Erkennung VMin", "edt_conf_v4l2_sDVOffsetMin_title": "Signal Erkennung VMin",
"edt_conf_v4l2_signalDetection_expl": "Wenn aktiviert, wird die USB Aufnahme temporär bei \"kein Signal\" abgeschalten. Das Bild muss dazu 4 Sekunden lang unter die Schwellwerte fallen.", "edt_conf_v4l2_signalDetection_expl": "Die USB-Aufnahme temporär abgeschaltet, wenn kein Signal anliegt. Das Bild muss dazu 4 Sekunden lang unter den Schwellwerten sein.",
"edt_conf_v4l2_signalDetection_title": "Signal Erkennung", "edt_conf_v4l2_signalDetection_title": "Signal Erkennung",
"edt_conf_v4l2_sizeDecimation_expl": "Der Faktor der Bildverkleinerung ausgehend von der ursprünglichen Größe, 1 bedeutet keine Änderung (originales Bild).", "edt_conf_v4l2_sizeDecimation_expl": "Der Faktor der Bildverkleinerung ausgehend von der ursprünglichen Größe, 1 bedeutet keine Änderung (originales Bild).",
"edt_conf_v4l2_sizeDecimation_title": "Bildverkleinerung Faktor", "edt_conf_v4l2_sizeDecimation_title": "Bildverkleinerung Faktor",
@ -424,12 +424,12 @@
"edt_conf_webc_keyPassPhrase_title": "Schlüsselpasswort", "edt_conf_webc_keyPassPhrase_title": "Schlüsselpasswort",
"edt_conf_webc_keyPath_expl": "Pfad zum privaten Schlüssel (Format in PEM, verschlüsselt mit RSA)", "edt_conf_webc_keyPath_expl": "Pfad zum privaten Schlüssel (Format in PEM, verschlüsselt mit RSA)",
"edt_conf_webc_keyPath_title": "Schlüssel-Pfad", "edt_conf_webc_keyPath_title": "Schlüssel-Pfad",
"edt_conf_webc_sslport_expl": "Port des HTTPS webservers", "edt_conf_webc_sslport_expl": "Port des HTTPS-Webservers",
"edt_conf_webc_sslport_title": "HTTPS Port", "edt_conf_webc_sslport_title": "HTTPS Port",
"edt_dev_auth_key_title": "Authentisierungstoken", "edt_dev_auth_key_title": "Authentisierungstoken",
"edt_dev_enum_sub_min_cool_adjust": "Minimale Anpassung: cool", "edt_dev_enum_sub_min_cool_adjust": "Minimale Anpassung: cool",
"edt_dev_enum_sub_min_warm_adjust": "Minimale Anpassung: warm", "edt_dev_enum_sub_min_warm_adjust": "Minimale Anpassung: warm",
"edt_dev_enum_subtract_minimum": "Subtrahiere minimum", "edt_dev_enum_subtract_minimum": "Subtrahiere Minimum",
"edt_dev_enum_white_off": "Weiß ist aus", "edt_dev_enum_white_off": "Weiß ist aus",
"edt_dev_general_colorOrder_title": "RGB Byte Reihenfolge", "edt_dev_general_colorOrder_title": "RGB Byte Reihenfolge",
"edt_dev_general_hardwareLedCount_title": "Anzahl Hardware LEDs", "edt_dev_general_hardwareLedCount_title": "Anzahl Hardware LEDs",
@ -437,8 +437,8 @@
"edt_dev_general_name_title": "Name der Konfiguration", "edt_dev_general_name_title": "Name der Konfiguration",
"edt_dev_general_rewriteTime_title": "Aktualisierungszeit", "edt_dev_general_rewriteTime_title": "Aktualisierungszeit",
"edt_dev_spec_FCledToOn_title": "Fadecandy LEDs set to on", "edt_dev_spec_FCledToOn_title": "Fadecandy LEDs set to on",
"edt_dev_spec_FCmanualControl_title": "Manuelle Steuerung der fadecandy LEDs", "edt_dev_spec_FCmanualControl_title": "Manuelle Steuerung der Fadecandy LEDs",
"edt_dev_spec_FCsetConfig_title": "Wende fadecandy Konfiguration an", "edt_dev_spec_FCsetConfig_title": "Wende Fadecandy Konfiguration an",
"edt_dev_spec_LBap102Mode_title": "LightBerry APA102 Modus", "edt_dev_spec_LBap102Mode_title": "LightBerry APA102 Modus",
"edt_dev_spec_PBFiFo_title": "Pi-Blaster FiFo", "edt_dev_spec_PBFiFo_title": "Pi-Blaster FiFo",
"edt_dev_spec_baudrate_title": "Baudrate", "edt_dev_spec_baudrate_title": "Baudrate",
@ -451,7 +451,7 @@
"edt_dev_spec_cid_title": "CID", "edt_dev_spec_cid_title": "CID",
"edt_dev_spec_clientKey_title": "Clientkey", "edt_dev_spec_clientKey_title": "Clientkey",
"edt_dev_spec_colorComponent_title": "Farbkomponente", "edt_dev_spec_colorComponent_title": "Farbkomponente",
"edt_dev_spec_debugLevel_title": "Streamer Verbindung Debug Stufe", "edt_dev_spec_debugLevel_title": "Debug Stufe",
"edt_dev_spec_debugStreamer_title": "Streamer Debugging", "edt_dev_spec_debugStreamer_title": "Streamer Debugging",
"edt_dev_spec_delayAfterConnect_title": "Verzögerung nach Verbindung", "edt_dev_spec_delayAfterConnect_title": "Verzögerung nach Verbindung",
"edt_dev_spec_dithering_title": "Dithering", "edt_dev_spec_dithering_title": "Dithering",
@ -466,10 +466,12 @@
"edt_dev_spec_intervall_title": "Intervall", "edt_dev_spec_intervall_title": "Intervall",
"edt_dev_spec_invert_title": "Invertiere Signal", "edt_dev_spec_invert_title": "Invertiere Signal",
"edt_dev_spec_latchtime_title": "Sperrzeit", "edt_dev_spec_latchtime_title": "Sperrzeit",
"edt_dev_spec_ledIndex_title": "LED index", "edt_dev_spec_globalBrightnessControlMaxLevel_title": "Maximalstufe Stromstärke",
"edt_dev_spec_ledType_title": "LED typ", "edt_dev_spec_globalBrightnessControlThreshold_title": "Grenzwert für adaptive Stromstärke",
"edt_dev_spec_ledIndex_title": "LED-Index",
"edt_dev_spec_ledType_title": "LED-Typ",
"edt_dev_spec_lightid_itemtitle": "ID", "edt_dev_spec_lightid_itemtitle": "ID",
"edt_dev_spec_lightid_title": "Lampen ID(s)", "edt_dev_spec_lightid_title": "Lampen-ID(s)",
"edt_dev_spec_lights_itemtitle": "Lampe", "edt_dev_spec_lights_itemtitle": "Lampe",
"edt_dev_spec_lights_name": "Name", "edt_dev_spec_lights_name": "Name",
"edt_dev_spec_lights_title": "Lampe(n)", "edt_dev_spec_lights_title": "Lampe(n)",
@ -479,7 +481,7 @@
"edt_dev_spec_networkDeviceName_title": "Gerätename im Netzwerk", "edt_dev_spec_networkDeviceName_title": "Gerätename im Netzwerk",
"edt_dev_spec_networkDevicePort_title": "Port", "edt_dev_spec_networkDevicePort_title": "Port",
"edt_dev_spec_numberOfLeds_title": "Anzahl der LEDs", "edt_dev_spec_numberOfLeds_title": "Anzahl der LEDs",
"edt_dev_spec_orbIds_title": "Orb ID(s)", "edt_dev_spec_orbIds_title": "Orb-ID(s)",
"edt_dev_spec_order_left_right_title": "2.", "edt_dev_spec_order_left_right_title": "2.",
"edt_dev_spec_order_top_down_title": "1.", "edt_dev_spec_order_top_down_title": "1.",
"edt_dev_spec_outputPath_title": "Ausgabepfad", "edt_dev_spec_outputPath_title": "Ausgabepfad",
@ -497,8 +499,8 @@
"edt_dev_spec_sslReadTimeout_title": "Streamer lese Timeout", "edt_dev_spec_sslReadTimeout_title": "Streamer lese Timeout",
"edt_dev_spec_switchOffOnBlack_title": "Aus bei schwarz", "edt_dev_spec_switchOffOnBlack_title": "Aus bei schwarz",
"edt_dev_spec_switchOffOnbelowMinBrightness_title": "Aus bei Minimum", "edt_dev_spec_switchOffOnbelowMinBrightness_title": "Aus bei Minimum",
"edt_dev_spec_targetIpHost_title": "Ziel IP/Rechnername", "edt_dev_spec_targetIpHost_title": "Ziel IP-Adresse/Rechnername",
"edt_dev_spec_targetIp_title": "Ziel IP", "edt_dev_spec_targetIp_title": "Ziel IP-Adresse",
"edt_dev_spec_transeffect_title": "Übergangseffekt", "edt_dev_spec_transeffect_title": "Übergangseffekt",
"edt_dev_spec_transistionTimeExtra_title": "Extra Übergangszeit bei Schwarz", "edt_dev_spec_transistionTimeExtra_title": "Extra Übergangszeit bei Schwarz",
"edt_dev_spec_transistionTime_title": "Übergangszeit", "edt_dev_spec_transistionTime_title": "Übergangszeit",
@ -548,10 +550,10 @@
"edt_eff_enableshutdown": "Echtes herunterfahren", "edt_eff_enableshutdown": "Echtes herunterfahren",
"edt_eff_enum_all": "Alle", "edt_eff_enum_all": "Alle",
"edt_eff_enum_all-together": "Alle zusammen", "edt_eff_enum_all-together": "Alle zusammen",
"edt_eff_enum_list": "LED Liste", "edt_eff_enum_list": "LED-Liste",
"edt_eff_explodeRadius": "Detonationsreichweite", "edt_eff_explodeRadius": "Detonationsreichweite",
"edt_eff_fade_header": "Farbübergang", "edt_eff_fade_header": "Farbübergang",
"edt_eff_fade_header_desc": "Farbübergange für alle LED's", "edt_eff_fade_header_desc": "Farbübergänge für alle LEDs",
"edt_eff_fadefactor": "Verblass Faktor", "edt_eff_fadefactor": "Verblass Faktor",
"edt_eff_fadeintime": "Zeit für Einblendung", "edt_eff_fadeintime": "Zeit für Einblendung",
"edt_eff_fadeouttime": "Zeit für Ausblendung", "edt_eff_fadeouttime": "Zeit für Ausblendung",
@ -559,7 +561,7 @@
"edt_eff_flag_header_desc": "Verpasse deinen LEDs die Farben deines Landes. Du kannst mehr als eine Flagge auswählen, je nach Intervall werden diese dann abwechselnd angezeigt.", "edt_eff_flag_header_desc": "Verpasse deinen LEDs die Farben deines Landes. Du kannst mehr als eine Flagge auswählen, je nach Intervall werden diese dann abwechselnd angezeigt.",
"edt_eff_fps": "Bilder pro Sekunde", "edt_eff_fps": "Bilder pro Sekunde",
"edt_eff_frequency": "Frequenz", "edt_eff_frequency": "Frequenz",
"edt_eff_gif_header": "GIF's", "edt_eff_gif_header": "GIFs",
"edt_eff_gif_header_desc": "Dieser Effekt spielt .gif Dateien ab. Bietet die Möglichkeit kleine GIF-Videos abzuspielen.", "edt_eff_gif_header_desc": "Dieser Effekt spielt .gif Dateien ab. Bietet die Möglichkeit kleine GIF-Videos abzuspielen.",
"edt_eff_height": "Höhe", "edt_eff_height": "Höhe",
"edt_eff_huechange": "Farbänderung", "edt_eff_huechange": "Farbänderung",
@ -567,13 +569,13 @@
"edt_eff_interval": "Intervall", "edt_eff_interval": "Intervall",
"edt_eff_knightrider_header": "Knight Rider", "edt_eff_knightrider_header": "Knight Rider",
"edt_eff_knightrider_header_desc": "K.I.T.T ist zurück! Der Front-Scanner des bekannten Autos, diesmal nicht nur in rot.", "edt_eff_knightrider_header_desc": "K.I.T.T ist zurück! Der Front-Scanner des bekannten Autos, diesmal nicht nur in rot.",
"edt_eff_ledlist": "LED Liste", "edt_eff_ledlist": "LED-Liste",
"edt_eff_ledtest_header": "Led Test", "edt_eff_ledtest_header": "LED-Test",
"edt_eff_ledtest_header_desc": "Rotierende Ausgabe von Rot, Grün, Blau, Weiß und Schwarz", "edt_eff_ledtest_header_desc": "Rotierende Ausgabe von Rot, Grün, Blau, Weiß und Schwarz",
"edt_eff_length": "Länge", "edt_eff_length": "Länge",
"edt_eff_lightclock_header": "Lichtuhr", "edt_eff_lightclock_header": "Lichtuhr",
"edt_eff_lightclock_header_desc": "Eine echte Uhr als Licht! Passe die Farben von Stunden, Minuten, Sekunden deinen Vorstellungen an. Optional können 3/6/9/12 Uhr Markierungen aktiviert werden. Sollte die Uhr eine falsche Zeit anzeigen, überprüfe die Uhrzeit deines Systems.", "edt_eff_lightclock_header_desc": "Eine echte Uhr als Licht! Passe die Farben von Stunden, Minuten, Sekunden deinen Vorstellungen an. Optional können 3/6/9/12 Uhr Markierungen aktiviert werden. Sollte die Uhr eine falsche Zeit anzeigen, überprüfe die Uhrzeit deines Systems.",
"edt_eff_maintain_end_color": "Behalte Endfarbe", "edt_eff_maintain_end_color": "Behalte die Endfarbe",
"edt_eff_margin": "Abstand", "edt_eff_margin": "Abstand",
"edt_eff_markerDepth": "Marker Tiefe", "edt_eff_markerDepth": "Marker Tiefe",
"edt_eff_markerEnable": "Zeige Marker", "edt_eff_markerEnable": "Zeige Marker",
@ -581,17 +583,17 @@
"edt_eff_max_len": "Maximale Länge", "edt_eff_max_len": "Maximale Länge",
"edt_eff_min_len": "Minimale Länge", "edt_eff_min_len": "Minimale Länge",
"edt_eff_moodblobs_header": "Stimmungskugeln", "edt_eff_moodblobs_header": "Stimmungskugeln",
"edt_eff_moodblobs_header_desc": "Entspannt den Abend beginnen mit langsam bewegenden Farbkugeln die ebenso sanft ihre Farbe verändern.", "edt_eff_moodblobs_header_desc": "Entspannt den Abend beginnen mit langsam bewegenden Farbkugeln, die sanft ihre Farbe verändern.",
"edt_eff_offset": "Verschiebung", "edt_eff_offset": "Verschiebung",
"edt_eff_pacman_header": "Pac-Man", "edt_eff_pacman_header": "Pac-Man",
"edt_eff_pacman_header_desc": "Klein gefräßig und gelb, wer wird überleben?", "edt_eff_pacman_header_desc": "Klein gefräßig und gelb, wer wird überleben?",
"edt_eff_plasma_header": "Plasma", "edt_eff_plasma_header": "Plasma",
"edt_eff_plasma_header_desc": "Farbverzerrungen in verschiedenen Richtungen", "edt_eff_plasma_header_desc": "Farbverzerrungen in verschiedenen Richtungen",
"edt_eff_police_header": "Polizei", "edt_eff_police_header": "Polizei",
"edt_eff_police_header_desc": "Lights like a police car in action", "edt_eff_police_header_desc": "Blaulicht (Blau/Rot)",
"edt_eff_postcolor": "Startfarbe", "edt_eff_postcolor": "Startfarbe",
"edt_eff_rainbowmood_header": "Regenbogen", "edt_eff_rainbowmood_header": "Regenbogen",
"edt_eff_rainbowmood_header_desc": "Alle LEDs Regenbogen Farbübergang", "edt_eff_rainbowmood_header_desc": "Regenbogen Farbübergang über alle LEDs",
"edt_eff_randomCenter": "Zufälliger Mittelpunkt", "edt_eff_randomCenter": "Zufälliger Mittelpunkt",
"edt_eff_random_header": "Zufällig", "edt_eff_random_header": "Zufällig",
"edt_eff_random_header_desc": "Pixel-Farb-Mix", "edt_eff_random_header_desc": "Pixel-Farb-Mix",
@ -620,7 +622,7 @@
"edt_eff_trails_header": "Sternschnuppen", "edt_eff_trails_header": "Sternschnuppen",
"edt_eff_trails_header_desc": "In verschiedenen Farben, wünsch dir was!", "edt_eff_trails_header_desc": "In verschiedenen Farben, wünsch dir was!",
"edt_eff_waves_header": "Wellen", "edt_eff_waves_header": "Wellen",
"edt_eff_waves_header_desc": "Gestalte Wellen aus Farbe! Mische dazu deine lieblings Farben und wähle einen Mittelpunkt.", "edt_eff_waves_header_desc": "Gestalte Wellen aus Farbe! Mische dazu deine Lieblingsfarben und wähle einen Mittelpunkt.",
"edt_eff_whichleds": "Welche LEDs", "edt_eff_whichleds": "Welche LEDs",
"edt_eff_whitelevel": "Weißstufe", "edt_eff_whitelevel": "Weißstufe",
"edt_eff_x-mas_header": "Weihnachten", "edt_eff_x-mas_header": "Weihnachten",
@ -629,8 +631,8 @@
"edt_msg_button_collapse": "Einklappen", "edt_msg_button_collapse": "Einklappen",
"edt_msg_button_delete_all": "Alle", "edt_msg_button_delete_all": "Alle",
"edt_msg_button_delete_all_title": "Alle löschen", "edt_msg_button_delete_all_title": "Alle löschen",
"edt_msg_button_delete_last": "Letzes $1-Element", "edt_msg_button_delete_last": "Letztes $1-Element",
"edt_msg_button_delete_last_title": "Letzes $1-Element löschen", "edt_msg_button_delete_last_title": "Letztes $1-Element löschen",
"edt_msg_button_delete_row_title": "$1 Löschen", "edt_msg_button_delete_row_title": "$1 Löschen",
"edt_msg_button_delete_row_title_short": "Löschen", "edt_msg_button_delete_row_title_short": "Löschen",
"edt_msg_button_expand": "Ausklappen", "edt_msg_button_expand": "Ausklappen",
@ -705,10 +707,10 @@
"general_comp_FLATBUFSERVER": "Flatbuffers Server", "general_comp_FLATBUFSERVER": "Flatbuffers Server",
"general_comp_FORWARDER": "Weiterleitung", "general_comp_FORWARDER": "Weiterleitung",
"general_comp_GRABBER": "Plattform Aufnahme", "general_comp_GRABBER": "Plattform Aufnahme",
"general_comp_LEDDEVICE": "LED Hardware", "general_comp_LEDDEVICE": "LED-Hardware",
"general_comp_PROTOSERVER": "Protocol Buffers Server", "general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_SMOOTHING": "Glättung", "general_comp_SMOOTHING": "Glättung",
"general_comp_V4L": "USB Aufnahme", "general_comp_V4L": "USB-Aufnahme",
"general_country_de": "Deutschland", "general_country_de": "Deutschland",
"general_country_es": "Spanien", "general_country_es": "Spanien",
"general_country_fr": "Frankreich", "general_country_fr": "Frankreich",
@ -738,30 +740,30 @@
"infoDialog_general_warning_title": "Warnung", "infoDialog_general_warning_title": "Warnung",
"infoDialog_import_comperror_text": "Dein Browser unterstützt leider keinen Import. Bitte versuche es mit einem anderen Browser erneut.", "infoDialog_import_comperror_text": "Dein Browser unterstützt leider keinen Import. Bitte versuche es mit einem anderen Browser erneut.",
"infoDialog_import_confirm_text": "Bist du sicher, dass du die Konfigurations-Datei \"$1\" importieren möchtest? Diese Aktion kann nicht rückgängig gemacht werden!", "infoDialog_import_confirm_text": "Bist du sicher, dass du die Konfigurations-Datei \"$1\" importieren möchtest? Diese Aktion kann nicht rückgängig gemacht werden!",
"infoDialog_import_confirm_title": "Bestätige Import", "infoDialog_import_confirm_title": "Bestätige den Import",
"infoDialog_import_hyperror_text": "Die ausgewählte Konfigurations-Datei \"$1\" kann nicht importiert werden. Sie ist nicht kompatibel mit Hyperion 2.0 und höher!", "infoDialog_import_hyperror_text": "Die ausgewählte Konfigurations-Datei \"$1\" kann nicht importiert werden. Sie ist nicht kompatibel mit Hyperion 2.0 und höher!",
"infoDialog_import_jsonerror_text": "Die ausgewählte Konfigurations-Datei \"$1\" ist keine .json Datei oder ist beschädigt! Fehlermeldung: ($2)", "infoDialog_import_jsonerror_text": "Die ausgewählte Konfigurationsdatei \"$1\" ist nicht im JSON-Format oder ist beschädigt! Fehlermeldung: ($2)",
"infoDialog_wizrgb_text": "Deine RGB Byte Reihenfolge ist bereits richtig eingestellt.", "infoDialog_wizrgb_text": "Deine RGB Byte Reihenfolge ist bereits richtig eingestellt.",
"infoDialog_writeconf_error_text": "Das speichern der Konfiguration ist fehlgeschlagen.", "infoDialog_writeconf_error_text": "Das Speichern der Konfiguration ist fehlgeschlagen.",
"infoDialog_writeimage_error_text": "Die ausgewählte Datei \"$1\" ist keine Bilddatei oder ist beschädigt! Bitte wähle eine andere Bilddatei aus.", "infoDialog_writeimage_error_text": "Die ausgewählte Datei \"$1\" ist keine Bilddatei oder ist beschädigt! Bitte wähle eine andere Bilddatei aus.",
"info_404": "Die angeforderte Seite ist nicht verfügbar!", "info_404": "Die angeforderte Seite ist nicht verfügbar!",
"info_conlost_label_autorecon": "Du wirst verbunden, sobald Hyperion wieder verfügbar ist.", "info_conlost_label_autorecon": "Du wirst verbunden, sobald Hyperion wieder verfügbar ist.",
"info_conlost_label_autorefresh": "Diese Seite wird automatisch aktualisiert.", "info_conlost_label_autorefresh": "Diese Seite wird automatisch aktualisiert.",
"info_conlost_label_reason": "Mögliche Ursachen:", "info_conlost_label_reason": "Mögliche Ursachen:",
"info_conlost_label_reason1": "- Schlechte WLAN Verbindung", "info_conlost_label_reason1": "- Schlechte WLAN-Verbindung",
"info_conlost_label_reason2": "- Ein Update wird durchgeführt", "info_conlost_label_reason2": "- Ein Update wird durchgeführt",
"info_conlost_label_reason3": "- Hyperion wird nicht mehr ausgeführt", "info_conlost_label_reason3": "- Hyperion wird nicht mehr ausgeführt",
"info_conlost_label_reload": "Automatisches verbinden gestoppt - limit überschritten. Lade die Seite neu oder klick mich.", "info_conlost_label_reload": "Automatisches verbinden gestoppt - Limit überschritten. Lade die Seite neu oder klick mich.",
"info_conlost_label_title": "Verbindung zum Hyperion Service unterbrochen!", "info_conlost_label_title": "Verbindung zum Hyperion Service unterbrochen!",
"info_restart_contus": "Solltest du nach 20 Sekunden immer noch hier sein, ist etwas schief gelaufen. Öffne bitte in unserem Support Forum ein neues Thema...", "info_restart_contus": "Solltest du nach 20 Sekunden immer noch hier sein, ist etwas schiefgelaufen. Öffne bitte in unserem Support Forum ein neues Thema...",
"info_restart_contusa": "...mit deinen letztes Schritten. Danke!", "info_restart_contusa": "...mit deinen letztes Schritten. Danke!",
"info_restart_rightback": "Hyperion ist gleich wieder für dich da!", "info_restart_rightback": "Hyperion ist gleich wieder für dich da!",
"info_restart_title": "Startet gerade neu...", "info_restart_title": "Startet gerade neu...",
"main_ledsim_btn_togglelednumber": "LED Nummern", "main_ledsim_btn_togglelednumber": "LED Nummern",
"main_ledsim_btn_toggleleds": "Zeige LEDs", "main_ledsim_btn_toggleleds": "Zeige LEDs",
"main_ledsim_btn_togglelivevideo": "Live Video", "main_ledsim_btn_togglelivevideo": "Live Video",
"main_ledsim_text": "Eine live Visualisierung deiner LED Farben, sofern verfügbar kann ein live Video dazugeschalten werden.", "main_ledsim_text": "Eine live Visualisierung deiner LED-Farben und Vorschau des erfassten Videosignals.",
"main_ledsim_title": "LED Visualisierung", "main_ledsim_title": "LED-Visualisierung",
"main_menu_about_token": "Über Hyperion", "main_menu_about_token": "Über Hyperion",
"main_menu_colors_conf_token": "Bildverarbeitung", "main_menu_colors_conf_token": "Bildverarbeitung",
"main_menu_configuration_token": "Konfiguration", "main_menu_configuration_token": "Konfiguration",
@ -771,7 +773,7 @@
"main_menu_general_conf_token": "Allgemein", "main_menu_general_conf_token": "Allgemein",
"main_menu_grabber_conf_token": "Aufnahme Hardware", "main_menu_grabber_conf_token": "Aufnahme Hardware",
"main_menu_input_selection_token": "Eingabeauswahl", "main_menu_input_selection_token": "Eingabeauswahl",
"main_menu_leds_conf_token": "LED Hardware", "main_menu_leds_conf_token": "LED-Hardware",
"main_menu_logging_token": "Protokoll", "main_menu_logging_token": "Protokoll",
"main_menu_network_conf_token": "Netzwerk", "main_menu_network_conf_token": "Netzwerk",
"main_menu_remotecontrol_token": "Fernbedienung", "main_menu_remotecontrol_token": "Fernbedienung",
@ -791,7 +793,7 @@
"remote_effects_label_picture": "Bild:", "remote_effects_label_picture": "Bild:",
"remote_input_clearall": "Lösche alle Effekte/Farben", "remote_input_clearall": "Lösche alle Effekte/Farben",
"remote_input_duration": "Dauer:", "remote_input_duration": "Dauer:",
"remote_input_intro": "Hyperion nutzt ein Prioritätensystem um die Quelle zu wählen. Alles was du setzt hat eine Priorität (Effekte/Farben/Plattform Aufnahme/USB Aufnahme und Netzwerkquellen). Standardmäßig nutzt Hyperion die Quelle mit der niedrigsten Priorität. Hier kannst du aktiv Einfluss darauf nehmen. $1", "remote_input_intro": "Hyperion nutzt ein Prioritätensystem, um die Quelle zu wählen. Alles was du setzt hat eine Priorität (Effekte,Farben,Plattform Aufnahme,USB Aufnahme und Netzwerkquellen). Standardmäßig nutzt Hyperion die Quelle mit der niedrigsten Priorität. Hier kannst du aktiv Einfluss darauf nehmen. $1",
"remote_input_ip": "IP:", "remote_input_ip": "IP:",
"remote_input_label": "Quellenauswahl", "remote_input_label": "Quellenauswahl",
"remote_input_label_autoselect": "Automatische Auswahl", "remote_input_label_autoselect": "Automatische Auswahl",
@ -802,7 +804,7 @@
"remote_input_sourceactiv_btn": "Quelle aktiv", "remote_input_sourceactiv_btn": "Quelle aktiv",
"remote_input_status": "Status/Aktion", "remote_input_status": "Status/Aktion",
"remote_losthint": "Notiz: Alle Änderungen gehen nach einem Neustart verloren.", "remote_losthint": "Notiz: Alle Änderungen gehen nach einem Neustart verloren.",
"remote_maptype_intro": "Für gewöhnlich entscheidet dein LED Layout welchen Bildbereich welche LED bekommt, dies kann hier geändert werden. $1", "remote_maptype_intro": "Für gewöhnlich entscheidet dein LED-Layout welcher Bildbereich welche LED zugewiesen bekommt, dies kann hier geändert werden. $1",
"remote_maptype_label": "LED-Bereich Zuordnung", "remote_maptype_label": "LED-Bereich Zuordnung",
"remote_maptype_label_multicolor_mean": "Mehrfarbig", "remote_maptype_label_multicolor_mean": "Mehrfarbig",
"remote_maptype_label_unicolor_mean": "Einfarbig", "remote_maptype_label_unicolor_mean": "Einfarbig",
@ -811,11 +813,11 @@
"remote_videoMode_2D": "2D", "remote_videoMode_2D": "2D",
"remote_videoMode_3DSBS": "3DSBS", "remote_videoMode_3DSBS": "3DSBS",
"remote_videoMode_3DTAB": "3DTAB", "remote_videoMode_3DTAB": "3DTAB",
"remote_videoMode_intro": "Wähle zwischen verschiedenen Video Modi um neben 2D auch 3D Filme zu genießen. Unterstützt werden alle Aufnahmearten. $1", "remote_videoMode_intro": "Wähle zwischen verschiedenen Video Modi, um neben 2D auch 3D Filme zu genießen. Unterstützt werden alle Aufnahmearten. $1",
"remote_videoMode_label": "Video Modus", "remote_videoMode_label": "Video Modus",
"support_label_affinstr1": "Klicke auf den Link deines Landes", "support_label_affinstr1": "Klicke auf den Link deines Landes",
"support_label_affinstr2": "Kaufe wie gewohnt ein, abhängig von deinem Umsatz bekommen wir eine kleine Provision", "support_label_affinstr2": "Kaufe wie gewohnt ein, abhängig von deinem Umsatz bekommen wir eine kleine Provision",
"support_label_affinstr3": "Du zahlst immer den selben Preis. Teste es!", "support_label_affinstr3": "Du zahlst immer denselben Preis. Teste es!",
"support_label_btctext": "Adresse:", "support_label_btctext": "Adresse:",
"support_label_donate": "Spende oder nutze unsere Affiliate Links", "support_label_donate": "Spende oder nutze unsere Affiliate Links",
"support_label_donationpp": "Spende:", "support_label_donationpp": "Spende:",
@ -823,33 +825,33 @@
"support_label_forumtext": "Diskussion und Hilfestellung von der Community", "support_label_forumtext": "Diskussion und Hilfestellung von der Community",
"support_label_forumtitle": "Forum", "support_label_forumtitle": "Forum",
"support_label_ggtext": "Platziere uns in deinen Kreisen auf Google+", "support_label_ggtext": "Platziere uns in deinen Kreisen auf Google+",
"support_label_ghtext": "Besuche uns auf Github", "support_label_ghtext": "Besuche uns auf GitHub",
"support_label_igtext": "Schau doch mal bei Instagram vorbei!", "support_label_igtext": "Schau doch mal bei Instagram vorbei!",
"support_label_intro": "Hyperion ist ein kostenloses Open Source Projekt und ein kleines Team arbeitet an seiner Weiterentwicklung. Darum benötigen wir DEINE Unterstützung um weiter in bessere Infrastruktur und Weiterentwicklung investieren zu können.", "support_label_intro": "Hyperion ist ein kostenloses Open Source Projekt und ein kleines Team arbeitet an seiner Weiterentwicklung. Darum benötigen wir DEINE Unterstützung, um weiter in bessere Infrastruktur und Weiterentwicklung investieren zu können.",
"support_label_spreadtheword": "Weitersagen!", "support_label_spreadtheword": "Weitersagen!",
"support_label_title": "Unterstütze Hyperion", "support_label_title": "Unterstütze Hyperion",
"support_label_twtext": "Nutze die 140 Zeichen und bleibe auf dem Laufenden auch auf Twitter", "support_label_twtext": "Nutze die 140 Zeichen und bleibe auf dem Laufenden auch auf Twitter",
"support_label_webpagetext": "Das Zuhause von Hyperion", "support_label_webpagetext": "Das Zuhause von Hyperion",
"support_label_webpagetitle": "Internetseite", "support_label_webpagetitle": "Internetseite",
"support_label_webrestitle": "Informationsquellen und Hilfe", "support_label_webrestitle": "Informationsquellen und Hilfe",
"support_label_wikitext": "Von A bis Z - Alles wissenwerte zu Hyperion", "support_label_wikitext": "Von A bis Z - Alles wissenswerte zu Hyperion",
"support_label_wikititle": "Wiki", "support_label_wikititle": "Wiki",
"support_label_yttext": "Gelangweilt von Bildern? Werfe einen Blick auf unsere Youtube Videos", "support_label_yttext": "Gelangweilt von Bildern? Wirf einen Blick auf unsere YouTube Videos",
"update_button_changelog": "Zeige Änderungsprotokoll", "update_button_changelog": "Zeige Änderungsprotokoll",
"update_button_install": "Installieren", "update_button_install": "Installieren",
"update_error_getting_versions": "Wir hatten Probleme die verfügbaren Versionen zu ermitteln.", "update_error_getting_versions": "Wir hatten Probleme die verfügbaren Versionen zu ermitteln.",
"update_label_description": "Beschreibung:", "update_label_description": "Beschreibung:",
"update_label_intro": "Diese Seite zeigt dir alle verfügbaren Versionen von Hyperion, du kannst nach Belieben eine aktuellere Version installieren oder eine Ältere. Die aktuellsten Versionen befinden sich immer oben.", "update_label_intro": "Diese Seite zeigt dir alle verfügbaren Versionen von Hyperion, du kannst nach Belieben eine aktuellere Version installieren oder eine Ältere. Die aktuellen Versionen befinden sich immer oben.",
"update_label_type": "Art:", "update_label_type": "Art:",
"update_no_updates_for_branch": "Keine Updates für ausgewählten Channel verfügbar.", "update_no_updates_for_branch": "Keine Updates für ausgewählten Channel verfügbar.",
"update_versreminder": "Deine Version: $1", "update_versreminder": "Deine Version: $1",
"wiz_atmoorb_desc2": "Nun kannst du auswählen, welche der Orbs hinzugefügt werden sollen. Mit der Position wählst du aus, wo die jeweilige Lampe \"im Bild\" sitzen soll. Deaktivierte Lampen werden nicht hinzugefügt. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen.", "wiz_atmoorb_desc2": "Nun kannst du auswählen, welche der Orbs hinzugefügt werden sollen. Mit der Position wählst du aus, wo die jeweilige Lampe \"im Bild\" sitzen soll. Deaktivierte Lampen werden nicht hinzugefügt. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen.",
"wiz_atmoorb_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für AtmoOrb. Zu den Funktionen zählen ein automatisches finden der AtmoOrbs, die einzelnen Lampen unterschiedlichen Bereichen im Bild zuzuordnen und weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.", "wiz_atmoorb_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für AtmoOrb. Zu den Funktionen zählen ein automatisches Finden der AtmoOrbs, die einzelnen Lampen unterschiedlichen Bereichen im Bild zuzuordnen und weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.",
"wiz_atmoorb_noLights": "Es wurden keine AtmoOrbs gefunden! Bitte verbinde die AtmoOrbs mit dem Netzwerk oder konfiguriere sie manuell.", "wiz_atmoorb_noLights": "Es wurden keine AtmoOrbs gefunden! Bitte verbinde die AtmoOrbs mit dem Netzwerk oder konfiguriere sie manuell.",
"wiz_atmoorb_title": "AtmoOrb Einrichtungsassistent", "wiz_atmoorb_title": "AtmoOrb Einrichtungsassistent",
"wiz_cc_adjustgamma": "Gamma: Was du jetzt tun musst ist, jeden Gamma-Kanal so einstellen, dass der \"Grauverlauf\" auf den LEDs nicht grünlich/rötlich/bläulich aussieht. Neutral ist übrigens 1.0. Beispiel: Sollte dein grau etwas rötlich sein bedeutet dies, dass du dein Gamma für Rot erhöhen musst um den Rot-Anteil zu verringern (Je mehr Gamma, desto weniger Farbe).", "wiz_cc_adjustgamma": "Gamma: Was du jetzt tun musst ist, jeden Gamma-Kanal so einstellen, dass der \"Grauverlauf\" auf den LEDs nicht grünlich/rötlich/bläulich aussieht. Neutral ist übrigens 1.0. Beispiel: Sollte dein grau etwas rötlich sein bedeutet dies, dass du dein Gamma für Rot erhöhen musst, um den Rot-Anteil zu verringern (Je mehr Gamma, desto weniger Farbe).",
"wiz_cc_adjustit": "Verändere dein \"$1\", bis du zufrieden bist. Beachte: Je mehr du reduzierst bzw von dem Standardwert abweichst, je mehr veränderst du den maximalen Farbraum, was alle Farben die daraus abgeleitet werden ebenfalls betrifft. Je nach TV/LED Farbspektrum sind die Ergebnisse unterschiedlich.", "wiz_cc_adjustit": "Verändere dein \"$1\", bis du zufrieden bist. Beachte: Je mehr du reduzierst bzw. von dem Standardwert abweichst, je mehr veränderst du den maximalen Farbraum. Das betrifft alle Farben, die daraus abgeleitet werden. Je nach TV/LED Farbspektrum sind die Ergebnisse unterschiedlich.",
"wiz_cc_backlight": "Zusätzlich kannst du eine Hintergrundbeluchtung einstellen, um \"irritierende Farben\" bei fast schwarzem Bild zu vermeiden oder du den Wechsel zwischen Farbe und Aus als zu anstrengend empfindest. Zusätzlich kann bestimmt werden, ob diese farbig oder nur weiß sein soll. Wird automatisch deaktiviert im Zustand \"Aus\" sowie bei \"Farbe\" und \"Effekt\".", "wiz_cc_backlight": "Zusätzlich kannst du eine Hintergrundbeleuchtung einstellen, um \"irritierende Farben\" bei fast schwarzem Bild zu vermeiden oder du den Wechsel zwischen Farbe und Aus als zu anstrengend empfindest. Zusätzlich kann bestimmt werden, ob diese farbig oder nur weiß sein soll. Wird automatisch deaktiviert im Zustand \"Aus\" sowie bei \"Farbe\" und \"Effekt\".",
"wiz_cc_btn_stop": "Stoppe Video", "wiz_cc_btn_stop": "Stoppe Video",
"wiz_cc_btn_switchpic": "Testbild ändern", "wiz_cc_btn_switchpic": "Testbild ändern",
"wiz_cc_chooseid": "Wähle einen Namen für dieses Farb-Profil.", "wiz_cc_chooseid": "Wähle einen Namen für dieses Farb-Profil.",
@ -859,40 +861,40 @@
"wiz_cc_kodidisconlink": "Download Link Bilder:", "wiz_cc_kodidisconlink": "Download Link Bilder:",
"wiz_cc_kodimsg_start": "Test bestanden - Zeit zu beginnen", "wiz_cc_kodimsg_start": "Test bestanden - Zeit zu beginnen",
"wiz_cc_kodishould": "Kodi sollte jetzt folgendes Bild anzeigen: $1", "wiz_cc_kodishould": "Kodi sollte jetzt folgendes Bild anzeigen: $1",
"wiz_cc_kwebs": "Kodi Webserver (IP:Port)", "wiz_cc_kwebs": "Kodi Webserver (IP-Adresse:Port)",
"wiz_cc_lettvshow": "Lass dabei deinen Fernseher folgendes Bild anzeigen: $1", "wiz_cc_lettvshow": "Lass dabei deinen Fernseher folgendes Bild anzeigen: $1",
"wiz_cc_lettvshowm": "Überprüfe dies mithilfe folgender Bildern: $1", "wiz_cc_lettvshowm": "Überprüfe dies mithilfe folgender Bilder: $1",
"wiz_cc_link": "Klick mich", "wiz_cc_link": "Klick mich",
"wiz_cc_morethanone": "Du hast mehr als 1 Profil, bitte wähle das zu kalibrierende Profil", "wiz_cc_morethanone": "Du hast mehr als 1 Profil, bitte wähle das zu kalibrierende Profil",
"wiz_cc_summary": "Im folgenden eine Zusammenfassung deiner Einstellungen. Während du ein Video abspielst, kannst du hier weiter ausprobieren. Wenn du fertig bist, klicke auf speichern.", "wiz_cc_summary": "Im Folgenden eine Zusammenfassung deiner Einstellungen. Während du ein Video abspielst, kannst du hier weiter ausprobieren. Wenn du fertig bist, klicke auf Speichern.",
"wiz_cc_testintro": "Nun ist es an der Zeit für einen Testlauf.", "wiz_cc_testintro": "Nun ist es an der Zeit für einen Testlauf.",
"wiz_cc_testintrok": "Klicke auf einen Button, um eines der Testvideos abzuspielen.", "wiz_cc_testintrok": "Klicke auf einen Button, um eines der Testvideos abzuspielen.",
"wiz_cc_testintrowok": "Unter folgendem Link findest du ein paar Testvideos zum herunterladen und abspielen:", "wiz_cc_testintrowok": "Unter folgendem Link findest du ein paar Testvideos zum Herunterladen und Abspielen:",
"wiz_cc_title": "Farbkalibrierungs Assistent", "wiz_cc_title": "Farbkalibrierungs Assistent",
"wiz_guideyou": "Der $1 wird dich durch die Konfiguration leiten, drücke dazu einfach den Button!", "wiz_guideyou": "Der $1 wird dich durch die Konfiguration leiten, drücke dazu einfach den Button!",
"wiz_hue_blinkblue": "Lasse ID $1 blau aufleuchten", "wiz_hue_blinkblue": "Lasse ID $1 blau aufleuchten",
"wiz_hue_clientkey": "Clientkey:", "wiz_hue_clientkey": "Clientkey:",
"wiz_hue_create_user": "Neuen Benutzer erstellen", "wiz_hue_create_user": "Neuen Benutzer erstellen",
"wiz_hue_desc1": "Es wird automatisch nach der Hue Bridge gesucht, solltest sie nicht gefunden werden, gebe die IP an und drücke den \"neu laden\" Button. Danach benötigst du eine gültige Benutzer ID, diese kann auch erstellt werden.", "wiz_hue_desc1": "Es wird automatisch nach der Hue Bridge gesucht, sollte sie nicht gefunden werden, gebe die IP-Adresse an und drücke den \"neu laden\" Button. Danach benötigst du eine gültige Benutzer-ID. Diese kann hier auch erstellt werden.",
"wiz_hue_desc2": "Nun kannst du auswählen, welche der Lampen (IDs) hinzugefügt werden sollen. Mit der Position wählst du aus, wo die jeweilige Lampe \"im Bild\" sitzen soll. Deaktivierte Lampen werden nicht hinzugefügt. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen.", "wiz_hue_desc2": "Nun kannst du auswählen, welche der Lampen (IDs) hinzugefügt werden sollen. Mit der Position wählst du aus, wo die jeweilige Lampe \"im Bild\" sitzen soll. Deaktivierte Lampen werden nicht hinzugefügt. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen.",
"wiz_hue_e_clientkey_needed": "Für die Verwendung der Entertainment API, ist ein zum Usernamen passender Clientkey erforderlich. Bitte einen vorhandenen eingeben oder über die Schaltflächen unten einen neuen erstellen.", "wiz_hue_e_clientkey_needed": "Für die Verwendung der Entertainment-API, ist ein zum Benutzernamen passender Clientkey erforderlich. Bitte einen vorhandenen eingeben oder über die Schaltflächen unten einen neuen erstellen.",
"wiz_hue_e_create_user": "Neuen Benutzer und Clientkey erstellen", "wiz_hue_e_create_user": "Neuen Benutzer und Clientkey erstellen",
"wiz_hue_e_desc1": "Es wird automatisch nach der Hue Bridge gesucht, solltest sie nicht gefunden werden, gebe die IP an und drücke den \"neu laden\" Button. Danach benötigst du eine gültige Benutzer ID und den dazugehörigen Clientkey, damit die Entertainment API verwendet werden kann. Beides kann auch automatisch erstellt werden.", "wiz_hue_e_desc1": "Es wird automatisch nach der Hue-Bridge gesucht, sollte sie nicht gefunden werden, gebe die IP an und drücke den \"neu laden\" Button. Danach benötigst du eine gültige Benutzer-ID und den dazugehörigen Clientkey, damit die Entertainment API verwendet werden kann. Beides kann hier automatisch erstellt werden.",
"wiz_hue_e_desc2": "Nun kannst du die Entertainment Gruppe auswählen, welche die Lampen zur Verwendung mit Hyperion beinhaltet.", "wiz_hue_e_desc2": "Nun kannst du die Entertainment Gruppe auswählen, welche die Lampen zur Verwendung mit Hyperion beinhaltet.",
"wiz_hue_e_desc3": "Nun kannst du auswählen, mit welcher Position die jeweilige Lampe \"im Bild\" sitzen soll. Eine Vorauswahl der Position, wurde Anhand der konfigurierten Positionen der Lampen in der Entertainment Gruppe gewählt. Dies ist nur eine Empfehlung und kann beliebig angepasst werden. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen und die Auswahl zu verbessern.", "wiz_hue_e_desc3": "Nun kannst du auswählen, mit welcher Position die jeweilige Lampe \"im Bild\" sitzen soll. Eine Vorauswahl der Position, wurde Anhand der konfigurierten Positionen der Lampen in der Entertainment Gruppe gewählt. Dies ist nur eine Empfehlung und kann beliebig angepasst werden. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen und die Auswahl zu verbessern.",
"wiz_hue_e_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für Philips Hue Entertainment. Zu den Funktionen zählen ein automatisches finden der Hue Bridge, einen neuen Benutzer und dazugehörigen Clientkey zum verwenden der Entertainment API erstellen, eine Entertainment Gruppenauswahl und die zur Gruppe gehörenden Lampen unterschiedlichen Bereichen im Bild zuzuordnen, sowie weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.", "wiz_hue_e_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für Philips Hue Entertainment. Zu den Funktionen zählen ein automatisches finden der Hue-Bridge, einen neuen Benutzer und dazugehörigen Clientkey zum Verwenden der Entertainment-API erstellen, eine Entertainment Gruppenauswahl und die zur Gruppe gehörenden Lampen unterschiedlichen Bereichen im Bild zuzuordnen, sowie weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.",
"wiz_hue_e_noapisupport": "Der Assistent hat die Entertainment API Unterstützung deaktiviert und wird mit der klassischen API weitergeführt.", "wiz_hue_e_noapisupport": "Der Assistent hat die Entertainment-API Unterstützung deaktiviert und wird mit der klassischen API weitergeführt.",
"wiz_hue_e_noapisupport_hint": "Die Einstellung \"<b>Hue Entertainment API verwenden</b>\" wurde deaktiviert.", "wiz_hue_e_noapisupport_hint": "Die Einstellung \"<b>Hue Entertainment-API verwenden</b>\" wurde deaktiviert.",
"wiz_hue_e_noegrpids": "Es wurden keine Entertainment Gruppen in dieser Hue Bridge gefunden.", "wiz_hue_e_noegrpids": "Es wurden keine Entertainment Gruppen in dieser Hue-Bridge gefunden.",
"wiz_hue_e_nogrpids": "Diese Hue Bridge hat keine definierten Gruppen, bitte erstelle zuvor wenigstens eine in der Hue App.", "wiz_hue_e_nogrpids": "Diese Hue Bridge hat keine definierten Gruppen, bitte erstelle zuvor wenigstens eine in der Hue App.",
"wiz_hue_e_title": "Philips Hue Entertainment Assistent", "wiz_hue_e_title": "Philips Hue Entertainment Assistent",
"wiz_hue_e_use_group": "Gruppe verwenden", "wiz_hue_e_use_group": "Gruppe verwenden",
"wiz_hue_e_use_groupid": "Gruppen ID $1 verwenden", "wiz_hue_e_use_groupid": "Gruppen ID $1 verwenden",
"wiz_hue_failure_connection": "Zeitüberschreitung. Bitte drücke die Taste auf deiner Hue Bridge rechtzeitig", "wiz_hue_failure_connection": "Zeitüberschreitung. Bitte drücke die Taste auf deiner Hue Bridge rechtzeitig",
"wiz_hue_failure_ip": "Keine Hue Bridge gefunden, bitte überprüfe die IP", "wiz_hue_failure_ip": "Keine Hue Bridge gefunden, bitte überprüfe die IP",
"wiz_hue_failure_user": "Benutzer ID wurde nicht gefunden, erstelle eine neue, indem du auf den nachfolgenden Button klickst, oder gib eine bereits registrierte an und klicke dann auf das \"neu laden\" Symbol.", "wiz_hue_failure_user": "Die Benutzer-ID wurde nicht gefunden. Erstelle eine Neue, indem du auf den nachfolgenden Button klickst oder gib eine bereits registrierte an und klicke dann auf das \"neu laden\" Symbol.",
"wiz_hue_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für Philips Hue. Zu den Funktionen zählen ein automatisches finden der Hue Bridge, einen neuen Benutzer erstellen, die einzelnen Lampen unterschiedlichen Bereichen im Bild zuzuordnen und weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.", "wiz_hue_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für Philips Hue. Zu den Funktionen zählen ein automatisches Finden der Hue-Bridge, einen neuen Benutzer erstellen, die einzelnen Lampen unterschiedlichen Bereichen im Bild zuzuordnen und weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.",
"wiz_hue_ip": "Hue Bridge IP:", "wiz_hue_ip": "Hue-Bridge IP-Adresse:",
"wiz_hue_noids": "Diese Hue Bridge hat keine verbundenen Lampen, bitte verbinde diese zuerst mit deiner Hue Bridge (Nutze die Hue Apps dafür)", "wiz_hue_noids": "Diese Hue Bridge hat keine verbundenen Lampen, bitte verbinde diese zuerst mit deiner Hue Bridge (Nutze die Hue Apps dafür)",
"wiz_hue_press_link": "Bitte \"Link\" Taste auf der Hue Bridge drücken.", "wiz_hue_press_link": "Bitte \"Link\" Taste auf der Hue Bridge drücken.",
"wiz_hue_searchb": "Suche nach Hue Bridge...", "wiz_hue_searchb": "Suche nach Hue Bridge...",
@ -904,8 +906,8 @@
"wiz_ids_entire": "Ganzes Bild", "wiz_ids_entire": "Ganzes Bild",
"wiz_pos": "Position/Status", "wiz_pos": "Position/Status",
"wiz_rgb_expl": "Der Farbpunkt ändert alle x Sekunden die Farbe (rot, grün), zur selben Zeit ändern deine LEDs die Farbe ebenfalls. Beantworte die Fragen unten, um deine RGB Byte Reihenfolge zu überprüfen/korrigieren.", "wiz_rgb_expl": "Der Farbpunkt ändert alle x Sekunden die Farbe (rot, grün), zur selben Zeit ändern deine LEDs die Farbe ebenfalls. Beantworte die Fragen unten, um deine RGB Byte Reihenfolge zu überprüfen/korrigieren.",
"wiz_rgb_intro1": "Dieser Assisent wird dir dabei helfen die richtige Byte Reihenfolge für deine leds zu finden. Klicke auf Fortfahren um zu beginnen.", "wiz_rgb_intro1": "Dieser Assistent wird dir dabei helfen die richtige Byte Reihenfolge für deine LEDs zu finden. Klicke auf Fortfahren, um zu beginnen.",
"wiz_rgb_intro2": "Wann benötigt man diesen Assistenten? Zur Erstkonfiguration oder wenn deine LEDs zb rot leuchten sollten, sie aber blau oder grün sind.", "wiz_rgb_intro2": "Wann benötigt man diesen Assistenten? Zur Erstkonfiguration oder wenn deine LEDs z.B. rot leuchten sollten, sie aber blau oder grün sind.",
"wiz_rgb_q": "Welche Farbe zeigen deine LEDs, wenn der Farbpunkt oben...", "wiz_rgb_q": "Welche Farbe zeigen deine LEDs, wenn der Farbpunkt oben...",
"wiz_rgb_qgend": "...grün ist?", "wiz_rgb_qgend": "...grün ist?",
"wiz_rgb_qrend": "...rot ist?", "wiz_rgb_qrend": "...rot ist?",
@ -913,8 +915,8 @@
"wiz_rgb_title": "RGB Byte Reihenfolge Assistent", "wiz_rgb_title": "RGB Byte Reihenfolge Assistent",
"wiz_wizavail": "Assistent verfügbar", "wiz_wizavail": "Assistent verfügbar",
"wiz_yeelight_desc2": "Nun kannst du auswählen, welche der Lampen hinzugefügt werden sollen. Mit der Position wählst du aus, wo die jeweilige Lampe \"im Bild\" sitzen soll. Deaktivierte Lampen werden nicht hinzugefügt. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen.", "wiz_yeelight_desc2": "Nun kannst du auswählen, welche der Lampen hinzugefügt werden sollen. Mit der Position wählst du aus, wo die jeweilige Lampe \"im Bild\" sitzen soll. Deaktivierte Lampen werden nicht hinzugefügt. Als Hilfe zur Identifizierung kannst du sie mit einem Klick auf den rechten Button kurz aufleuchten lassen.",
"wiz_yeelight_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für Yeelight. Zu den Funktionen zählen ein automatisches finden der Yeelights, die einzelnen Lampen unterschiedlichen Bereichen im Bild zuzuordnen und weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.", "wiz_yeelight_intro1": "Dieser Assistent hilft dir bei der Konfiguration von Hyperion für Yeelight. Zu den Funktionen zählen ein automatisches Finden der Yeelights, die einzelnen Lampen unterschiedlichen Bereichen im Bild zuzuordnen und weitere Einstellungen von Hyperion automatisch anzupassen. Kurz gesagt: Komplette Einrichtung mit ein paar Klicks.",
"wiz_yeelight_noLights": "Es wurden keine Yeelights gefunden! Bitte verbinde die Yeelights mit dem Netzwerk oder konfiguriere sie manuell.", "wiz_yeelight_noLights": "Es wurden keine Yeelights gefunden! Bitte verbinde die Yeelights mit dem Netzwerk oder konfiguriere sie manuell.",
"wiz_yeelight_title": "Yeelight Einrichtungsassistent", "wiz_yeelight_title": "Yeelight Einrichtungsassistent",
"wiz_yeelight_unsupported": "Nicht unterstützt" "wiz_yeelight_unsupported": "Nicht unterstützt"
} }

View File

@ -711,13 +711,13 @@
"general_comp_PROTOSERVER": "Protocol Buffers Server", "general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_SMOOTHING": "Smoothing", "general_comp_SMOOTHING": "Smoothing",
"general_comp_V4L": "USB Capture", "general_comp_V4L": "USB Capture",
"general_country_cn": "China", "general_country_cn": "China",
"general_country_de": "Germany", "general_country_de": "Germany",
"general_country_es": "Spain", "general_country_es": "Spain",
"general_country_fr": "France", "general_country_fr": "France",
"general_country_it": "Italy", "general_country_it": "Italy",
"general_country_nl": "Netherlands", "general_country_nl": "Netherlands",
"general_country_ru": "Russia", "general_country_ru": "Russia",
"general_country_uk": "United Kingdom", "general_country_uk": "United Kingdom",
"general_country_us": "United States", "general_country_us": "United States",
"general_speech_cs": "Czech", "general_speech_cs": "Czech",
@ -729,11 +729,14 @@
"general_speech_nl": "Dutch", "general_speech_nl": "Dutch",
"general_speech_pl": "Polish", "general_speech_pl": "Polish",
"general_speech_ro": "Romanian", "general_speech_ro": "Romanian",
"general_speech_ru": "Russian", "general_speech_ru": "Russian",
"general_speech_sv": "Swedish",
"general_speech_tr": "Turkish",
"general_speech_vi": "Vietnamese",
"general_speech_zh-CN": "Chinese (simplified)",
"general_speech_sv": "Swedish", "general_speech_sv": "Swedish",
"general_speech_tr": "Turkish", "general_speech_tr": "Turkish",
"general_speech_vi": "Vietnamese", "general_speech_vi": "Vietnamese",
"general_speech_zh-CN": "Chinese (simplified)",
"general_webui_title": "Hyperion - Web Configuration", "general_webui_title": "Hyperion - Web Configuration",
"general_wiki_moreto": "More information to \"$1\" at our Wiki", "general_wiki_moreto": "More information to \"$1\" at our Wiki",
"infoDialog_checklist_title": "Checklist!", "infoDialog_checklist_title": "Checklist!",
@ -924,4 +927,3 @@
"wiz_yeelight_title": "Yeelight Wizard", "wiz_yeelight_title": "Yeelight Wizard",
"wiz_yeelight_unsupported": "Unsupported" "wiz_yeelight_unsupported": "Unsupported"
} }

View File

@ -568,7 +568,7 @@ $(document).ready(function() {
// create led device selection // create led device selection
var ledDevices = window.serverInfo.ledDevices.available; var ledDevices = window.serverInfo.ledDevices.available;
var devRPiSPI = ['apa102', 'apa104', 'ws2801', 'lpd6803', 'lpd8806', 'p9813', 'sk6812spi', 'sk6822spi', 'ws2812spi']; var devRPiSPI = ['apa102', 'apa104', 'ws2801', 'lpd6803', 'lpd8806', 'p9813', 'sk6812spi', 'sk6822spi', 'sk9822', 'ws2812spi'];
var devRPiPWM = ['ws281x']; var devRPiPWM = ['ws281x'];
var devRPiGPIO = ['piblaster']; var devRPiGPIO = ['piblaster'];
var devNET = ['atmoorb', 'fadecandy', 'philipshue', 'nanoleaf', 'tinkerforge', 'tpm2net', 'udpe131', 'udpartnet', 'udph801', 'udpraw', 'wled', 'yeelight']; var devNET = ['atmoorb', 'fadecandy', 'philipshue', 'nanoleaf', 'tinkerforge', 'tpm2net', 'udpe131', 'udpartnet', 'udph801', 'udpraw', 'wled', 'yeelight'];

View File

@ -207,7 +207,7 @@ function initLanguageSelection()
{ {
// If language is not supported by hyperion, try fallback language // If language is not supported by hyperion, try fallback language
langLocale = $.i18n().options.fallbackLocale.substring(0,2); langLocale = $.i18n().options.fallbackLocale.substring(0,2);
langIdx = availLang.indexOf(langLocale) langIdx = availLang.indexOf(langLocale);
if ( langIdx > -1 ) if ( langIdx > -1 )
{ {
langText = availLangText[langIdx]; langText = availLangText[langIdx];

View File

@ -1552,7 +1552,7 @@ function assign_yeelight_lights(){
options+= '>'+$.i18n(txt+val)+'</option>'; options+= '>'+$.i18n(txt+val)+'</option>';
} }
var enabled = 'enabled' var enabled = 'enabled';
if (! models.includes (lights[lightid].model) ) if (! models.includes (lights[lightid].model) )
{ {
var enabled = 'disabled'; var enabled = 'disabled';
@ -1752,7 +1752,7 @@ async function discover_atmoorb_lights(multiCastGroup, multiCastPort){
// TODO: error case unhandled // TODO: error case unhandled
// res can be: false (timeout) or res.error (not found) // res can be: false (timeout) or res.error (not found)
if(res && !res.error){ if(res && !res.error){
const r = res.info const r = res.info;
// Process devices returned by discovery // Process devices returned by discovery
for(const device of r.devices) for(const device of r.devices)
@ -1832,10 +1832,10 @@ function assign_atmoorb_lights(){
options+= '>'+$.i18n(txt+val)+'</option>'; options+= '>'+$.i18n(txt+val)+'</option>';
} }
var enabled = 'enabled' var enabled = 'enabled';
if ( orbId < 1 || orbId > 255 ) if ( orbId < 1 || orbId > 255 )
{ {
enabled = 'disabled' enabled = 'disabled';
options = '<option value=disabled>'+$.i18n('wiz_atmoorb_unsupported')+'</option>'; options = '<option value=disabled>'+$.i18n('wiz_atmoorb_unsupported')+'</option>';
} }

View File

@ -58,13 +58,15 @@ ENDIF()
# https://cmake.org/Wiki/CMake:CPackPackageGenerators # https://cmake.org/Wiki/CMake:CPackPackageGenerators
# .deb files for apt # .deb files for apt
SET ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/preinst;${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/postinst;${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/prerm" ) SET ( CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/preinst;${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/postinst;${CMAKE_CURRENT_SOURCE_DIR}/cmake/debian/prerm" )
SET ( CPACK_DEBIAN_PACKAGE_DEPENDS "libcec4" )
SET ( CPACK_DEBIAN_PACKAGE_SECTION "Miscellaneous" ) SET ( CPACK_DEBIAN_PACKAGE_SECTION "Miscellaneous" )
# .rpm for rpm # .rpm for rpm
# https://cmake.org/cmake/help/v3.5/module/CPackRPM.html # https://cmake.org/cmake/help/v3.5/module/CPackRPM.html
SET ( CPACK_RPM_PACKAGE_RELEASE 1) SET ( CPACK_RPM_PACKAGE_RELEASE 1 )
SET ( CPACK_RPM_PACKAGE_LICENSE "MIT") SET ( CPACK_RPM_PACKAGE_LICENSE "MIT" )
SET ( CPACK_RPM_PACKAGE_GROUP "Applications") SET ( CPACK_RPM_PACKAGE_GROUP "Applications" )
SET ( CPACK_RPM_PACKAGE_REQUIRES "libcec4" )
SET ( CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm/preinst" ) SET ( CPACK_RPM_PRE_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm/preinst" )
SET ( CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm/postinst" ) SET ( CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm/postinst" )
SET ( CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm/prerm" ) SET ( CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/rpm/prerm" )

View File

@ -31,6 +31,9 @@ The SK6812 are **3** wire leds, you could also drive them via spi.
#### sk6822spi #### sk6822spi
The SK6822 are **3** wire leds, you could also drive them via spi. The SK6822 are **3** wire leds, you could also drive them via spi.
#### sk9822
The SK9822 are **4** wire leds compatible to APA 102 with addition of global brightness control.
#### ws2812spi #### ws2812spi
The WS2812 are **3** wire leds, you could also drive them via spi. The WS2812 are **3** wire leds, you could also drive them via spi.

View File

@ -7,6 +7,7 @@
// qt // qt
#include <QVector> #include <QVector>
class BonjourServiceRegister;
class QTcpServer; class QTcpServer;
class FlatBufferClient; class FlatBufferClient;
class NetOrigin; class NetOrigin;
@ -63,6 +64,7 @@ private:
int _timeout; int _timeout;
quint16 _port; quint16 _port;
const QJsonDocument _config; const QJsonDocument _config;
BonjourServiceRegister * _serviceRegister = nullptr;
QVector<FlatBufferClient*> _openConnections; QVector<FlatBufferClient*> _openConnections;
}; };

View File

@ -1,10 +1,16 @@
#include <flatbufserver/FlatBufferServer.h> #include <flatbufserver/FlatBufferServer.h>
#include "FlatBufferClient.h" #include "FlatBufferClient.h"
#include "HyperionConfig.h"
// util // util
#include <utils/NetOrigin.h> #include <utils/NetOrigin.h>
#include <utils/GlobalSignals.h> #include <utils/GlobalSignals.h>
// bonjour
#ifdef ENABLE_AVAHI
#include <bonjour/bonjourserviceregister.h>
#endif
// qt // qt
#include <QJsonObject> #include <QJsonObject>
#include <QTcpServer> #include <QTcpServer>
@ -93,14 +99,27 @@ void FlatBufferServer::startServer()
{ {
if(!_server->isListening()) if(!_server->isListening())
{ {
if(!_server->listen(QHostAddress::Any, _port)) if(!_server->listen(QHostAddress::Any, _port))
{ {
Error(_log,"Failed to bind port %d", _port); Error(_log,"Failed to bind port %d", _port);
} }
else else
{ {
Info(_log,"Started on port %d", _port); Info(_log,"Started on port %d", _port);
} #ifdef ENABLE_AVAHI
if(_serviceRegister == nullptr)
{
_serviceRegister = new BonjourServiceRegister(this);
_serviceRegister->registerService("_hyperiond-flatbuf._tcp", _port);
}
else if(_serviceRegister->getPort() != _port)
{
delete _serviceRegister;
_serviceRegister = new BonjourServiceRegister(this);
_serviceRegister->registerService("_hyperiond-flatbuf._tcp", _port);
}
#endif
}
} }
} }

View File

@ -39,7 +39,7 @@
{ {
"type" : "type" :
{ {
"enum" : ["file", "apa102", "apa104", "ws2801", "lpd6803", "lpd8806", "p9813", "sk6812spi", "sk6822spi", "ws2812spi","ws281x", "piblaster", "adalight", "dmx", "atmo", "hyperionusbasp", "lightpack", "multilightpack", "paintpack", "rawhid", "sedu", "tpm2", "karate"] "enum" : ["file", "apa102", "apa104", "ws2801", "lpd6803", "lpd8806", "p9813", "sk6812spi", "sk6822spi", "sk9822", "ws2812spi","ws281x", "piblaster", "adalight", "dmx", "atmo", "hyperionusbasp", "lightpack", "multilightpack", "paintpack", "rawhid", "sedu", "tpm2", "karate"]
} }
}, },
"additionalProperties" : true "additionalProperties" : true

View File

@ -2,6 +2,7 @@
#include <stdexcept> #include <stdexcept>
// project includes // project includes
#include "HyperionConfig.h"
#include <jsonserver/JsonServer.h> #include <jsonserver/JsonServer.h>
#include "JsonClientConnection.h" #include "JsonClientConnection.h"
@ -49,6 +50,7 @@ void JsonServer::start()
return; return;
} }
Info(_log, "Started on port %d", _port); Info(_log, "Started on port %d", _port);
#ifdef ENABLE_AVAHI #ifdef ENABLE_AVAHI
if(_serviceRegister == nullptr) if(_serviceRegister == nullptr)
{ {

View File

@ -20,6 +20,7 @@
<file alias="schema-sedu">schemas/schema-sedu.json</file> <file alias="schema-sedu">schemas/schema-sedu.json</file>
<file alias="schema-sk6812spi">schemas/schema-sk6812spi.json</file> <file alias="schema-sk6812spi">schemas/schema-sk6812spi.json</file>
<file alias="schema-sk6822spi">schemas/schema-sk6822spi.json</file> <file alias="schema-sk6822spi">schemas/schema-sk6822spi.json</file>
<file alias="schema-sk9822">schemas/schema-sk9822.json</file>
<file alias="schema-tinkerforge">schemas/schema-tinkerforge.json</file> <file alias="schema-tinkerforge">schemas/schema-tinkerforge.json</file>
<file alias="schema-tpm2net">schemas/schema-tpm2net.json</file> <file alias="schema-tpm2net">schemas/schema-tpm2net.json</file>
<file alias="schema-tpm2">schemas/schema-tpm2.json</file> <file alias="schema-tpm2">schemas/schema-tpm2.json</file>

View File

@ -247,7 +247,7 @@ int YeelightLight::writeCommand( const QJsonDocument &command, QJsonArray &resul
if ( elapsedTime < _waitTimeQuota ) if ( elapsedTime < _waitTimeQuota )
{ {
int waitTime = _waitTimeQuota; int waitTime = _waitTimeQuota;
log ( 1, "writeCommand():", "Wait %dms, elapsedTime: %llms < quotaTime: %dms", waitTime, elapsedTime, _waitTimeQuota); log ( 1, "writeCommand():", "Wait %dms, elapsedTime: %dms < quotaTime: %dms", waitTime, elapsedTime, _waitTimeQuota);
// Wait time (in ms) before doing next write to not overrun Yeelight command quota // Wait time (in ms) before doing next write to not overrun Yeelight command quota
std::this_thread::sleep_for(std::chrono::milliseconds(_waitTimeQuota)); std::this_thread::sleep_for(std::chrono::milliseconds(_waitTimeQuota));

View File

@ -0,0 +1,142 @@
#include "LedDeviceSK9822.h"
// Local Hyperion includes
#include <utils/Logger.h>
/// The value that determines the higher bits of the SK9822 global brightness control field
const int SK9822_GBC_UPPER_BITS = 0xE0;
/// The maximal current level supported by the SK9822 global brightness control field, 31
const int SK9822_GBC_MAX_LEVEL = 0x1F;
LedDeviceSK9822::LedDeviceSK9822(const QJsonObject &deviceConfig)
: ProviderSpi(deviceConfig)
, _globalBrightnessControlThreshold(255)
, _globalBrightnessControlMaxLevel(SK9822_GBC_MAX_LEVEL)
{
}
LedDevice *LedDeviceSK9822::construct(const QJsonObject &deviceConfig)
{
return new LedDeviceSK9822(deviceConfig);
}
bool LedDeviceSK9822::init(const QJsonObject &deviceConfig)
{
bool isInitOK = false;
// Initialise sub-class
if (ProviderSpi::init(deviceConfig))
{
_globalBrightnessControlThreshold = deviceConfig["globalBrightnessControlThreshold"].toInt(255);
_globalBrightnessControlMaxLevel = deviceConfig["globalBrightnessControlMaxLevel"].toInt(SK9822_GBC_MAX_LEVEL);
Info(_log, "[SK9822] Using global brightness control with threshold of %d and max level of %d", _globalBrightnessControlThreshold, _globalBrightnessControlMaxLevel);
const unsigned int startFrameSize = 4;
const unsigned int endFrameSize = qMax<unsigned int>(((_ledCount + 15) / 16), 4);
const unsigned int bufferSize = (_ledCount * 4) + startFrameSize + endFrameSize;
_ledBuffer.resize(bufferSize, 0xFF);
_ledBuffer[0] = 0x00;
_ledBuffer[1] = 0x00;
_ledBuffer[2] = 0x00;
_ledBuffer[3] = 0x00;
isInitOK = true;
}
return isInitOK;
}
void LedDeviceSK9822::bufferWithMaxCurrent(std::vector<uint8_t> &txBuf, const std::vector<ColorRgb> & ledValues, const int maxLevel) {
const int ledCount = static_cast<int>(_ledCount);
for (int iLed = 0; iLed < ledCount; ++iLed)
{
const ColorRgb &rgb = ledValues[iLed];
const uint8_t red = rgb.red;
const uint8_t green = rgb.green;
const uint8_t blue = rgb.blue;
/// The LED index in the buffer
const int b = 4 + iLed * 4;
// Use 0/31 LED-Current for Black, and full LED-Current for all other colors,
// with PWM control on RGB-Channels
const int ored = (red|green|blue);
txBuf[b + 0] = ((ored > 0) * (maxLevel & SK9822_GBC_MAX_LEVEL)) | SK9822_GBC_UPPER_BITS; // (ored > 0) is 1 for any r,g,b > 0, 0 otherwise; branch free
txBuf[b + 1] = red;
txBuf[b + 2] = green;
txBuf[b + 3] = blue;
}
}
inline __attribute__((always_inline)) unsigned LedDeviceSK9822::scale(const uint8_t value, const int maxLevel, const uint16_t brightness) {
return (((maxLevel * value + (brightness >> 1)) / brightness));
}
void LedDeviceSK9822::bufferWithAdjustedCurrent(std::vector<uint8_t> &txBuf, const std::vector<ColorRgb> & ledValues, const int threshold, const int maxLevel) {
const int ledCount = static_cast<int>(_ledCount);
for (int iLed = 0; iLed < ledCount; ++iLed)
{
const ColorRgb &rgb = ledValues[iLed];
uint8_t red = rgb.red;
uint8_t green = rgb.green;
uint8_t blue = rgb.blue;
uint8_t level;
/// The LED index in the buffer
const int b = 4 + iLed * 4;
/// The maximal r,g,b-channel grayscale value of the LED
const uint16_t /* expand to 16 bit! */ maxValue = std::max(std::max(red, green), blue);
if (maxValue == 0) {
// Use 0/31 LED-Current for Black
level = 0;
red = 0x00;
green = 0x00;
blue = 0x00;
} else if (maxValue >= threshold) {
// Use full LED-Current when maximal r,g,b-channel grayscale value >= threshold and just use PWM control
level = (maxLevel & SK9822_GBC_MAX_LEVEL);
} else {
// Use adjusted LED-Current for other r,g,b-channel grayscale values
// See also: https://github.com/FastLED/FastLED/issues/656
// Scale the r,g,b-channel grayscale values to adjusted current = brightness level
const uint16_t /* 16 bit! */ brightness = (((maxValue + 1) * maxLevel - 1) >> 8) + 1;
level = (brightness & SK9822_GBC_MAX_LEVEL);
red = scale(red, maxLevel, brightness);
green = scale(green, maxLevel, brightness);
blue = scale(blue, maxLevel, brightness);
}
txBuf[b + 0] = level | SK9822_GBC_UPPER_BITS;
txBuf[b + 1] = red;
txBuf[b + 2] = green;
txBuf[b + 3] = blue;
//if(iLed == 0) {
// std::cout << std::to_string((int)rgb.red) << "," << std::to_string((int)rgb.green) << "," << std::to_string((int)rgb.blue) << ": " << std::to_string(maxValue) << (maxValue >= threshold ? " >= " : " < ") << std::to_string(threshold) << " -> " << std::to_string((int)(level&SK9822_GBC_MAX_LEVEL))<< "@" << std::to_string((int)red) << "," << std::to_string((int)green) << "," << std::to_string((int)blue) << std::endl;
//}
}
}
int LedDeviceSK9822::write(const std::vector<ColorRgb> &ledValues)
{
const int threshold = _globalBrightnessControlThreshold;
const int maxLevel = _globalBrightnessControlMaxLevel;
if(threshold > 0) {
this->bufferWithAdjustedCurrent(_ledBuffer, ledValues, threshold, maxLevel);
} else {
this->bufferWithMaxCurrent(_ledBuffer, ledValues, maxLevel);
}
return writeBytes(_ledBuffer.size(), _ledBuffer.data());
}

View File

@ -0,0 +1,83 @@
#ifndef LEDEVICESK9822_H
#define LEDEVICESK9822_H
// hyperion includes
#include "ProviderSpi.h"
///
/// Implementation of the LedDevice interface for writing to SK9822 led device via SPI.
///
class LedDeviceSK9822 : public ProviderSpi
{
public:
///
/// @brief Constructs an SK9822 LED-device
///
/// @param deviceConfig Device's configuration as JSON-Object
///
explicit LedDeviceSK9822(const QJsonObject &deviceConfig);
///
/// @brief Constructs the LED-device
///
/// @param[in] deviceConfig Device's configuration as JSON-Object
/// @return LedDevice constructed
///
static LedDevice* construct(const QJsonObject &deviceConfig);
private:
///
/// @brief Writes the RGB-Color values to the SPI Tx buffer setting SK9822 current level to maximal value.
///
/// @param[in,out] txBuf The packed spi transfer buffer of the LED's color values
/// @param[in] ledValues The RGB-color per LED
/// @param[in] maxLevel The maximal current level 1 .. 31 to use
///
void bufferWithMaxCurrent(std::vector<uint8_t> &txBuf, const std::vector<ColorRgb> & ledValues, const int maxLevel);
///
/// @brief Writes the RGB-Color values to the SPI Tx buffer using an adjusted SK9822 current level for LED maximal rgb-grayscale values not exceeding the threshold, uses maximal level otherwise.
///
/// @param[in,out] txBuf The packed spi transfer buffer of the LED's color values
/// @param[in] ledValues The RGB-color per LED
/// @param[in] threshold The threshold 0 .. 255 that defines whether to use adjusted SK9822 current level per LED
/// @param[in] maxLevel The maximal current level 1 .. 31 to use
///
void bufferWithAdjustedCurrent(std::vector<uint8_t> &txBuf, const std::vector<ColorRgb> & ledValues, const int threshold, const int maxLevel);
/// The threshold that defines use of SK9822 global brightness control for maximal rgb grayscale values below.
/// i.e. global brightness control is used for rgb-values when max(r,g,b) < threshold.
int _globalBrightnessControlThreshold;
/// The maximal current level that is targeted. Possibile values 1 .. 31.
int _globalBrightnessControlMaxLevel;
///
/// @brief Scales the given value such that a given grayscale stimulus is reached for the targeted brightness and defined max current value.
///
/// @param[in] value The grayscale value to scale
/// @param[in] maxLevel The maximal current level 1 .. 31 to use
/// @param[in] brightness The target brightness
/// @return The scaled grayscale stimulus
///
inline __attribute__((always_inline)) unsigned scale(const uint8_t value, const int maxLevel, const uint16_t brightness);
///
/// @brief Initialise the device's configuration
///
/// @param[in] deviceConfig the JSON device configuration
/// @return True, if success
///
bool init(const QJsonObject &deviceConfig) override;
///
/// @brief Writes the RGB-Color values to the LEDs.
///
/// @param[in] ledValues The RGB-color per LED
/// @return Zero on success, else negative
///
int write(const std::vector<ColorRgb> & ledValues) override;
};
#endif // LEDEVICESK9822_H

View File

@ -0,0 +1,61 @@
{
"type":"object",
"required":true,
"properties":{
"output": {
"type": "string",
"title":"edt_dev_spec_spipath_title",
"enum" : ["/dev/spidev0.0","/dev/spidev0.1"],
"default" : "/dev/spidev0.0",
"propertyOrder" : 1
},
"rate": {
"type": "integer",
"title":"edt_dev_spec_baudrate_title",
"default": 1000000,
"propertyOrder" : 2
},
"invert": {
"type": "boolean",
"title":"edt_dev_spec_invert_title",
"default": false,
"propertyOrder" : 3
},
"globalBrightnessControlMaxLevel": {
"type": "integer",
"title":"edt_dev_spec_globalBrightnessControlMaxLevel_title",
"default": 31,
"minimum": 1,
"maximum": 31,
"propertyOrder" : 4
},
"globalBrightnessControlThreshold": {
"type": "integer",
"title":"edt_dev_spec_globalBrightnessControlThreshold_title",
"default": 255,
"minimum": 0,
"maximum": 255,
"propertyOrder" : 5
},
"latchTime": {
"type": "integer",
"title":"edt_dev_spec_latchtime_title",
"default": 0,
"append" : "edt_append_ms",
"minimum": 0,
"maximum": 1000,
"access" : "expert",
"propertyOrder" : 6
},
"rewriteTime": {
"type": "integer",
"title":"edt_dev_general_rewriteTime_title",
"default": 1000,
"append" : "edt_append_ms",
"minimum": 0,
"access" : "expert",
"propertyOrder" : 7
}
},
"additionalProperties": true
}

View File

@ -1,4 +1,5 @@
#include "webserver/WebServer.h" #include "webserver/WebServer.h"
#include "HyperionConfig.h"
#include "StaticFileServing.h" #include "StaticFileServing.h"
#include "QtHttpServer.h" #include "QtHttpServer.h"