i18n corrected

libqt5sql5-sqlite appended to the dependency list
lgtm alerts fixed
added message forwarder to global settings
subscribe type leds-update appended (thanks @Brindosch)
Boblight server port check instead of error message
Race Condition of different priorities are prevented at startup

Signed-off-by: Paulchen-Panther <Paulchen-Panter@protonmail.com>
This commit is contained in:
Paulchen-Panther 2019-07-20 11:28:16 +02:00
parent 3a488e703c
commit af416ba5fc
No known key found for this signature in database
GPG Key ID: 84E3B692456B6840
18 changed files with 72 additions and 829 deletions

View File

@ -40,7 +40,7 @@ wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/
``` ```
sudo apt-get update sudo apt-get update
sudo apt-get install git cmake build-essential qtbase5-dev libqt5serialport5-dev libusb-1.0-0-dev python3-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev sudo apt-get install git cmake build-essential qtbase5-dev libqt5serialport5-dev libusb-1.0-0-dev python3-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libqt5sql5-sqlite
``` ```
**on RPI you need the videocore IV headers** **on RPI you need the videocore IV headers**

View File

@ -1,5 +1,4 @@
{ {
<<<<<<< HEAD
"general_webui_title": "Hyperion - Web Konfiguration", "general_webui_title": "Hyperion - Web Konfiguration",
"general_country_de": "Deutschland", "general_country_de": "Deutschland",
"general_country_us": "Amerika", "general_country_us": "Amerika",
@ -777,791 +776,4 @@
"edt_msg_button_delete_row_title_short": "Löschen", "edt_msg_button_delete_row_title_short": "Löschen",
"edt_msg_button_collapse": "Einklappen", "edt_msg_button_collapse": "Einklappen",
"edt_msg_button_expand": "Ausklappen" "edt_msg_button_expand": "Ausklappen"
=======
"general_webui_title": "Hyperion - Web Konfiguration",
"general_country_de": "Deutschland",
"general_country_us": "Amerika",
"general_country_uk": "England",
"general_country_fr": "Frankreich",
"general_country_es": "Spanien",
"general_country_it": "Italien",
"general_country_nl": "Niederlande",
"general_speech_de": "Deutsch",
"general_speech_en": "Englisch",
"general_speech_es": "Spanisch",
"general_speech_it": "Italienisch",
"general_speech_cs": "Tschechisch",
"general_access_default": "Standard",
"general_access_advanced": "Fortgeschritten",
"general_access_expert": "Experte",
"general_comp_SMOOTHING": "Glättung",
"general_comp_BLACKBORDER": "Schwarze Balken Erkennung",
"general_comp_FORWARDER": "Weiterleitung",
"general_comp_UDPLISTENER": "UDP Listener",
"general_comp_BOBLIGHTSERVER": "Boblight Server",
"general_comp_FLATBUFSERVER": "Flatbuffers Server",
"general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_GRABBER": "Plattform Aufnahme",
"general_comp_V4L": "USB Aufnahme",
"general_comp_LEDDEVICE": "LED Hardware",
"general_col_red": "rot",
"general_col_green": "grün",
"general_col_blue": "blau",
"general_button_savesettings": "Einstellungen speichern",
"general_btn_yes": "Ja",
"general_btn_ok": "OK",
"general_btn_cancel": "Abbrechen",
"general_btn_start" : "Start",
"general_btn_stop" : "Stop",
"general_btn_continue": "Fortfahren",
"general_btn_delete" : "Löschen",
"general_btn_save": "Speichern",
"general_btn_saveandreload": "Speichern und neu laden",
"general_btn_restarthyperion": "Hyperion neustarten",
"general_btn_off": "Aus",
"general_btn_on": "An",
"general_btn_next": "Weiter",
"general_btn_back": "Zurück",
"general_btn_iswitch": "Switch",
"general_wiki_moreto": "Mehr Informationen zu \"$1\" findest du in unserem Wiki",
"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_infobox_label_title": "Information",
"dashboard_infobox_label_currenthyp": "Deine Hyperion Version:",
"dashboard_infobox_label_latesthyp": "Aktuellste Hyperion Version:",
"dashboard_infobox_label_platform": "Plattform:",
"dashboard_infobox_label_instance": "Instanz:",
"dashboard_infobox_label_ports": "Ports (flat|proto):",
"dashboard_infobox_label_versionbranch": "Versionszweig:",
"dashboard_infobox_message_updatewarning": "Eine aktuellere Version von Hyperion ist verfügbar! (V$1)",
"dashboard_infobox_message_updatesuccess": "Du nutzt die aktuellste Version von Hyperion.",
"dashboard_infobox_label_statush": "Hyperion Status:",
"dashboard_infobox_label_smartacc": "Schnellzugriff",
"dashboard_infobox_label_enableh": "Aktiviere Hyperion",
"dashboard_infobox_label_disableh": "Deaktiviere Hyperion",
"dashboard_componentbox_label_title": "Komponenten Status",
"dashboard_componentbox_label_comp": "Komponente",
"dashboard_componentbox_label_status": "Status",
"dashboard_newsbox_label_title": "Hyperion-Blog",
"dashboard_newsbox_visitblog": "Besuche den Hyperion-Blog",
"dashboard_newsbox_noconn": "Fehler bei dem Versuch die letzten Blog-Posts zu laden, funtkioniert dein Internet?",
"dashboard_newsbox_readmore": "Weiterlesen",
"dashboard_alert_message_confedit_t": "Konfiguration geändert",
"dashboard_alert_message_confedit": "Deine Hyperion Konfiguration wurde verändert. Um die Änderungen anzuwenden, starte Hyperion neu.",
"dashboard_alert_message_disabled_t" : "LED Hardware instanz deaktiviert",
"dashboard_alert_message_disabled" : "Diese Instanz ist momentan deaktiviert! Um sie zu nutzen, musst du sie zuerst wieder im Dashboard aktivieren.",
"dashboard_alert_message_confsave_success_t": "Konfiguration gespeichert",
"dashboard_alert_message_confsave_success": "Deine Hyperion Konfiguration wurde erfolgreich gespeichert. Deine Änderungen sind somit übernommen.",
"main_menu_dashboard_token": "Dashboard",
"main_menu_configuration_token": "Konfiguration",
"main_menu_general_conf_token": "Allgemein",
"main_menu_leds_conf_token": "LED Hardware",
"main_menu_grabber_conf_token": "Aufnahme Hardware",
"main_menu_effect_conf_token": "Effekte",
"main_menu_colors_conf_token": "Bildverarbeitung",
"main_menu_network_conf_token": "Netzwerk",
"main_menu_remotecontrol_token": "Fernbedienung",
"main_menu_effectsconfigurator_token": "Effekt Konfigurator",
"main_menu_support_token": "Hilfe",
"main_menu_update_token": "Update",
"main_menu_system_token": "System",
"main_menu_input_selection_token": "Eingabeauswahl",
"main_menu_logging_token": "Protokoll",
"main_menu_webconfig_token": "Web Konfiguration",
"main_menu_about_token": "Über Hyperion",
"main_ledsim_title": "LED Visualisierung",
"main_ledsim_text": "Eine live Visualisierung deiner LED Farben, sofern verfügbar kann ein live Video dazugeschalten werden.",
"main_ledsim_btn_toggleleds": "Zeige LEDs",
"main_ledsim_btn_togglelednumber": "LED Nummern",
"main_ledsim_btn_togglelivevideo": "Live Video",
"conf_general_label_title": "Allgemeine Einstellungen",
"conf_general_intro": "Grundsätzliche Einstellungen zu Hyperion oder WebUI, die in keine andere Kategorie passen.",
"conf_general_impexp_title": "Importiere/Exportiere Konfiguration",
"conf_general_impexp_l1": "Importiere eine bestehende Konfiguration, indem du unten eine Datei auswählst und anschließend auf \"Importieren\" klickst.",
"conf_general_impexp_l2": "Exportiere eine Konfiguration, indem du auf \"Exportieren\" klickst. Dein Browser startet einen Download.",
"conf_general_impexp_impbtn": "Importieren",
"conf_general_impexp_expbtn": "Exportieren",
"conf_general_tok_title" : "Token Management",
"conf_general_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_general_tok_cidhead" : "Beschreibung",
"conf_general_tok_lastuse" : "Zuletzt genutzt",
"conf_general_tok_comment_title" : "Token Beschreibung",
"conf_general_createToken_btn" : "Erstelle Token",
"conf_general_tok_diaTitle" : "Neues Token erstellt!",
"conf_general_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_general_inst_title" : "LED Hardware Instanz Management",
"conf_general_inst_desc" : "Nutze unterschiedliche LED Hardware zur selben Zeit. Instanzen laufen unabhängig voneinander, das ermöglicht verschiedene LED Layouts und Kalibrierungseinstellungen. Laufende Instanzen sind über die obere Iconleiste auswählbar",
"conf_general_inst_namehead" : "Instanzname",
"conf_general_inst_actionhead" : "Aktion",
"conf_general_inst_name_title" : "Neuer Instanzname",
"conf_general_createInst_btn" : "Instanz erstellen",
"conf_general_inst_delreq_h" : "LED Hardware instanz löschen",
"conf_general_inst_delreq_t" : "Bist du dir sicher die Instanz \"$1\" zu löschen? Alle zugehörigen Einstellungen werden ebenfalls entfernt.",
"conf_helptable_option": "Option",
"conf_helptable_expl": "Erklärung",
"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_fgeff_intro": "Definiere einen Start Effekt/Farbe, dieser wird angezeigt, wenn Hyperion startet für die angegebene Dauer.",
"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_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_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_nav_label_ledcontroller": "LED Steuerung",
"conf_leds_nav_label_ledlayout": "LED Layout",
"conf_leds_contr_label_contrtype": "Steuerungstyp:",
"conf_leds_optgroup_RPiSPI": "RPi SPI",
"conf_leds_optgroup_RPiPWM": "RPi PWM",
"conf_leds_optgroup_RPiGPIO": "RPi GPIO",
"conf_leds_optgroup_network": "Netzwerk",
"conf_leds_optgroup_usb": "USB",
"conf_leds_optgroup_debug": "Debug",
"conf_leds_layout_btn_checklist": "Zeige Checkliste",
"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_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_frame": "Klassisches Layout (Rahmen)",
"conf_leds_layout_matrix": "Matrix Layout (LED Wand)",
"conf_leds_layout_generatedconf": "Generierte/Aktuelle LED Konfiguration",
"conf_leds_layout_button_savelay": "Speichere Layout",
"conf_leds_layout_button_updsim": "Aktualisiere Vorschau",
"conf_leds_layout_peview": "LED Layout Vorschau",
"conf_leds_layout_advanced": "Erweiterte Optionen",
"conf_leds_layout_preview_originCL": "Erstellt von: Klassisches Layout (Rahmen)",
"conf_leds_layout_preview_originTEXT": "Erstellt von: Textfeld",
"conf_leds_layout_preview_originMA": "Erstellt von: Matrix Layout (LED Wand)",
"conf_leds_layout_preview_totalleds": "LEDs gesamt: $1",
"conf_leds_layout_preview_ledpower": "Max. Stromstärke: $1 A",
"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_cl_top": "Oben",
"conf_leds_layout_cl_bottom": "Unten",
"conf_leds_layout_cl_left": "Links",
"conf_leds_layout_cl_right": "Rechts",
"conf_leds_layout_cl_gaglength": "Lückenlänge",
"conf_leds_layout_cl_gappos": "Lückenposition",
"conf_leds_layout_cl_inppos": "Einspeisepunkt",
"conf_leds_layout_cl_reversdir": "Richtung umkehren",
"conf_leds_layout_cl_hleddepth": "Horizontale LED Tiefe",
"conf_leds_layout_cl_vleddepth": "Vertikale LED Tiefe",
"conf_leds_layout_cl_generate": "Generiere LED Konfiguration",
"conf_leds_layout_cl_edgegap": "Rahmenabstand",
"conf_leds_layout_cl_cornergap": "Eckabstand",
"conf_leds_layout_cl_overlap": "Überlappung",
"conf_leds_layout_ma_horiz": "Horizontal",
"conf_leds_layout_ma_vert": "Vertikal",
"conf_leds_layout_ma_cabling": "Verkabelung",
"conf_leds_layout_ma_optsnake": "Schlange",
"conf_leds_layout_ma_optparallel": "Parallel",
"conf_leds_layout_ma_order": "Reihenfolge",
"conf_leds_layout_ma_opthoriz": "Horizontal",
"conf_leds_layout_ma_optvert": "Vertikal",
"conf_leds_layout_ma_position": "Einpeisepunkt",
"conf_leds_layout_ma_opttopleft": "Oben links",
"conf_leds_layout_ma_opttopright": "Oben rechts",
"conf_leds_layout_ma_optbottomleft": "Unten links",
"conf_leds_layout_ma_optbottomright": "Unten 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_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_colors_color_intro": "Erstelle Kalibrierungsprofile die einzelnen Komponenten zugewisen 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_blackborder_intro": "Ignoriere schwarze Balken, jeder Modus nutzt einen anderen Algorithmus um diese zu erkennen. Erhöhe die Schwelle, sollte es nicht funktionieren.",
"conf_network_net_intro" : "Einstellungen zum Netzwerk die für alle Netzwerk-Dienste gelten",
"conf_network_json_intro": "Der JSON-RPC-Port dieser Hyperion-Instanz, wird genutzt zur Fernsteuerung.",
"conf_network_bobl_intro": "Boblight Empfänger",
"conf_network_udpl_intro": "UDP Empfänger",
"conf_network_fbs_intro": "Google Flatbuffers Empfänger. Wird genutzt für schnellen Bildempfang.",
"conf_network_proto_intro": "Der PROTO-Port dieser Hyperion-Instanz, wird genutzt für \"Bildstreams\" (HyperionScreenCap, Kodi Addon, ...)",
"conf_network_forw_intro": "Leite alles an eine zweite Hyperion Instanz weiter, diese kann dann mit einer anderen LED Steuerung genutzt werden",
"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_btn_pbupload": "Bericht für Supportanfrage hochladen",
"conf_logging_btn_autoscroll": "Automatisch scrollen",
"conf_logging_nomessage": "Keine Einträge vorhanden.",
"conf_logging_uploading": "Aufbereitung der Daten...",
"conf_logging_yourlink": "Link zu deinem Bericht",
"conf_logging_uplfailed": "Hochladen fehlgeschlagen! Überprüfe deine Internetverbindung!",
"conf_logging_report": "Bericht",
"conf_logging_lastreports": "Frühere Berichte",
"conf_logging_uplpolicy": "Hiermit akzeptierst du die",
"conf_logging_contpolicy": "Berichts-Datenschutzerklärung",
"conf_webconfig_label_intro": "Einstellungen zur Webkonfiguration. Änderungen können die Erreichbarkeit des Webinterfaces beeinflussen.",
"remote_losthint": "Notiz: Alle Änderungen gehen nach einem Neustart verloren.",
"remote_color_label": "Farbe/Effekt",
"remote_color_intro": "Setze einen Effekt oder eine Farbe. Auch deine selbst erstellten Effekte sind gelistet (sofern verfügbar). $1",
"remote_color_button_reset": "Farbe/Effekt zurücksetzen",
"remote_color_label_color": "Farbe:",
"remote_effects_label_effects": "Effekt:",
"remote_adjustment_label": "Farbanpassung",
"remote_adjustment_intro": "Verändere live Farbe/Helligkeit/Kompensation. $1",
"remote_videoMode_label": "Video Modus",
"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_3DSBS": "3DSBS",
"remote_videoMode_3DTAB": "3DTAB",
"remote_videoMode_2D": "2D",
"remote_input_label": "Quellenauswahl",
"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_label_autoselect": "Automatische Auswahl",
"remote_input_setsource_btn": "Wähle Quelle",
"remote_input_sourceactiv_btn": "Quelle aktiv",
"remote_input_origin": "Ursprung",
"remote_input_owner": "Typ",
"remote_input_priority": "Priorität",
"remote_input_status": "Status/Aktion",
"remote_input_duration": "Dauer:",
"remote_input_ip": "IP:",
"remote_input_clearall": "Lösche alle Effekte/Farben",
"remote_components_label": "Komponentensteuerung",
"remote_components_intro": "Starte und stoppe Komponenten von Hyperion. $1",
"remote_optgroup_usreffets": "Benutzer Effekte",
"remote_optgroup_syseffets": "Mitgelieferte Effekte",
"remote_maptype_label": "LED-Bereich Zuordnung",
"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_label_multicolor_mean": "Mehrfarbig",
"remote_maptype_label_unicolor_mean": "Einfarbig",
"effectsconfigurator_label_intro": "Erstelle auf Grundlage der Basiseffekte neue Effekt die nach deinen Wünschen angepasst sind. Je nach Effekt stehen Optionen wie Farbe, Geschwindigkeit, oder Richtung und vieles mehr zur Auswahl.",
"effectsconfigurator_label_chooseeff": "Template auswählen",
"effectsconfigurator_editdeleff": "Entferne/Lade Effekt",
"effectsconfigurator_button_saveeffect": "Effekt speichern",
"effectsconfigurator_label_effectname": "Effektname",
"effectsconfigurator_button_starttest": "Starte Test",
"effectsconfigurator_button_stoptest": "Stoppe Test",
"effectsconfigurator_button_conttest": "Fortlaufender Test",
"effectsconfigurator_button_deleffect": "Effekt entfernen",
"effectsconfigurator_button_editeffect": "Effekt laden",
"support_label_title": "Unterstütze Hyperion",
"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_fbtext": "Teile Inhalte in Facebook und halte dich und andere auf dem Laufenden",
"support_label_twtext": "Nutze die 140 Zeichen und bleibe auf dem Laufenden auch auf Twitter",
"support_label_ggtext": "Platziere uns in deinen Kreisen auf Google+",
"support_label_yttext": "Gelangweilt von Bildern? Werfe einen Blick auf unsere Youtube Videos",
"support_label_igtext": "Schau doch mal bei Instagram vorbei!",
"support_label_donate": "Spende oder nutze unsere Affiliate Links",
"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_affinstr3": "Du zahlst immer den selben Preis. Teste es!",
"support_label_btctext": "Adresse:",
"support_label_donationpp": "Spende:",
"support_label_webrestitle": "Informationsquellen und Hilfe",
"support_label_webpagetitle": "Internetseite",
"support_label_webpagetext": "Das Zuhause von Hyperion",
"support_label_wikititle": "Wiki",
"support_label_wikitext": "Von A bis Z - Alles wissenwerte zu Hyperion",
"support_label_forumtitle": "Forum",
"support_label_forumtext": "Diskussion und Hilfestellung von der Community",
"support_label_ghtext": "Besuche uns auf Github",
"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_description": "Beschreibung:",
"update_button_install": "Installieren",
"update_button_changelog": "Zeige Änderungsprotokoll",
"update_label_type": "Art:",
"update_versreminder": "Deine Version: $1",
"update_error_getting_versions": "Wir hatten Probleme die verfügbaren Versionen zu ermitteln.",
"about_version": "Version",
"about_build": "Build",
"about_builddate": "Build Datum",
"about_translations": "Übersetzungen",
"about_resources": "$1 Bibliotheken",
"about_contribute": "Entwickel Hyperion mit uns weiter!",
"about_credits": "Einen Dank an alle Entwickler!",
"info_conlost_label_title": "Verbindung zum Hyperion Service unterbrochen!",
"info_conlost_label_reason": "Mögliche Ursachen:",
"info_conlost_label_reason1": "- Schlechte WLAN Verbindung",
"info_conlost_label_reason2": "- Ein Update wird durchgeführt",
"info_conlost_label_reason3": "- Hyperion wird nicht mehr ausgeführt",
"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_reload": "Automatisches verbinden gestoppt - limit überschritten. Lade die Seite neu oder klick mich.",
"info_restart_title": "Startet gerade neu...",
"info_restart_rightback": "Hyperion ist gleich wieder für dich da!",
"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_contusa": "...mit deinen letztes Schritten. Danke!",
"info_404": "Die angeforderte Seite ist nicht verfügbar!",
"infoDialog_general_success_title": "Erfolg",
"infoDialog_general_error_title": "Fehler",
"infoDialog_general_warning_title": "Warnung",
"infoDialog_checklist_title": "Checkliste!",
"infoDialog_effconf_deleted_text": "Der Effekt \"$1\" wurde erfolgreich entfernt!",
"infoDialog_effconf_created_text": "Der Effekt \"$1\" wurde erfolgreich erstellt!",
"InfoDialog_lang_title": "Spracheinstellung",
"InfoDialog_lang_text": "Sollte dir die Vorauswahl der automatischen Spracherkennung nicht gefallen, kannst du die Sprache hier manuell festlegen.",
"InfoDialog_access_title": "Einstellungsstufe",
"InfoDialog_access_text": "Je höher die Stufe je mehr Einstellungen und Funktionen stehen zur Verfügung. Empfohlen ist \"Standard\".",
"InfoDialog_nowrite_title": "Fehler beim Schreibzugriff!",
"InfoDialog_nowrite_text": "Hyperion hat keinen Schreibzugriff auf die aktuell geladene Konfiguration. Bitte korrigiere die Dateizugriffsrechte um fortzufahren.",
"InfoDialog_nowrite_foottext": "Die Webkonfiguration wird automatisch wieder freigegeben, sobald das Problem behoben wurde!",
"infoDialog_wizrgb_text": "Deine RGB Byte Reihenfolge ist bereits richtig eingestellt.",
"infoDialog_writeimage_error_text": "Die ausgewählte Datei \"$1\" ist keine Bilddatei oder ist beschädigt! Bitte wähle eine andere Bilddatei aus.",
"infoDialog_writeconf_error_text": "Das speichern der Konfiguration ist fehlgeschlagen.",
"infoDialog_import_jsonerror_text": "Die ausgewählte Konfigurations-Datei \"$1\" ist keine .json Datei oder ist beschädigt! Fehlermeldung: ($2)",
"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_comperror_text": "Dein Browser unterstützt leider keinen Import. Bitte versuche es mit einem anderen Browser erneut.",
"infoDialog_import_confirm_title": "Bestätige Import",
"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_iswitch_title": "Hyperion switcher",
"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!",
"wiz_wizavail": "Assistent verfügbar",
"wiz_guideyou": "Der $1 wird dich durch die Konfiguration leiten, drücke dazu einfach den Button!",
"wiz_rgb_title": "RGB Byte Reihenfolge Assistent",
"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_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_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_switchevery": "Ändere Farbe alle...",
"wiz_rgb_q": "Welche Farbe zeigen deine LEDs, wenn der Farbpunkt oben...",
"wiz_rgb_qrend": "...rot ist?",
"wiz_rgb_qgend": "...grün ist?",
"wiz_hue_title": "Philips Hue Assistent",
"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_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_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_ip": "Hue Bridge IP:",
"wiz_hue_username": "Benutzer ID:",
"wiz_hue_create_user": "Neuen Benutzer erstellen",
"wiz_hue_failure_ip": "Keine Hue Bridge gefunden, bitte überprüfe die IP",
"wiz_hue_failure_connection": "Zeitüberschreitung. Bitte drücke die Taste auf deiner Hue Bridge rechtzeitig",
"wiz_hue_failure_user": "Benutzer ID wurde nicht gefunden, erstelle eine Neue oder gib eine bereits registrierte an.",
"wiz_hue_press_link": "Bitte \"Link\" Taste auf der Hue Bridge drücken.",
"wiz_hue_ids_disabled": "Deaktiviert",
"wiz_hue_ids_entire": "Ganzes Bild",
"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_pos": "Position/Status",
"wiz_hue_searchb": "Suche nach Hue Bridge...",
"wiz_hue_blinkblue": "Lasse ID $1 blau aufleuchten",
"wiz_hue_ident": "Identifiziere",
"wiz_cc_title": "Farbkalibrierungs Assistent",
"wiz_cc_intro1": "Der Assistent wird dich durch die Kalibrierung deiner LEDs leiten. Sofern du Kodi nutzt, können die Bilder und Testvideos direkt an Kodi geschickt werden. Andernfalls musst du das Material selbst herunterladen und anwenden.",
"wiz_cc_kwebs": "Kodi Webserver (IP:Port)",
"wiz_cc_kodidiscon": "Kodi Webserver nicht gefunden, fahre ohne Kodi-Unterstützung fort.",
"wiz_cc_kodidisconlink": "Download Link Bilder:",
"wiz_cc_kodicon": "Kodi Webserver gefunden, fahre mit Kodi-Unterstützung fort.",
"wiz_cc_kodimsg_start": "Test bestanden - Zeit zu beginnen",
"wiz_cc_kodishould": "Kodi sollte jetzt 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_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_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_chooseid": "Wähle einen Namen für dieses Farb-Profil.",
"wiz_cc_btn_switchpic": "Testbild ändern",
"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_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_testintrowok": "Unter folgendem Link findest du ein paar Testvideos zum herunterladen und abspielen:",
"wiz_cc_link": "Klick mich",
"wiz_cc_morethanone": "Du hast mehr als 1 Profil, bitte wähle das zu kalibrierende Profil",
"wiz_cc_btn_stop": "Stoppe Video",
"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.",
"edt_dev_auth_key_title": "Authentisierungstoken",
"edt_dev_enum_subtract_minimum": "Subtrahiere minimum",
"edt_dev_enum_sub_min_cool_adjust": "Minimale Anpassung: cool",
"edt_dev_enum_sub_min_warm_adjust": "Minimale Anpassung: warm",
"edt_dev_enum_white_off": "Weiß ist aus",
"edt_dev_general_heading_title": "Allgemeine Einstellungen",
"edt_dev_general_name_title": "Name der Konfiguration",
"edt_dev_general_hardwareLedCount_title": "Anzahl Hardware LEDs",
"edt_dev_general_colorOrder_title": "RGB Byte Reihenfolge",
"edt_dev_general_rewriteTime_title": "Aktualisierungszeit",
"edt_dev_spec_header_title": "Spezifische Einstellungen",
"edt_dev_spec_baudrate_title": "Baudrate",
"edt_dev_spec_spipath_title": "SPI Pfad",
"edt_dev_spec_invert_title": "Invertiere Signal",
"edt_dev_spec_multicastGroup_title": "Multicast Gruppe",
"edt_dev_spec_numberOfLeds_title": "Anzahl der LEDs",
"edt_dev_spec_port_title": "Port",
"edt_dev_spec_orbIds_title": "Orb ID(s)",
"edt_dev_spec_useOrbSmoothing_title": "Nutze Orb Glättung",
"edt_dev_spec_targetIp_title": "Ziel IP",
"edt_dev_spec_targetIpHost_title": "Ziel IP/hostname",
"edt_dev_spec_outputPath_title": "Ausgabepfad",
"edt_dev_spec_delayAfterConnect_title": "Verzögerung nach Verbindung",
"edt_dev_spec_FCsetConfig_title": "Wende fadecandy Konfiguration an",
"edt_dev_spec_FCmanualControl_title": "Manuelle Steuerung der fadecandy LEDs",
"edt_dev_spec_FCledToOn_title": "Fadecandy LEDs set to on",
"edt_dev_spec_interpolation_title": "Interpolation",
"edt_dev_spec_dithering_title": "Dithering",
"edt_dev_spec_gamma_title": "Gamma",
"edt_dev_spec_whitepoint_title": "Weißpunkt",
"edt_dev_spec_username_title": "Benutzername",
"edt_dev_spec_lightid_title": "Lampen ID(s)",
"edt_dev_spec_lightid_itemtitle": "ID",
"edt_dev_spec_transistionTime_title": "Übergangszeit",
"edt_dev_spec_switchOffOnBlack_title": "Aus bei schwarz",
"edt_dev_spec_brightnessFactor_title": "Helligkeitsfaktor",
"edt_dev_spec_ledType_title": "LED typ",
"edt_dev_spec_uid_title": "UID",
"edt_dev_spec_intervall_title": "Intervall",
"edt_dev_spec_latchtime_title": "Sperrzeit",
"edt_dev_spec_maxPacket_title": "Paketgröße",
"edt_dev_spec_serial_title": "Seriennummer",
"edt_dev_spec_vid_title": "VID",
"edt_dev_spec_pid_title": "PID",
"edt_dev_spec_cid_title": "CID",
"edt_dev_spec_LBap102Mode_title": "LightBerry APA102 Modus",
"edt_dev_spec_universe_title": "Universum",
"edt_dev_spec_whiteLedAlgor_title": "Weiß Algorithmus",
"edt_dev_spec_useRgbwProtocol_title": "Nutze RGBW Protokoll",
"edt_dev_spec_maximumLedCount_title": "Maximale Anzahl LEDs",
"edt_dev_spec_gpioNumber_title": "GPIO Nummer",
"edt_dev_spec_dmaNumber_title": "DMA Kanal",
"edt_dev_spec_gpioMap_title": "GPIO Zuweisung",
"edt_dev_spec_PBFiFo_title": "Pi-Blaster FiFo",
"edt_dev_spec_gpioBcm_title": "GPIO Pin",
"edt_dev_spec_ledIndex_title": "LED index",
"edt_dev_spec_colorComponent_title": "Farbkomponente",
"edt_conf_general_enable_title": "Aktiviert",
"edt_conf_general_enable_expl": "Wenn aktiviert, ist die Komponente aktiv.",
"edt_conf_general_priority_title": "Priorität",
"edt_conf_general_priority_expl": "Die Priorität dieser Komponente.",
"edt_conf_general_port_title": "Port",
"edt_conf_general_port_expl": "Der genutzte Port.",
"edt_conf_enum_color": "Farbe",
"edt_conf_enum_effect": "Effekt",
"edt_conf_enum_multicolor_mean": "Mehrfarbig",
"edt_conf_enum_unicolor_mean": "Einfarbig",
"edt_conf_enum_rgb": "RGB",
"edt_conf_enum_bgr": "BGR",
"edt_conf_enum_rbg": "RBG",
"edt_conf_enum_brg": "BRG",
"edt_conf_enum_gbr": "GBR",
"edt_conf_enum_grb": "GRB",
"edt_conf_enum_linear": "Linear",
"edt_conf_enum_PAL": "PAL",
"edt_conf_enum_NTSC": "NTSC",
"edt_conf_enum_SECAM": "SECAM",
"edt_conf_enum_NO_CHANGE": "Auto",
"edt_conf_enum_logsilent": "Stille",
"edt_conf_enum_logwarn": "Warnung",
"edt_conf_enum_logverbose": "Ausführlich",
"edt_conf_enum_logdebug": "Debug",
"edt_conf_enum_bbdefault": "Standard",
"edt_conf_enum_bbclassic": "Klassisch",
"edt_conf_enum_bbosd": "OSD",
"edt_conf_enum_automatic": "Automatisch",
"edt_conf_gen_heading_title": "Allgemeine Einstellungen",
"edt_conf_gen_name_title": "Name der Konfiguration",
"edt_conf_gen_name_expl": "Der Name wird verwendet, um Hyperion besser zu identifizieren. (Hilfreich bei mehreren Instanzen)",
"edt_conf_gen_showOptHelp_title": "Zeige Erklärungen",
"edt_conf_gen_showOptHelp_expl": "Zeige alle verfügbaren Options-Erklärungen. Empfohlen für Anfänger",
"edt_conf_gen_versionBranch_title": "Versionszweig",
"edt_conf_gen_versionBranch_expl": "Gibt an, welcher Versionszweig für die Suche von neuen Hyperion Versionen genutzt werden soll.",
"edt_conf_color_heading_title": "Farbkalibrierung",
"edt_conf_color_channelAdjustment_header_itemtitle": "Profil",
"edt_conf_color_channelAdjustment_header_title": "Anpassung Farbkanäle",
"edt_conf_color_channelAdjustment_header_expl": "Passe die Farbkanäle deinen LEDs an",
"edt_conf_color_imageToLedMappingType_title": "LED-Bereich Zuordnungstyp",
"edt_conf_color_imageToLedMappingType_expl": "Sofern nicht \"Mehrfarbig\", wird dein LED Layout mit einer anderen Bildzuweisung überschrieben",
"edt_conf_color_id_title": "ID",
"edt_conf_color_id_expl": "Eine vom Benutzer frei angegebene ID.",
"edt_conf_color_leds_title": "LED index",
"edt_conf_color_leds_expl": "Zugewiesen zu allen (*) LEDs oder nur zu bestimmten LED Nummern (0-17).",
"edt_conf_color_black_title": "Schwarz",
"edt_conf_color_black_expl": "Kalibrierter Schwarzwert.",
"edt_conf_color_white_title": "Weiß",
"edt_conf_color_white_expl": "Kalibrierter Weißwert.",
"edt_conf_color_red_title": "Rot",
"edt_conf_color_red_expl": "Kalibrierter Rotwert.",
"edt_conf_color_green_title": "Grün",
"edt_conf_color_green_expl": "Kalibrierter Grünwert.",
"edt_conf_color_blue_title": "Blau",
"edt_conf_color_blue_expl": "Kalibrierter Blauwert.",
"edt_conf_color_cyan_title": "Cyan",
"edt_conf_color_cyan_expl": "Kalibrierter Cyanwert.",
"edt_conf_color_magenta_title": "Magenta",
"edt_conf_color_magenta_expl": "Kalibrierter Magentawert.",
"edt_conf_color_yellow_title": "Gelb",
"edt_conf_color_yellow_expl": "Kalibrierter Gelbwert.",
"edt_conf_color_gammaRed_title": "Gamma Rot",
"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_gammaGreen_title": "Gamma Grün",
"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_gammaBlue_title": "Gamma Blau",
"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_backlightThreshold_title": "Hintergrund - beleuchtung",
"edt_conf_color_backlightThreshold_expl": "Eine Beleuchtung die dauerhaft aktiv ist. (Automatisch deaktiviert bei Effekten, Farben oder im Zustand \"Aus\")",
"edt_conf_color_backlightColored_title": "Farbige Hintergrund - beleuchtung",
"edt_conf_color_backlightColored_expl": "Die Hintergrundbeleuchtung kann mit oder ohne Farbanteile genutzt werden.",
"edt_conf_color_brightness_title": "Helligkeit",
"edt_conf_color_brightness_expl": "Die gesamte Helligkeit",
"edt_conf_color_brightnessComp_title": "Helligkeits 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_smooth_heading_title": "Glättung",
"edt_conf_smooth_type_title": "Art",
"edt_conf_smooth_type_expl": "Algorithmus der Glättung.",
"edt_conf_smooth_time_ms_title": "Zeit",
"edt_conf_smooth_time_ms_expl": "Wie lange soll die Glättung Bilder sammeln?",
"edt_conf_smooth_updateFrequency_title": "Aktualisierungsfrequenz",
"edt_conf_smooth_updateFrequency_expl": "Die Geschwindigkeit der Datenausgabe an die LED Steuerung.",
"edt_conf_smooth_updateDelay_title": "Aktualisierungsverzögerung",
"edt_conf_smooth_updateDelay_expl": "Verzögere die Ausgabe, sollte dein ambient light schneller sein als dein TV.",
"edt_conf_smooth_continuousOutput_title": "Fortlaufende Ausgabe",
"edt_conf_smooth_continuousOutput_expl": "Aktualisiere die LEDs, auch wenn das Bild sich nicht geändert hat.",
"edt_conf_v4l2_heading_title": "USB Aufnahme",
"edt_conf_v4l2_device_title": "Gerät",
"edt_conf_v4l2_device_expl": "Der Pfad zum USB (v4l) Aufnahmegerät. Wähle 'auto' für automatische Erkennung. Beispiel: '/dev/video0'",
"edt_conf_v4l2_standard_title": "Videoformat",
"edt_conf_v4l2_standard_expl": "Wähle das passende Videoformat deiner Region. Auf 'Auto' wird der gewählte Modus vom v4l interface beibehalten.",
"edt_conf_v4l2_sizeDecimation_title": "Bildverkleinerung Faktor",
"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_cropLeft_title": "Entferne links",
"edt_conf_v4l2_cropLeft_expl": "Anzahl der Pixel auf der linken Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_cropRight_title": "Entferne rechts",
"edt_conf_v4l2_cropRight_expl": "Anzahl der Pixel auf der rechten Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_cropTop_title": "Entferne oben",
"edt_conf_v4l2_cropTop_expl": "Anzahl der Pixel auf der oberen Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_cropBottom_title": "Entferne unten",
"edt_conf_v4l2_cropBottom_expl": "Anzahl der Pixel auf der unteren Seite die vom Bild entfernt werden.",
"edt_conf_v4l2_signalDetection_title": "Signal Erkennung",
"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_redSignalThreshold_title": "Rote Signalschwelle",
"edt_conf_v4l2_redSignalThreshold_expl": "Je höher die rote Schwelle je eher wird abgeschalten bei entsprechendem rot-Anteil.",
"edt_conf_v4l2_greenSignalThreshold_title": "Grüne Signalschwelle",
"edt_conf_v4l2_greenSignalThreshold_expl": "Je höher die grüne Schwelle je eher wird abgeschalten bei entsprechendem grün-Anteil.",
"edt_conf_v4l2_blueSignalThreshold_title": "Blaue Signalschwelle",
"edt_conf_v4l2_blueSignalThreshold_expl": "Je höher die blaue Schwelle je eher wird abgeschalten bei entsprechendem blau-Anteil.",
"edt_conf_v4l2_sDVOffsetMin_title": "Signal Erkennung VMin",
"edt_conf_v4l2_sDVOffsetMin_expl": "Signal Erkennungs-Bereich vertikal minimum (0.0-1.0)",
"edt_conf_v4l2_sDHOffsetMin_title": "Signal Erkennung HMin",
"edt_conf_v4l2_sDHOffsetMin_expl": "Signal Erkennungs-Bereich horizontal minimum (0.0-1.0)",
"edt_conf_v4l2_sDVOffsetMax_title": "Signal Erkennung VMax",
"edt_conf_v4l2_sDVOffsetMax_expl": "Signal Erkennungs-Bereich vertikal maximum (0.0-1.0)",
"edt_conf_v4l2_sDHOffsetMax_title": "Signal Erkennung HMax",
"edt_conf_v4l2_sDHOffsetMax_expl": "Signal Erkennungs-Bereich horizontal maximum (0.0-1.0)",
"edt_conf_instCapture_heading_title": "Instance Aufnahme",
"edt_conf_instC_systemEnable_title": "Aktiviere Plattform Aufnahme",
"edt_conf_instC_systemEnable_expl": "Aktiviert die Plattform Aufnahme für diese LED Hardware Instanz",
"edt_conf_instC_v4lEnable_title": "Aktiviere USB Aufnahme",
"edt_conf_instC_v4lEnable_expl": "Aktiviert die USB Aufnahme für diese LED Hardware Instanz",
"edt_conf_fg_heading_title": "Plattform Aufnahme",
"edt_conf_fg_type_title": "Typ",
"edt_conf_fg_type_expl": "Art der Plattform Aufnahme, standard ist 'auto'",
"edt_conf_fg_frequency_Hz_title": "Aufnahmefrequenz",
"edt_conf_fg_frequency_Hz_expl": "Wie schnell neue Bilder aufgenommen werden.",
"edt_conf_fg_width_title": "Breite",
"edt_conf_fg_width_expl": "Verkleinere Bild auf dieser Breite, da das Rohmaterial viel Leistung benötigen würde.",
"edt_conf_fg_height_title": "Höhe",
"edt_conf_fg_height_expl": "Verkleinere Bild auf dieser Höhe, da das Rohmaterial viel Leistung benötigen würde.",
"edt_conf_fg_pixelDecimation_title": "Bildverkleinerung Faktor",
"edt_conf_fg_pixelDecimation_expl": "Bildverkleinerung (Faktor) ausgehend von der original Größe. 1 für unveränderte/originale Größe.",
"edt_conf_fg_device_title": "Device",
"edt_conf_fg_display_title": "Display",
"edt_conf_fg_display_expl": "Gebe an von welchem Desktop aufgenommen werden soll. (Multi Monitor Setup)",
"edt_conf_bb_heading_title": "Schwarze Balken Erkennung",
"edt_conf_bb_threshold_title": "Schwelle",
"edt_conf_bb_threshold_expl": "Wenn die Erkennung nicht funktioniert, erhöhe die Schwelle um auf 'graues' schwarz zu reagieren.",
"edt_conf_bb_unknownFrameCnt_title": "Unbekannte Bilder",
"edt_conf_bb_unknownFrameCnt_expl": "Anzahl an Bildern die negativ sind, welche den Rand auf 0 zurücksetzen.",
"edt_conf_bb_borderFrameCnt_title": "Randbilder",
"edt_conf_bb_borderFrameCnt_expl": "Anzahl an Bildern bis ein neuer Rand festgelegt wird.",
"edt_conf_bb_maxInconsistentCnt_title": "Inkosistente Bilder",
"edt_conf_bb_maxInconsistentCnt_expl": "Anzahl der zu ignorierenden Bilder bis ein neuer Rand überprüft wird.",
"edt_conf_bb_blurRemoveCnt_title": "Unscharfe Pixel",
"edt_conf_bb_blurRemoveCnt_expl": "Anzahl an Pixeln, die zusätzlich vom Rand abgeschnitten werden.",
"edt_conf_bb_mode_title": "Modus",
"edt_conf_bb_mode_expl": "Algorithmus zur Auswertung. (siehe Wiki)",
"edt_conf_fge_heading_title": "Start Effekt/Farbe",
"edt_conf_fge_type_title": "Typ",
"edt_conf_fge_type_expl": "Wähle zwischen einem Effekt oder einer Farbe.",
"edt_conf_fge_color_title": "Farbe",
"edt_conf_fge_color_expl": "Sofern der Typ \"Farbe\" ist, stelle hier eine Farbe deiner Wahl sein.",
"edt_conf_fge_effect_title": "Effekt",
"edt_conf_fge_effect_expl": "Sofern der Typ \"Effekt\" ist, wähle hier einen Effekt deiner Wahl. (Gilt auch für selbst erstellte)",
"edt_conf_fge_duration_ms_title": "Dauer",
"edt_conf_fge_duration_ms_expl": "Dauer des Effekts/Farbe beim Hyperion Start.",
"edt_conf_bge_heading_title": "Hintergrund Effekt/Farbe",
"edt_conf_fw_heading_title": "Weiterleitung",
"edt_conf_fw_json_title": "Liste von Json zielen",
"edt_conf_fw_json_expl": "Ein Json Ziel pro Zeile. Bestehend aus IP:PORT (Beispiel: 127.0.0.1:19446)",
"edt_conf_fw_json_itemtitle": "Json Ziel",
"edt_conf_fw_proto_title": "Liste von Proto zielen",
"edt_conf_fw_proto_expl": "Ein Proto Ziel pro Zeile. Bestehend aus IP:PORT (Beispiel: 127.0.0.1:19401)",
"edt_conf_fw_proto_itemtitle": "Proto Ziel",
"edt_conf_net_heading_title" : "Network",
"edt_conf_net_internetAccessAPI_title":"Internet API Zugriff",
"edt_conf_net_internetAccessAPI_expl":"Erlaube Zugriff auf die Hyperion API/Webinterface aus dem Internet, deaktivieren für höhere Sicherheit.",
"edt_conf_net_ipWhitelist_title":"Erlaubte IP's",
"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_ip_itemtitle":"IP",
"edt_conf_net_apiAuth_title":"API Authentifizierung",
"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_localApiAuth_title" : "Lokale API Authentifizierung",
"edt_conf_net_localApiAuth_expl" : "Wenn aktiviert, müssen Verbindungen aus dem Heimnetzwerk mit einem Token authentifiziert werden.",
"edt_conf_js_heading_title": "JSON Server",
"edt_conf_fbs_heading_title": "Flatbuffers Server",
"edt_conf_fbs_timeout_title": "Zeitüberschreitung",
"edt_conf_fbs_timeout_expl": "Wenn für die angegebene Zeit keine Daten empfangen werden, wird die Komponente (vorübergehend) deaktiviert",
"edt_conf_pbs_heading_title": "Protocol Buffers Server",
"edt_conf_pbs_timeout_title": "Zeitüberschreitung",
"edt_conf_pbs_timeout_expl": "Wenn für die angegebene Zeit keine Daten empfangen werden, wird die Komponente (vorübergehend) deaktiviert",
"edt_conf_bobls_heading_title": "Boblight Server",
"edt_conf_udpl_heading_title": "UDP Listener",
"edt_conf_udpl_address_title": "Adresse",
"edt_conf_udpl_address_expl": "Die Adresse auf der UDP Pakete akzeptiert werden.",
"edt_conf_udpl_timeout_title": "Zeitüberschreitung",
"edt_conf_udpl_timeout_expl": "Wenn für die angegebene Zeit keine UDP Pakete empfangen werden, wird die Komponente (vorübergehend) deaktiviert",
"edt_conf_udpl_shared_title": "Gemeinsam genutzt",
"edt_conf_udpl_shared_expl": "Wird gemeinsam über alle Hyperion Instanzen genutzt.",
"edt_conf_webc_heading_title": "Web Konfiguration",
"edt_conf_webc_docroot_title": "Verzeichnis",
"edt_conf_webc_docroot_expl": "Lokaler Pfad zum WebUI Wurzelverzeichnis (Nur für WebUI Entwickler)",
"edt_conf_effp_heading_title": "Effekt Pfade",
"edt_conf_effp_paths_title": "Effekt Pfad(e)",
"edt_conf_effp_paths_expl": "Es können mehrere Ordner definiert werden die Effekte enthalten. Der Effekt Konfigurator speichert immer im Ersten Ordner.",
"edt_conf_effp_paths_itemtitle": "Pfad",
"edt_conf_effp_disable_title": "Deaktivierte Effekte",
"edt_conf_effp_disable_expl": "Trage hier die Namen der Effekte ein, die in Effektlisten nicht mehr zur Auswahl stehen sollen.",
"edt_conf_effp_disable_itemtitle": "Effekt",
"edt_conf_log_heading_title": "Protokoll",
"edt_conf_log_level_title": "Protokollstufe",
"edt_conf_log_level_expl": "Abhängig der Stufe sind weniger oder mehr Meldungen sichtbar.",
"edt_eff_smooth_custom": "Aktivere Glättung",
"edt_eff_smooth_time_ms": "Glättung: Zeit",
"edt_eff_smooth_updateFrequency": "Glättung: Aktualisierungsfrequenz",
"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_gif_header": "GIF's",
"edt_eff_gif_header_desc": "Dieser Effekt spielt .gif Dateien ab. Bietet die Möglichkeit kleine GIF-Videos abzuspielen.",
"edt_eff_candle_header": "Kerze",
"edt_eff_candle_header_desc": "Flackerndes Kerzenlicht",
"edt_eff_police_header": "Polizei",
"edt_eff_police_header_desc": "Lights like a police car in action",
"edt_eff_fade_header": "Farbübergang",
"edt_eff_fade_header_desc": "Farbübergange für alle LED's",
"edt_eff_rainbowmood_header": "Regenbogen",
"edt_eff_rainbowmood_header_desc": "Alle LEDs Regenbogen Farbübergang",
"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_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_pacman_header": "Pac-Man",
"edt_eff_pacman_header_desc": "Klein gefräßig und gelb, wer wird überleben?",
"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_swirl_header": "Farbwirbel",
"edt_eff_swirl_header_desc": "Ein Wirbel mit frei wählbaren Farben. Die Farben werden gleichmäßig auf 360° aufgeteilt, dazwischen werden Farbübergänge berechnet. Zusätzlich kann ein zweiter Wirbel über den Ersten gelegt werden (Transparenz beachten!). Tipp: Eine Widerholung der selben Farbe erhöht deren \"größe\" und verringert den Bereich des Farbübergangs zu benachbarten Farben.",
"edt_eff_random_header": "Zufällig",
"edt_eff_random_header_desc": "Pixel-Farb-Mix",
"edt_eff_systemshutdown_header": "Herunterfahren",
"edt_eff_systemshutdown_header_desc": "Eine kurze Animation gefolgt von einem möglicherweise echten Herunterfahren des Systems",
"edt_eff_snake_header": "Schlange",
"edt_eff_snake_header_desc": "Wo ist das Futter?",
"edt_eff_sparks_header": "Funken",
"edt_eff_sparks_header_desc": "Ein Sternenfunkeln, wahlweise in festgelegter Farbe oder zufällig. Passe Helligkeit, Sättigung und Geschwindigkeit an.",
"edt_eff_traces_header": "Farbspuren",
"edt_eff_traces_header_desc": "Erfordert eine Neugestaltung",
"edt_eff_x-mas_header": "Weihnachten",
"edt_eff_x-mas_header_desc": "Ein Hauch von Weihnachten",
"edt_eff_trails_header": "Sternschnuppen",
"edt_eff_trails_header_desc": "In verschiedenen Farben, wünsch dir was!",
"edt_eff_flag_header": "Flaggen",
"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_enum_all": "Alle",
"edt_eff_enum_all-together": "Alle zusammen",
"edt_eff_enum_list": "LED Liste",
"edt_eff_count": "Anzahl",
"edt_eff_color": "Farbe",
"edt_eff_colorrandom": "Zufällige Farbe",
"edt_eff_colorone": "Farbe eins",
"edt_eff_colortwo": "Farbe zwei",
"edt_eff_colorcount": "Farblänge",
"edt_eff_rotationtime": "Rotationszeit",
"edt_eff_sleeptime": "Schlafzeit",
"edt_eff_image": "Bilddatei",
"edt_eff_fps": "Bilder pro Sekunde",
"edt_eff_reversedirection": "Richtung umkehren",
"edt_eff_fadeintime": "Zeit für Einblendung",
"edt_eff_fadeouttime": "Zeit für Ausblendung",
"edt_eff_repeat": "Wiederholung",
"edt_eff_repeatcount": "Anzahl Wiederholung",
"edt_eff_colorendtime": "Zeit für Start-Farbe",
"edt_eff_colorstarttime": "Zeit für End-Farbe",
"edt_eff_colorstart": "Farbe Start",
"edt_eff_colorend": "Farbe Ende",
"edt_eff_maintain_end_color": "Behalte Endfarbe",
"edt_eff_colorshift": "Farbverschiebung",
"edt_eff_whichleds": "Welche LEDs",
"edt_eff_ledlist": "LED Liste",
"edt_eff_speed": "Geschwindigkeit",
"edt_eff_fadefactor": "Verblass Faktor",
"edt_eff_showseconds": "Zeige Sekunden",
"edt_eff_blobcount": "Kugelanzahl",
"edt_eff_huechange": "Farbänderung",
"edt_eff_basecolorchange": "Basisfarben verändern",
"edt_eff_basecolorchangerate": "BF Geschwindigkeit",
"edt_eff_basecolorrangeleft": "BF Bereich links",
"edt_eff_basecolorrangeright": "BF Bereich rechts",
"edt_eff_brightness": "Helligkeit",
"edt_eff_centerx": "Mittelpunkt X-Achse",
"edt_eff_centery": "Mittelpunkt Y-Achse",
"edt_eff_saturation": "Sättigung",
"edt_eff_colorevel": "Farbstufe",
"edt_eff_whitelevel": "Weißstufe",
"edt_eff_alarmcolor": "Alarm Farbe",
"edt_eff_postcolor": "Startfarbe",
"edt_eff_enableshutdown": "Echtes herunterfahren",
"edt_eff_length": "Länge",
"edt_eff_frequency": "Frequenz",
"edt_eff_min_len": "Minimale Länge",
"edt_eff_max_len": "Maximale Länge",
"edt_eff_height": "Höhe",
"edt_eff_offset": "Verschiebung",
"edt_eff_colorHour": "Farbe Stunde",
"edt_eff_colorMinute": "Farbe Minute",
"edt_eff_colorSecond": "Farbe Sekunde",
"edt_eff_colorMarker": "Marker Farbe",
"edt_eff_markerWidth": "Marker Breite",
"edt_eff_markerDepth": "Marker Tiefe",
"edt_eff_markerEnable": "Zeige Marker",
"edt_eff_backgroundColor": "Hintergrundfarbe",
"edt_eff_countries": "Länder",
"edt_eff_interval": "Intervall",
"edt_eff_margin": "Abstand",
"edt_eff_customColor": "Benutzerdefinierte Farbe",
"edt_eff_randomCenter": "Zufälliger Mittelpunkt",
"edt_eff_enableSecondSwirl": "Zweiter Wirbel",
"edt_eff_reverseRandomTime": "Richtungswechsel alle",
"edt_append_ns": "ns",
"edt_append_ms": "ms",
"edt_append_s": "s",
"edt_append_hz": "Hz",
"edt_append_pixel": "Pixel",
"edt_append_percent": "%",
"edt_append_degree": "°",
"edt_append_sdegree": "s/grad",
"edt_append_leds": "LEDs",
"edt_msg_error_notset": "Attribut muss gesetzt sein",
"edt_msg_error_notempty": "Eingabe benötigt",
"edt_msg_error_enum": "Die Eingabe muss einem der aufgeführten Werte entsprechen",
"edt_msg_error_anyOf": "Die Eingabe muss gegen mindestens eines der gegebenen Schemata validiert werden können",
"edt_msg_error_oneOf": "Die Eingabe muss gegen genau eines der gegebenen Schemata validiert werden können. Momentan können $1 Schemata validiert werden",
"edt_msg_error_not": "Die Eingabe darf nicht gegen das gegebene Schema validiert werden können",
"edt_msg_error_type_union": "Die Eingabe muss einem der gegebenen Typen entsprechen",
"edt_msg_error_type": "Die Eingabe muss vom Typ $1 sein",
"edt_msg_error_disallow_union": "Die Eingabe darf nicht einem der gegebenen Werte entsprechen",
"edt_msg_error_disallow": "Die Eingabe muss vom Typ $1 sein",
"edt_msg_error_multipleOf": "Die Eingabe muss ein Vielfaches von $1 sein",
"edt_msg_error_maximum_excl": "Der Wert muss kleiner als $1 sein",
"edt_msg_error_maximum_incl": "Der Wert darf höchstens $1 sein",
"edt_msg_error_minimum_excl": "Der Wert muss größer als $1 sein",
"edt_msg_error_minimum_incl": "Der Wert muss mindestens $1 sein",
"edt_msg_error_maxLength": "Die Eingabe darf höchstens $1 Zeichen lang sein",
"edt_msg_error_minLength": "Die Eingabe muss mindestens $1 Zeichen lang sein",
"edt_msg_error_pattern": "Die Eingabe muss dem gegebenen Muster entsprechen",
"edt_msg_error_additionalItems": "In diesem Feld sind keine weiteren Elemente erlaubt",
"edt_msg_error_maxItems": "Das Feld darf höchstens $1 Element(e) beinhalten",
"edt_msg_error_minItems": "Das Feld muss mindestens $1 Element(e) beinhalten",
"edt_msg_error_uniqueItems": "Das Feld darf nur einzigartige Elemente beinhalten",
"edt_msg_error_maxProperties": "Das Objekt darf höchstens $1 Attribute habe",
"edt_msg_error_minProperties": "Das Objekt muss mindestens $1 Attribute haben",
"edt_msg_error_required": "Das Objekt beinhaltet nicht das benötigte Attribut '$1'",
"edt_msg_error_additional_properties": "Es sind keine weiteren Attribute erlaubt. $1 muss entfernt werden",
"edt_msg_error_dependency": "Das Attribut $1 ist zwingend erforderlich",
"edt_msg_button_delete_all": "Alle",
"edt_msg_button_delete_all_title": "Alle löschen",
"edt_msg_button_delete_last": "Letzes $1-Element",
"edt_msg_button_delete_last_title": "Letzes $1-Element löschen",
"edt_msg_button_add_row_title": "$1 Hinzufügen",
"edt_msg_button_move_down_title": "Nach unten verschieben",
"edt_msg_button_move_up_title": "Nach oben verschieben",
"edt_msg_button_delete_row_title": "$1 Löschen",
"edt_msg_button_delete_row_title_short": "Löschen",
"edt_msg_button_collapse": "Einklappen",
"edt_msg_button_expand": "Ausklappen"
>>>>>>> 04d62c2... second part of PR #578
} }

View File

@ -146,7 +146,7 @@ private:
/// @param forced indicate if it was a forced switch by system /// @param forced indicate if it was a forced switch by system
/// @return true on success. false if not found /// @return true on success. false if not found
/// ///
const bool handleInstanceSwitch(const quint8& instance = 0, const bool& forced = false); bool handleInstanceSwitch(const quint8& instance = 0, const bool& forced = false);
/// ///
/// Handle an incoming JSON Color message /// Handle an incoming JSON Color message
@ -287,7 +287,7 @@ private:
/// @param token The token to verify /// @param token The token to verify
/// @return True on succcess else false (pushes failed client feedback) /// @return True on succcess else false (pushes failed client feedback)
/// ///
const bool handleHTTPAuth(const QString& command, const int& tan, const QString& token); bool handleHTTPAuth(const QString& command, const int& tan, const QString& token);
/// Handle an incoming JSON instance message /// Handle an incoming JSON instance message
/// ///

View File

@ -94,6 +94,13 @@ private slots:
/// ///
void handleSettingsChange(const settings::type& type, const QJsonDocument& data); void handleSettingsChange(const settings::type& type, const QJsonDocument& data);
///
/// @brief Handle led config specific updates (required for led color streaming with positional display)
/// @param type The settings type from enum
/// @param data The data as QJsonDocument
///
void handleLedsConfigChange(const settings::type& type, const QJsonDocument& data);
/// ///
/// @brief Handle Hyperion instance manager change /// @brief Handle Hyperion instance manager change
/// ///

View File

@ -37,7 +37,7 @@ public:
/// @param[out] inst The id that has been assigned /// @param[out] inst The id that has been assigned
/// @return True on success else false /// @return True on success else false
/// ///
inline const bool createInstance(const QString& name, quint8& inst) inline bool createInstance(const QString& name, quint8& inst)
{ {
VectorPair fcond; VectorPair fcond;
fcond.append(CPair("friendly_name",name)); fcond.append(CPair("friendly_name",name));
@ -71,7 +71,7 @@ public:
/// @param inst The id that has been assigned /// @param inst The id that has been assigned
/// @return True on success else false /// @return True on success else false
/// ///
inline const bool deleteInstance(const quint8& inst) inline bool deleteInstance(const quint8& inst)
{ {
VectorPair cond; VectorPair cond;
cond.append(CPair("instance",inst)); cond.append(CPair("instance",inst));
@ -91,7 +91,7 @@ public:
/// @param name The new name of the instance /// @param name The new name of the instance
/// @return True on success else false (instance not found) /// @return True on success else false (instance not found)
/// ///
inline const bool saveName(const quint8& inst, const QString& name) inline bool saveName(const quint8& inst, const QString& name)
{ {
if(instanceExist(inst)) if(instanceExist(inst))
{ {
@ -136,7 +136,7 @@ public:
/// @param[in] user The user id /// @param[in] user The user id
/// @return true on success else false /// @return true on success else false
/// ///
inline const bool instanceExist(const quint8& inst) inline bool instanceExist(const quint8& inst)
{ {
VectorPair cond; VectorPair cond;
cond.append(CPair("instance",inst)); cond.append(CPair("instance",inst));
@ -191,7 +191,7 @@ public:
/// @param inst The instance to get /// @param inst The instance to get
/// @return True when enabled else false /// @return True when enabled else false
/// ///
inline const bool isEnabled(const quint8& inst) inline bool isEnabled(const quint8& inst)
{ {
VectorPair cond; VectorPair cond;
cond.append(CPair("instance", inst)); cond.append(CPair("instance", inst));

View File

@ -110,7 +110,7 @@ public:
// list of global settings // list of global settings
QStringList list; QStringList list;
// server port services // server port services
list << "jsonServer" << "protoServer" << "flatbufServer" << "udpListener" << "webConfig" << "network" list << "jsonServer" << "protoServer" << "flatbufServer" << "udpListener" << "forwarder" << "webConfig" << "network"
// capture // capture
<< "framegrabber" << "grabberV4L2" << "framegrabber" << "grabberV4L2"
// other // other

View File

@ -510,8 +510,8 @@ private:
/// Effect engine /// Effect engine
EffectEngine * _effectEngine; EffectEngine * _effectEngine;
// // Message forwarder // Message forwarder
// MessageForwarder * _messageForwarder; MessageForwarder * _messageForwarder;
/// Logger instance /// Logger instance
Logger * _log; Logger * _log;

View File

@ -57,7 +57,7 @@ public:
/// @param block If true return when thread has been started /// @param block If true return when thread has been started
/// @return Return true on success, false if not found in db /// @return Return true on success, false if not found in db
/// ///
const bool startInstance(const quint8& inst, const bool& block = false); bool startInstance(const quint8& inst, const bool& block = false);
/// ///
/// @brief Stop a Hyperion instance /// @brief Stop a Hyperion instance
@ -65,7 +65,7 @@ public:
/// @param block If true return when thread has been started /// @param block If true return when thread has been started
/// @return Return true on success, false if not found in db /// @return Return true on success, false if not found in db
/// ///
const bool stopInstance(const quint8& inst, const bool& block = false); bool stopInstance(const quint8& inst, const bool& block = false);
/// ///
/// @brief Create a new Hyperion instance entry in db /// @brief Create a new Hyperion instance entry in db
@ -73,14 +73,14 @@ public:
/// @param start If true it will be started after creation (async) /// @param start If true it will be started after creation (async)
/// @return Return true on success false if name is already in use or a db error occurred /// @return Return true on success false if name is already in use or a db error occurred
/// ///
const bool createInstance(const QString& name, const bool& start = false); bool createInstance(const QString& name, const bool& start = false);
/// ///
/// @brief Delete Hyperion instance entry in db. Cleanup also all associated table data for this instance /// @brief Delete Hyperion instance entry in db. Cleanup also all associated table data for this instance
/// @param inst The instance index /// @param inst The instance index
/// @return Return true on success, false if not found or not allowed /// @return Return true on success, false if not found or not allowed
/// ///
const bool deleteInstance(const quint8& inst); bool deleteInstance(const quint8& inst);
/// ///
/// @brief Assign a new name to the given instance /// @brief Assign a new name to the given instance
@ -88,7 +88,7 @@ public:
/// @param name The instance name index /// @param name The instance name index
/// @return Return true on success, false if not found /// @return Return true on success, false if not found
/// ///
const bool saveName(const quint8& inst, const QString& name); bool saveName(const quint8& inst, const QString& name);
signals: signals:
/// ///
@ -166,7 +166,7 @@ private:
/// @brief check if a instance is allowed for management. Instance 0 represents the root instance /// @brief check if a instance is allowed for management. Instance 0 represents the root instance
/// @apram inst The instance to check /// @apram inst The instance to check
/// ///
const bool isInstAllowed(const quint8& inst) { return (inst > 0); }; bool isInstAllowed(const quint8& inst) { return (inst > 0); };
private: private:
Logger* _log; Logger* _log;

View File

@ -29,7 +29,7 @@ public:
quint16 getPort() { return _port; }; quint16 getPort() { return _port; };
/// check if server has been inited /// check if server has been inited
const bool isInited() { return _inited; }; bool isInited() { return _inited; };
/// ///
/// @brief Set a new description, if empty the description is NotFound for clients /// @brief Set a new description, if empty the description is NotFound for clients

View File

@ -72,11 +72,11 @@ JsonAPI::JsonAPI(QString peerAddress, Logger* log, const bool& localConnection,
// init Hyperion pointer // init Hyperion pointer
handleInstanceSwitch(0); handleInstanceSwitch(0);
// // notify hyperion about a jsonMessageForward // notify hyperion about a jsonMessageForward
// connect(this, &JsonAPI::forwardJsonMessage, _hyperion, &Hyperion::forwardJsonMessage); connect(this, &JsonAPI::forwardJsonMessage, _hyperion, &Hyperion::forwardJsonMessage);
} }
const bool JsonAPI::handleInstanceSwitch(const quint8& inst, const bool& forced) bool JsonAPI::handleInstanceSwitch(const quint8& inst, const bool& forced)
{ {
// check if we are already on the requested instance // check if we are already on the requested instance
if(_hyperion != nullptr && _hyperion->getInstanceIndex() == inst) if(_hyperion != nullptr && _hyperion->getInstanceIndex() == inst)
@ -1241,7 +1241,7 @@ void JsonAPI::handleAuthorizeCommand(const QJsonObject & message, const QString
} }
} }
const bool JsonAPI::handleHTTPAuth(const QString& command, const int& tan, const QString& token) bool JsonAPI::handleHTTPAuth(const QString& command, const int& tan, const QString& token)
{ {
if(_authManager->isTokenAuthorized(token)) if(_authManager->isTokenAuthorized(token))
{ {

View File

@ -35,7 +35,7 @@ JsonCB::JsonCB(Hyperion* hyperion, QObject* parent)
, _prioMuxer(_hyperion->getMuxerInstance()) , _prioMuxer(_hyperion->getMuxerInstance())
{ {
_availableCommands << "components-update" << "sessions-update" << "priorities-update" << "imageToLedMapping-update" _availableCommands << "components-update" << "sessions-update" << "priorities-update" << "imageToLedMapping-update"
<< "adjustment-update" << "videomode-update" << "effects-update" << "settings-update" << "instance-update"; << "adjustment-update" << "videomode-update" << "effects-update" << "settings-update" << "leds-update" << "instance-update";
} }
bool JsonCB::subscribeFor(const QString& type) bool JsonCB::subscribeFor(const QString& type)
@ -92,6 +92,13 @@ bool JsonCB::subscribeFor(const QString& type)
connect(_hyperion, &Hyperion::settingsChanged, this, &JsonCB::handleSettingsChange, Qt::UniqueConnection); connect(_hyperion, &Hyperion::settingsChanged, this, &JsonCB::handleSettingsChange, Qt::UniqueConnection);
} }
if(type == "leds-update")
{
_subscribedCommands << type;
connect(_hyperion, &Hyperion::settingsChanged, this, &JsonCB::handleLedsConfigChange, Qt::UniqueConnection);
}
if(type == "instance-update") if(type == "instance-update")
{ {
_subscribedCommands << type; _subscribedCommands << type;
@ -318,6 +325,16 @@ void JsonCB::handleSettingsChange(const settings::type& type, const QJsonDocumen
doCallback("settings-update", QVariant(dat)); doCallback("settings-update", QVariant(dat));
} }
void JsonCB::handleLedsConfigChange(const settings::type& type, const QJsonDocument& data)
{
if(type == settings::LEDS)
{
QJsonObject dat;
dat[typeToString(type)] = data.array();
doCallback("leds-update", QVariant(dat));
}
}
void JsonCB::handleInstanceChange() void JsonCB::handleInstanceChange()
{ {
QJsonArray arr; QJsonArray arr;

View File

@ -7,9 +7,13 @@
// hyperion includes // hyperion includes
#include <hyperion/Hyperion.h> #include <hyperion/Hyperion.h>
// qt incl // qt incl
#include <QTcpServer> #include <QTcpServer>
// netUtil
#include <utils/NetUtils.h>
using namespace hyperion; using namespace hyperion;
BoblightServer::BoblightServer(Hyperion* hyperion,const QJsonDocument& config) BoblightServer::BoblightServer(Hyperion* hyperion,const QJsonDocument& config)
@ -42,11 +46,9 @@ void BoblightServer::start()
if ( _server->isListening() ) if ( _server->isListening() )
return; return;
if (!_server->listen(QHostAddress::Any, _port)) if (NetUtils::portAvailable(_port, _log))
{ _server->listen(QHostAddress::Any, _port);
Error(_log, "Could not bind to port '%d', please use an available port", _port);
return;
}
Info(_log, "Started on port %d", _port); Info(_log, "Started on port %d", _port);
_hyperion->getComponentRegister().componentStateChanged(COMP_BOBLIGHTSERVER, _server->isListening()); _hyperion->getComponentRegister().componentStateChanged(COMP_BOBLIGHTSERVER, _server->isListening());

View File

@ -4,7 +4,7 @@
// Qt includes // Qt includes
#include <QRgb> #include <QRgb>
// protoserver includes // flatbuffer includes
#include <flatbufserver/FlatBufferConnection.h> #include <flatbufserver/FlatBufferConnection.h>
FlatBufferConnection::FlatBufferConnection(const QString& origin, const QString & address, const int& priority, const bool& skipReply) FlatBufferConnection::FlatBufferConnection(const QString& origin, const QString & address, const int& priority, const bool& skipReply)

View File

@ -50,7 +50,7 @@ Hyperion::Hyperion(const quint8& instance)
, _muxer(_ledString.leds().size()) , _muxer(_ledString.leds().size())
, _raw2ledAdjustment(hyperion::createLedColorsAdjustment(_ledString.leds().size(), getSetting(settings::COLOR).object())) , _raw2ledAdjustment(hyperion::createLedColorsAdjustment(_ledString.leds().size(), getSetting(settings::COLOR).object()))
, _effectEngine(nullptr) , _effectEngine(nullptr)
// , _messageForwarder(new MessageForwarder(this)) , _messageForwarder(nullptr)
, _log(Logger::getInstance("HYPERION")) , _log(Logger::getInstance("HYPERION"))
, _hwLedCount() , _hwLedCount()
, _ledGridSize(hyperion::getLedLayoutGridSize(getSetting(settings::LEDS).array())) , _ledGridSize(hyperion::getLedLayoutGridSize(getSetting(settings::LEDS).array()))
@ -116,6 +116,10 @@ void Hyperion::start()
_deviceSmooth = new LinearColorSmoothing(getSetting(settings::SMOOTHING), this); _deviceSmooth = new LinearColorSmoothing(getSetting(settings::SMOOTHING), this);
connect(this, &Hyperion::settingsChanged, _deviceSmooth, &LinearColorSmoothing::handleSettingsUpdate); connect(this, &Hyperion::settingsChanged, _deviceSmooth, &LinearColorSmoothing::handleSettingsUpdate);
// create the message forwarder only on main instance
if (_instIndex == 0)
_messageForwarder = new MessageForwarder(this);
// create the effect engine; needs to be initialized after smoothing! // create the effect engine; needs to be initialized after smoothing!
_effectEngine = new EffectEngine(this); _effectEngine = new EffectEngine(this);
connect(_effectEngine, &EffectEngine::effectListUpdated, this, &Hyperion::effectListUpdated); connect(_effectEngine, &EffectEngine::effectListUpdated, this, &Hyperion::effectListUpdated);
@ -162,7 +166,7 @@ void Hyperion::freeObjects(bool emitCloseSignal)
delete _captureCont; delete _captureCont;
delete _effectEngine; delete _effectEngine;
delete _raw2ledAdjustment; delete _raw2ledAdjustment;
// delete _messageForwarder; delete _messageForwarder;
delete _settingsManager; delete _settingsManager;
delete _ledDeviceWrapper; delete _ledDeviceWrapper;
} }

View File

@ -57,7 +57,7 @@ void HyperionIManager::stopAll()
} }
} }
const bool HyperionIManager::startInstance(const quint8& inst, const bool& block) bool HyperionIManager::startInstance(const quint8& inst, const bool& block)
{ {
if(_instanceTable->instanceExist(inst)) if(_instanceTable->instanceExist(inst))
{ {
@ -102,7 +102,7 @@ const bool HyperionIManager::startInstance(const quint8& inst, const bool& block
return false; return false;
} }
const bool HyperionIManager::stopInstance(const quint8& inst, const bool& block) bool HyperionIManager::stopInstance(const quint8& inst, const bool& block)
{ {
// inst 0 can't be stopped // inst 0 can't be stopped
if(!isInstAllowed(inst)) if(!isInstAllowed(inst))
@ -133,7 +133,7 @@ const bool HyperionIManager::stopInstance(const quint8& inst, const bool& block)
return false; return false;
} }
const bool HyperionIManager::createInstance(const QString& name, const bool& start) bool HyperionIManager::createInstance(const QString& name, const bool& start)
{ {
quint8 inst; quint8 inst;
if(_instanceTable->createInstance(name, inst)) if(_instanceTable->createInstance(name, inst))
@ -149,7 +149,7 @@ const bool HyperionIManager::createInstance(const QString& name, const bool& sta
return false; return false;
} }
const bool HyperionIManager::deleteInstance(const quint8& inst) bool HyperionIManager::deleteInstance(const quint8& inst)
{ {
// inst 0 can't be deleted // inst 0 can't be deleted
if(!isInstAllowed(inst)) if(!isInstAllowed(inst))
@ -169,7 +169,7 @@ const bool HyperionIManager::deleteInstance(const quint8& inst)
return false; return false;
} }
const bool HyperionIManager::saveName(const quint8& inst, const QString& name) bool HyperionIManager::saveName(const quint8& inst, const QString& name)
{ {
if(_instanceTable->saveName(inst, name)) if(_instanceTable->saveName(inst, name))
{ {

View File

@ -48,7 +48,6 @@ PriorityMuxer::PriorityMuxer(int ledCount)
connect(_updateTimer, &QTimer::timeout, this, &PriorityMuxer::setCurrentTime); connect(_updateTimer, &QTimer::timeout, this, &PriorityMuxer::setCurrentTime);
_updateTimer->setInterval(250); _updateTimer->setInterval(250);
_updateTimer->start(); _updateTimer->start();
InputInfo ninfo;
} }
PriorityMuxer::~PriorityMuxer() PriorityMuxer::~PriorityMuxer()
@ -279,7 +278,9 @@ void PriorityMuxer::clearAll(bool forceClearAll)
void PriorityMuxer::setCurrentTime(void) void PriorityMuxer::setCurrentTime(void)
{ {
const int64_t now = QDateTime::currentMSecsSinceEpoch(); const int64_t now = QDateTime::currentMSecsSinceEpoch();
int newPriority = PriorityMuxer::LOWEST_PRIORITY; int newPriority;
_activeInputs.contains(140) ? newPriority = 140 : newPriority = PriorityMuxer::LOWEST_PRIORITY;
_activeInputs.contains(0) ? newPriority = 0 : newPriority = PriorityMuxer::LOWEST_PRIORITY;
for (auto infoIt = _activeInputs.begin(); infoIt != _activeInputs.end();) for (auto infoIt = _activeInputs.begin(); infoIt != _activeInputs.end();)
{ {

View File

@ -49,7 +49,7 @@ public:
quint16 getServerPort (void) const; quint16 getServerPort (void) const;
QString getErrorString (void) const; QString getErrorString (void) const;
const bool isListening() { return m_sockServer->isListening(); }; bool isListening() { return m_sockServer->isListening(); };
public slots: public slots:
void start (quint16 port = 0); void start (quint16 port = 0);

View File

@ -23,7 +23,7 @@ StaticFileServing::StaticFileServing (QObject * parent)
StaticFileServing::~StaticFileServing () StaticFileServing::~StaticFileServing ()
{ {
delete _mimeDb;
} }
void StaticFileServing::setBaseUrl(const QString& url) void StaticFileServing::setBaseUrl(const QString& url)