Added NRF Connection, Translation to German, Remove LED controls

This commit is contained in:
Carsten Schmiemann 2022-04-02 13:17:28 +02:00
parent 5fafa9c896
commit c0216c7338
6 changed files with 126 additions and 165 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,5 @@
GPIO 4 - CE (Radio Enable)
GPIO15 - HSPIQ / MISO
GPIO2 - HSPID / MOSI
GPIO14 - HSPIclk / SCK
GPIO5 - SPI-CS / CSN/CS

View File

@ -89,7 +89,7 @@ public:
Settings() :
adminUsername(""),
adminPassword(""),
ethernet_enable(true),
ethernet_enable(false),
cePin(4),
csnPin(5),
resetPin(0),

View File

@ -10,7 +10,7 @@
#include <IntParsing.h>
#include <Size.h>
#include <LinkedList.h>
#include <LEDStatus.h>
//#include <LEDStatus.h>
#include <GroupStateStore.h>
#include <MiLightRadioConfig.h>
#include <MiLightRemoteConfig.h>

View File

@ -35,21 +35,15 @@
<nav class="navbar navbar-inverse">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">MiLight Hub</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="#settings" data-toggle="modal" data-target="#settings-modal">Settings</a></li>
<li><a href="#settings" data-toggle="modal" data-target="#settings-modal">Einstellungen</a></li>
<li class="dropdown">
<a href="#admin" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">ESP <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#admin-actions" data-toggle="modal" data-target="#admin-actions-modal">Actions</a></li>
<li><a href="#admin-actions" data-toggle="modal" data-target="#admin-actions-modal">Befehle</a></li>
<li role="separator" class="divider"></li>
<li><a href="#backup" data-toggle="modal" data-target="#backup-settings-modal">Backup</a></li>
</ul>
@ -57,7 +51,7 @@
<li>
<a href="#sniff" id="sniff">
<i class="glyphicon glyphicon-play"></i>
<span>Start Sniffing</span>
<span>Starte Sniffing</span>
</a>
</li>
</ul>
@ -71,9 +65,9 @@
<div class="row" id="device-id-aliases-row">
<div class="col-sm-3">
<label for="deviceAliases" id="device-id-aliases">
Device Name
Lampen-Name
</label>
<select id="deviceAliases" placeholder="Create alias...">
<select id="deviceAliases" placeholder="Namen erstellen...">
</select>
</div>
</div>
@ -82,16 +76,16 @@
<div class="row">
<div class="col-sm-3">
<label for="deviceId" id="device-id-label">
Device Id
Fernbedienungs-ID
<span class="error-info"></span>
</label>
<select id="deviceId" placeholder="Enter hub ID">
<select id="deviceId" placeholder="Fernbedienungs ID erstellen...">
</select>
</div>
<div class="col-sm-4">
<div class="mode-option" id="group-option" data-for="cct,rgbw,rgb_cct,fut089,fut091">
<label for="groupId">Group</label>
<label for="groupId">Gruppe</label>
<div class="btn-group" id="groupId" data-toggle="buttons">
<label class="btn btn-default active">
@ -126,10 +120,10 @@
</div>
<div class="col-sm-4">
<label for="mode">Remote Type</label>
<label for="mode">Vorschaltgerät Typ</label>
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
<label>Mode</label>
<label>Effekt</label>
<span class="caret"></span>
</button>
<ul class="dropdown-menu" id="mode">
@ -163,7 +157,7 @@
<div class="mode-option" data-for="rgbw,rgb_cct,rgb,fut089,fut020">
<div class="row">
<div class="col-sm-12">
<h5>Hue</h5>
<h5>Farbe</h5>
</div>
</div>
@ -181,7 +175,7 @@
<div class="mode-option" data-for="rgb_cct,fut089">
<div class="row">
<div class="col-sm-12">
<h5>Saturation</h5>
<h5>Sättigung</h5>
</div>
</div>
<div class="row">
@ -198,7 +192,7 @@
<div class="mode-option" data-for="cct,rgb_cct,fut089,fut091">
<div class="row">
<div class="col-sm-12">
<h5>Color Temperature</h5>
<h5>Farbtemperatur</h5>
</div>
</div>
<div class="row">
@ -216,7 +210,7 @@
<div class="row">
<div class="col-sm-12">
<h5>Brightness</h5>
<h5>Helligkeit</h5>
</div>
</div>
@ -232,7 +226,7 @@
<div class="row">
<div class="col-sm-12">
<h5>Commands</h5>
<h5>Befehle</h5>
</div>
</div>
@ -244,22 +238,22 @@
</li>
<div class="mode-option inline" data-for="rgbw,rgb_cct,fut089,fut020">
<li>
<button type="button" class="btn btn-default command-btn" data-command="set_white">White</button>
<button type="button" class="btn btn-default command-btn" data-command="set_white">Weiß</button>
</li>
</div>
<li>
<button type="button" id="btnHeight" class="btn btn-info command-btn" data-command="night_mode">Night</button>
<button type="button" id="btnHeight" class="btn btn-info command-btn" data-command="night_mode">Nacht</button>
</li>
<li>
<button type="button" class="btn btn-success command-btn" data-command="pair">
<i class="glyphicon glyphicon-plus"></i>
Pair
Koppeln
</button>
</li>
<li>
<button type="button" class="btn btn-danger command-btn" data-command="unpair">
<i class="glyphicon glyphicon-remove"></i>
Unpair
Entkoppeln
</button>
</li>
</ul>
@ -271,7 +265,7 @@
<button type="button" class="btn btn-default btn-number command-btn" data-command="previous_mode">
<span class="glyphicon glyphicon-minus"></span>
</button>
<span class="title">Mode</span>
<span class="title">Effekt</span>
<button type="button" class="btn btn-default btn-number command-btn clearfix" data-command="next_mode">
<span class="glyphicon glyphicon-plus"></span>
</button>
@ -283,7 +277,7 @@
<li>
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
Mode
Effekt
<span class="caret"></span>
</button>
<ul class="dropdown-menu mode-dropdown">
@ -297,7 +291,7 @@
<button type="button" class="btn btn-default btn-number command-btn" data-command="mode_speed_down">
<span class="glyphicon glyphicon-minus"></span>
</button>
<span class="title">Speed</span>
<span class="title">Geschwindigkeit</span>
<button type="button" class="btn btn-default btn-number command-btn" data-command="mode_speed_up">
<span class="glyphicon glyphicon-plus"></span>
</button>
@ -316,7 +310,7 @@
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h2 class="modal-title">Gateway Servers</h2>
<h2 class="modal-title">Gateway Server</h2>
</div>
<div class="modal-body">
@ -326,9 +320,9 @@
<table class="table">
<thead>
<tr>
<th>Device ID</th>
<th>Fernbedienungs ID</th>
<th>UDP Port</th>
<th>Protocol Version</th>
<th>Protokoll Version</th>
<th>
<a class="btn btn-success gateway-add-btn" id="add-server-btn">
<i class="glyphicon glyphicon-plus"></i>
@ -355,7 +349,7 @@
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h2 class="modal-title">Settings</h2>
<h2 class="modal-title">Einstellungen</h2>
</div>
<div class="modal-body">
@ -375,7 +369,7 @@
<div class="alert alert-warning alert-block" id="traffic-sniff">
<button type="button" class="close" id="traffic-sniff-close">&times;</button>
<h4>Traffic sniffed (sent and received)</h4>
<h4>Paket-Sniffer (Senden und Empfangen)</h4>
<div id="sniffed-traffic"></div>
</div>
</div>
@ -386,21 +380,21 @@
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h2 class="modal-title">Backup & Restore Settings</h2>
<h2 class="modal-title">Backup & Wiederherstellen der Einstellungen</h2>
</div>
<div class="modal-body">
<div>
<h3 class="section-title">Backup Settings</h3>
<a href="/settings" download="settings.json" class="btn btn-primary">Backup Settings</a>
<h3 class="section-title">Sichern der Einstellungen</h3>
<a href="/settings" download="settings.json" class="btn btn-primary">Backup der Einstellungen</a>
</div>
<div>
<h3 class="section-title">Restore Settings</h3>
<h3 class="section-title">Sichern der Einstellungen</h3>
<form action="/settings" method="post" enctype="multipart/form-data">
<div class="input-group">
<label class="input-group-btn">
<span class="btn btn-primary">
Browse
Durchsuchen
<input type="file" name="file" accept=".json" style="display: none;">
</span>
</label>
@ -409,7 +403,7 @@
<label class="input-group-btn">
<span class="btn btn-success">
Upload
Hochladen
<input type="submit" style="display: none;">
</span>
</label>
@ -436,10 +430,10 @@
<div class="modal-body">
<ul class="action-buttons">
<li>
<button class="btn btn-danger btn-sm system-btn" data-command="restart">Restart</button>
<button class="btn btn-danger btn-sm system-btn" data-command="restart">Neustarten</button>
</li>
<li>
<button class="btn btn-danger btn-sm system-btn" data-command="clear_wifi_config">Disconnect WiFi</button>
<button class="btn btn-danger btn-sm system-btn" data-command="clear_wifi_config">WiFi trennen</button>
</li>
</ul>
</div>

View File

@ -50,72 +50,72 @@ var UI_TABS = [ {
var UI_FIELDS = [ {
tag: "ethernet_enable",
friendly: "Switch ethernet on or off",
help: "Enable Ethernet Interface, WiFi will disabled for security reasons, but config will retained.",
friendly: "Ethernet aktivieren",
help: "Ethernet einschalten, WLAN wird dadurch getrennt, aber Einstellungen bleiben erhalten.",
type: "option_buttons",
options: {
true: 'Enable',
false: 'Disable'
true: 'Ein',
false: 'Aus'
},
tab: "tab-ethernet"
}, {
tag: "ethernet_static_ip",
friendly: "Static IP Address (leave blank to use DHCP)",
help: "Static IP address",
friendly: "Statische IP-Adresse",
help: "Statische IP-Adresse (Leer lassen für DHCP)",
type: "string",
tab: "tab-ethernet"
}, {
tag: "ethernet_static_ip_netmask",
friendly: "Static IP Netmask",
help: "Netmask to use with Static IP",
friendly: "Statische IP-Netzmaske",
help: "Netzmaske für die statische IP-Adresse",
type: "string",
tab: "tab-ethernet"
}, {
tag: "ethernet_static_ip_gateway",
friendly: "Static IP Gateway Address",
help: "IP address to use as gateway when a Static IP is speicifed",
friendly: "Statisches IP-Gateway",
help: "IP-Adresse des Gateways",
type: "string",
tab: "tab-ethernet"
}, {
tag: "admin_username",
friendly: "Admin username",
help: "Username for logging into this webpage",
friendly: "Admin Benutzername",
help: "Benutzername zum Einloggen",
type: "string",
tab: "tab-wifi"
}, {
tag: "admin_password",
friendly: "Password",
help: "Password for logging into this webpage",
friendly: "Passwort",
help: "Passwort für Admin-Benutzer",
type: "string",
tab: "tab-wifi"
}, {
tag: "hostname",
friendly: "Hostname",
help: "Self-reported hostname to send along with DCHP request",
help: "Hostname des MiLight Gateways, wird für DHCP verwendet",
type: "string",
tab: "tab-wifi"
}, {
tag: "wifi_static_ip",
friendly: "Static IP Address",
help: "Static IP address (leave blank to use DHCP)",
friendly: "Statische IP-Adresse",
help: "Statische IP-Adresse (Leer lassen für DHCP)",
type: "string",
tab: "tab-wifi"
}, {
tag: "wifi_static_ip_netmask",
friendly: "Static IP Netmask",
help: "Netmask to use with Static IP",
friendly: "Statische IP-Netzmaske",
help: "Netzmaske für die statische IP-Adresse",
type: "string",
tab: "tab-wifi"
}, {
tag: "wifi_static_ip_gateway",
friendly: "Static IP Gateway Address",
help: "IP address to use as gateway when a Static IP is speicifed",
friendly: "Statisches IP-Gateway",
help: "IP-Adresse des Gateways",
type: "string",
tab: "tab-wifi"
}, {
tag: "wifi_mode",
friendly: "WiFi Mode",
help: "Try using G mode if you're having stability problems",
friendly: "WiFi Modus",
help: "Bei Instabilitäten G-Modus verwenden",
type: "option_buttons",
options: {
'b': 'B',
@ -126,131 +126,125 @@ var UI_FIELDS = [ {
}, {
tag: "ce_pin",
friendly: "CE / PKT pin",
help: "Pin on ESP32-PoE used for 'CE' (for NRF24L01 interface) or 'PKT' (for 'PL1167/LT8900' interface)",
help: "Pin auf ESP32-PoE für 'CE' (NRF24L01 interface) oder 'PKT' ('PL1167/LT8900' interface)",
type: "string",
tab: "tab-setup"
}, {
tag: "csn_pin",
friendly: "CSN pin",
help: "Pin on ESP32-PoE used for 'CSN'",
help: "Pin auf ESP32-PoE für 'CSN'",
type: "string",
tab: "tab-setup"
}, {
tag: "reset_pin",
friendly: "RESET pin",
help: "Pin on ESP32-PoE used for 'RESET'",
type: "string",
tab: "tab-setup"
}, {
tag: "led_pin",
friendly: "LED pin",
help: "Pin to use for LED status display (0=disabled); negative inverses signal (recommend -2 for on-board LED)",
help: "Pin auf ESP32-PoE für 'RESET'",
type: "string",
tab: "tab-setup"
}, {
tag: "packet_repeats",
friendly: "Packet repeats",
help: "The number of times to repeat RF packets sent to bulbs",
friendly: "Paketwiederholungen",
help: "Anzahl der Pakete die wiederholt an die Lampen gesendet werden.",
type: "string",
tab: "tab-radio"
}, {
tag: "packet_repeats_per_loop",
friendly: "Packet repeats per loop",
help: "Number of repeats to send in a single go. Higher values mean more throughput, but less multitasking.",
friendly: "Paketwiederholungen pro Zyklus",
help: "Paketwiederholungen in einem Sendezyklus. Höhere Werte garantieren bessere Übernahme bei den Lampen, "+
"aber die Anzahl max gleichzeitiger Veränderungen sinkt.",
type: "string",
tab: "tab-radio"
}, {
tag: "http_repeat_factor",
friendly: "HTTP repeat factor",
help: "Multiplicative factor on packet_repeats for requests initiated by the HTTP API. UDP API typically receives " +
"duplicate packets, so more repeats should be used for HTTP",
friendly: "HTTP Wiederholungsfaktor",
help: "Faktor für Paketwiederholungen die durch die HTTP API ausgelöst werden sollen. " +
"UDP bekommt eh mehere Pakete, die gesendet werden.",
type: "string",
tab: "tab-wifi"
}, {
tag: "auto_restart_period",
friendly: "Auto-restart period",
help: "Automatically restart the device every number of minutes specified. Use 0 for disabled",
friendly: "Automatischer Neustart des ESP32-PoE MiLight Gateways",
help: "Automatischer alle X Minunten, 0 zum Deaktivieren der Funktion",
type: "string",
tab: "tab-setup"
}, {
tag: "discovery_port",
friendly: "Discovery port",
help: "UDP port to listen for discovery packets on. Defaults to the same port used by MiLight devices, 48899. Use 0 to disable",
friendly: "Discovery Port",
help: "UDP port um auf Discover Anfragen von MiLight Geräten/Apps zu hören. Standardmäßig verwendet die Original App Port 48899. 0 zum Deaktivieren.",
type: "string",
tab: "tab-wifi"
}, {
tag: "mqtt_server",
friendly: "MQTT server",
help: "Domain or IP address of MQTT broker. Optionally specify a port with (example) myMQTTbroker.com:1884",
friendly: "MQTT Server",
help: "Domain oder IP-Adresse des MQTT-Servers. Es kann auch ein Port in Form von :1883 angegeben werden",
type: "string",
tab: "tab-mqtt"
}, {
tag: "mqtt_topic_pattern",
friendly: "MQTT topic pattern",
help: "Pattern for MQTT topics to listen on. Example: lights/:device_id/:device_type/:group_id. See README for further details",
friendly: "MQTT Topic Struktur",
help: "MQTT-Struktur auf welcher nach Befehlen gehört werden soll. Beispiel: lights/:device_id/:device_type/:group_id.",
type: "string",
tab: "tab-mqtt"
}, {
tag: "mqtt_update_topic_pattern",
friendly: "MQTT update topic pattern",
help: "Pattern to publish MQTT updates. Packets that are received from other devices, and packets that are sent from this device will " +
"result in updates being sent",
friendly: "MQTT Update Topic Struktur",
help: "Alle Updates die von diesem Gerät oder von anderen Geräten (Fernbedinungen etc.) gesendet werden, werden in diesem Topic veröffentlicht.",
type: "string",
tab: "tab-mqtt"
}, {
tag: "mqtt_state_topic_pattern",
friendly: "MQTT state topic pattern",
help: "Pattern for MQTT topic to publish state to. When a group changes state, the full known state of the group will be published to this topic pattern",
friendly: "MQTT Status Topic Struktur",
help: "MQTT-Struktur auf die der vollständige Zustand einer Gruppe gesendet wird.",
type: "string",
tab: "tab-mqtt"
}, {
tag: "mqtt_username",
friendly: "MQTT user name",
help: "User name to log in to MQTT server",
friendly: "MQTT Benutzername",
help: "Benutzername zum Einloggen in den MQTT-Server",
type: "string",
tab: "tab-mqtt"
}, {
tag: "mqtt_password",
friendly: "MQTT password",
help: "Password to log into MQTT server",
friendly: "MQTT Passwort",
help: "Passwort zum Einloggen in den MQTT-Server",
type: "string",
tab: "tab-mqtt"
}, {
tag: "mqtt_client_status_topic",
friendly: "MQTT Client Status Topic",
help: "Connection status messages will be published to this topic. This includes LWT and birth. See README for further detail.",
help: "Der Verbindungsstatus vom ESP32-PoE MiLight Gateway wird hier veröffentlicht. (LWT und birth).",
type: "string",
tab: "tab-mqtt"
}, {
tag: "mqtt_retain",
friendly: "Publish state messages with retain flag",
help: "If enabled, state messages will be published with the MQTT retain flag.",
friendly: "MQTT Zustandsmeldungen mit Retain-Flag senden",
help: "Wenn der Haken gesetzt wird, werden alle Zustandsmeldungen mit dem Retain-Flag gesendet.",
type: "option_buttons",
options: {
true: "Enabled",
false: "Disabled"
true: "Aktiviert",
false: "Deaktiviert"
},
tab: "tab-mqtt"
}, {
tag: "simple_mqtt_client_status",
friendly: "Client Status Messages Mode",
help: "In simple mode, only the strings 'connected' and 'disconnected' will be published. In detailed mode, data about the version, IP address, etc. will be included.",
help: "Im einfachen Modus wird nur der Status 'verbunden' oder 'getrennt' übermittelt, im detaillierten Modus werden Infos wie IP-Adresse, Version etc. übermittelt",
type: "option_buttons",
options: {
true: "Simple",
false: "Detailed"
true: "Einfach",
false: "Detailliert"
},
tab: "tab-mqtt"
}, {
tag: "home_assistant_discovery_prefix",
friendly: "HomeAssistant MQTT Discovery Prefix",
help: "If set, will enable integration with HomeAssistant's MQTT discovery functionality to allow saved aliases to be detected automatically",
friendly: "HomeAssistant MQTT Discovery Präfix",
help: "Eingebaute MQTT Discovery von Home Assistant ermöglichen, dieses Gateway automatisch zu erkennen und konfigurieren.",
type: "string",
tab: "tab-mqtt"
}, {
tag: "radio_interface_type",
friendly: "Radio interface type",
help: "2.4 GHz radio model. Only change this if you know you're not using an NRF24L01!",
friendly: "Radio interface Typ",
help: "2.4 GHz Version. Nur Verwenden wenn kein NRF24L01 benutzt wird!",
type: "option_buttons",
options: {
'nRF24': 'nRF24',
@ -260,19 +254,19 @@ var UI_FIELDS = [ {
}, {
tag: "rf24_power_level",
friendly: "nRF24 Power Level",
help: "Power level for nRF24L01",
help: "Power Level für nRF24L01",
type: "option_buttons",
options: {
'MIN': 'Min',
'LOW': 'Low',
'HIGH': 'High',
'LOW': 'Niedrig',
'HIGH': 'Hoch',
'MAX': 'Max'
},
tab: "tab-radio"
}, {
tag: "rf24_listen_channel",
friendly: "nRF24 Listen Channel",
help: "Which channels to listen for messages on the nRF24",
help: "Kanal auf dem nRF24 der abgehört werden soll",
type: "option_buttons",
options: {
'LOW': 'Min',
@ -283,7 +277,7 @@ var UI_FIELDS = [ {
}, {
tag: "rf24_channels",
friendly: "nRF24 Send Channels",
help: "Which channels to send messages on for the nRF24. Using fewer channels speeds up sends.",
help: "Auf diesen Kanälen wir der nRF24 senden, umso weniger umso schnellere Reaktion der Lampen.",
type: "option_buttons",
settings: {
multiple: true,
@ -297,27 +291,27 @@ var UI_FIELDS = [ {
}, {
tag: "listen_repeats",
friendly: "Listen repeats",
help: "Increasing this increases the amount of time spent listening for " +
"packets. Set to 0 to disable listening. Default is 3.",
help: "Erhöhen um mehr Zeit zum Abhören des Funks auf MiLight Paketen zu verwenden " +
"0 = Kein Abhören auf Pakete, Standard ist 3.",
type: "string",
tab: "tab-wifi"
}, {
tag: "state_flush_interval",
friendly: "State flush interval",
help: "Minimum number of milliseconds between flushing state to flash. " +
"Set to 0 to disable delay and immediately persist state to flash",
help: "Kleinster Zeitintervall (Millisekunden) bevor die zustände auf dem Flash gespeichert werden. " +
"Auf 0 setzen um keine Verzögerung zu verwenden und den Zustand sofort auf dem Flash zu speichern",
type: "string",
tab: "tab-setup"
}, {
tag: "mqtt_state_rate_limit",
friendly: "MQTT state rate limit",
help: "Minimum number of milliseconds between MQTT updates of bulb state (defaults to 500)",
help: "Kleinster Zeitintervall (Millisekunden), bevor die Zustände der Lampen per MQTT gesendet werden",
type: "string",
tab: "tab-mqtt"
}, {
tag: "mqtt_debounce_delay",
friendly: "MQTT debounce delay",
help: "Minimum number of milliseconds delay for MQTT state updates after change (defaults to 500)",
help: "Kleinster Zeitintervall (Millisekunden), bevor Änderungen auf MQTT gesendet werden",
type: "string",
tab: "tab-mqtt"
}, {
@ -346,57 +340,25 @@ var UI_FIELDS = [ {
tab: "tab-radio"
}, {
tag: "group_state_fields",
friendly: "Group state fields",
help: "Selects which fields should be included in MQTT state updates and REST responses for bulb state",
friendly: "Gruppenzustands Felder",
help: "Auswählen welche Eigenschaften auf MQTT oder per REST-API veröffentlicht werden sollen.",
type: "group_state_fields",
tab: "tab-mqtt"
}, {
tag: "enable_automatic_mode_switching",
friendly: "Switch to previous mode after saturation/color commands",
help: "For RGBWW bulbs (using RGB+CCT or FUT089), commands that adjust color saturation or white temperature "
+ "will switch into the appropriate mode, make the change, and switch back to previous mode. WARNING: this "
+ "feature is not compatible with 'color' commands.",
friendly: "Automatisches Umschalten des Moduses (RGB-Farbmodus oder Farbtemperatur)",
help: "Bei RGBWW Lampen wird beim Senden des entsprechendes Befehles wie Farbe oder Farbtemp, kurz in den passenden Modus gewechselt, der Befehl gesendet " +
"und wieder auf den vorherigen Modus zurück geschaltet.",
type: "option_buttons",
options: {
true: 'Enable',
false: 'Disable'
true: 'Aktiviert',
false: 'Deaktiviert'
},
tab: "tab-radio"
}, {
tag: "led_mode_wifi_config",
friendly: "LED mode during wifi config",
help: "LED mode when the device is in Access Point mode waiting to configure Wifi",
type: "led_mode",
tab: "tab-led"
}, {
tag: "led_mode_wifi_failed",
friendly: "LED mode when wifi failed to connect",
help: "LED mode when the device has failed to connect to the wifi network",
type: "led_mode",
tab: "tab-led"
}, {
tag: "led_mode_operating",
friendly: "LED mode when operating",
help: "LED mode when the device is in successfully running",
type: "led_mode",
tab: "tab-led"
}, {
tag: "led_mode_packet",
friendly: "LED mode on packets",
help: "LED mode when the device is sending or receiving packets",
type: "led_mode",
tab: "tab-led"
}, {
tag: "led_mode_packet_count",
friendly: "Flash count on packets",
help: "Number of times the LED will flash when packets are changing",
type: "string",
tab: "tab-led"
}, {
tag: "default_transition_period",
friendly: "Default transition period (milliseconds)",
help: "Controls how many milliseconds pass between transition packets. "+
"For more granular transitions, set this lower.",
friendly: "Abstand zwischen Transition-Paleten (Millisekunden)",
help: "Für feinere Farbübergänge einen kleineren Wert verwenden.",
type: "string",
tab: "tab-transitions"
}