Neben der Hardware ist die richtige Software für Euer Projekt natürlich genauso wichtig. Eine praktische und universell einsetzbare Firmware für den Wald-und-Wiesen-Mikrocontroller ESP8266 ist die Tasmota Firmware. Damit lassen sich diverse Projekte realisieren ohne, dass Ihr selber programmieren müsst. Außerdem muss man das Rad ja auch nicht jedes mal „neu erfinden“. 🙂
Antes de poder utilizarlo con su microcontrolador, por supuesto, primero debe transferirlo a él. En el siguiente artículo se describe cómo funciona esto y a qué debe prestar atención.
Instrucciones de seguridad
Sé que las siguientes notas siempre son un poco molestas y parecen innecesarias. Desafortunadamente, muchas personas que sabían "mejor" han perdido ojos, dedos u otras cosas debido a un descuido o se lesionaron. La pérdida de datos es casi insignificante en comparación, pero incluso estos pueden ser realmente molestos. Por lo tanto, tómese cinco minutos para leer las instrucciones de seguridad. Porque incluso el proyecto más genial no vale la pena lesionarse u otros problemas.
https://www.nerdiy.de/sicherheitshinweise/
Enlaces afiliados / enlaces publicitarios
Los enlaces a las tiendas en línea enumerados aquí son los llamados enlaces de afiliados. Si hace clic en dicho enlace de afiliado y realiza una compra a través de este enlace, Nerdiy.de recibirá una comisión de la tienda en línea o el proveedor correspondiente. El precio no cambia para usted. Si realiza sus compras a través de estos enlaces, ayuda a Nerdiy.de a poder ofrecer otros proyectos útiles en el futuro. 🙂
Requisitos
Artículos útiles:
Antes de comenzar este artículo, debe haber instalado y configurado el IDE de Arduino. Puedes encontrar información al respecto en el siguiente artículo.
Instalar programas: un ejemplo
ArduinoIDE - Consejos y trucos
Material requerido:
En la siguiente lista encontrará todas las piezas que necesita para implementar este artículo.
Herramienta requerida:
En la siguiente lista encontrarás todas las herramientas que necesitas para implementar este artículo.
Copie la versión actual de Tasmota de GitHub
Antes de poder comenzar a configurar y programar el firmware de Tasmota, primero debe descargarlo de GitHub.
Los archivos para el firmware se pueden encontrar en: https://github.com/arendst/Sonoff-Tasmota
Cómo puedes descargar archivos desde GitHub está en el artículo. GitHub: ¿Cómo copio archivos desde GitHub a mi computadora? descrito.
Después de descargar los archivos de firmware comprimidos, aún debes descomprimirlos. Puedes encontrar consejos sobre esto en el artículo. ¿WinRar? ¿WinZip? ¿WinWhat? - Cariño he reducido los archivos
Configurar el firmware de Tasmota
Muchas configuraciones del firmware de Tasmota también se pueden ajustar durante el funcionamiento. Sin embargo, me resulta más fácil importar estas configuraciones directamente usando el firmware configurado correctamente.
Außerdem ist das bei einigen verwendeten Sensoren auch unbedingt notwendig, da nicht alle Softwarekomponenten für jeden Sensor oder Aktor standardmäßig mitkompiliert(„zur Firmware hinzugefügt“) werden.
Las diversas opciones de firmware de Tasmota
In der nun geöffneten „user_config.h“ sind allerhand Einstellungsmöglichkeiten vorhanden. Meistens benötigt man nur einen Bruchteil davon. Der Vollständigkeit halber sind hier aber alle Optionen aufgelistet und kurz beschrieben.
Para que no tengas que revisar todas las opciones individualmente, he resaltado en verde las opciones que absolutamente debes editar. Detrás de esto se esconden, por ejemplo, contraseñas o URL que deberías configurar individualmente o al menos comprobar. Así que verifique estas opciones antes de transferir el firmware a su dispositivo Tasmota.
In der „MQTT“-Sektion lassen sich die grundlegenden Parameter zur Verbindung mit dem MQTT-Server einstellen. – – „MQTT_USE“ aktiviert den MQTT-Clienten.
– „MQTT_HOST“ legt die Adresse eures MQTT-Servers fest.
– Unter „MQTT_FINGERPRINTX“ könnt Ihr den Fingerprint zur Verschlüsselung Eurer MQTT-Verbindung festlegen. – – – „MQTT_PORT“ stellt den Port eures MQTT-Servers ein.
– In „MQTT_USER“ und „MQTT_PASS“ könnt Ihr jeweils Benutzername und Passwort für Euren MQTT-Server festlegen.
– Mit „MQTT_BUTTON_RETAIN“, „MQTT_POWER_RETAIN“ und „MQTT_SWITCH_RETAIN“ könnt Ihr das Retain-Flag für die jeweiligen MQTT-Nachrichten aktivieren. Dies bewirkt, dass die jeweiligen MQTT-Nachrichten auch an MQTT-Clienten gesendet werden die zum Zeitpunkt des sendens der MQTT-Nachricht noch nicht online waren.
– Mit „MQTT_STATUS_OFF“ könnt Ihr den String einstellen der in Befehlen genutzt wird um etwas auszuschalten.
– Mit „MQTT_STATUS_ON“ könnt Ihr den String einstellen der in Befehlen genutzt wird um etwas einzuschalten.
– Mit „MQTT_CMND_TOGGLE“ könnt Ihr den String einstellen der in Befehlen genutzt wird um etwas umzuschalten.
– Mit „MQTT_CMND_HOLD“ könnt Ihr den String einstellen der gesendet werden soll, wenn ein Taster für länger als in KEY_HOLD_TIME angegeben gedrückt wird.
En estas secciones se pueden especificar varios detalles sobre los temas MQTT utilizados.
Mit „MQTT_FULLOPIC“ legt Ihr die Struktur der genutzten Topics fest. Standardmäßig besteht dieses immer aus dem „prefix“ und dem jewieligen „topic“.
Unter „SUB_PREFIX“, „PUB_PREFIX“ und „PUB_PREFIX2“ werden dann die Prefixe festgelegt.
Dabei nutzt Euer Tasmota-Device das unter „SUB_PREFIX“ angegebene Prefix als Abonement – also um Werte und Befehle zu empfangen.
Das unter „PUB_PREFIX“ angegebene Pefix wird genutzt um Werte zu veröffentlichen.
Dabei werden Telemetrie-Daten über das in „PUB_PREFIX2“ festgelegte Prefix versendet.
Unter „MQTT_TOPIC“, „MQTT_GRTOPIC“, „MQTT_BUTTON_TOPIC“, „MQTT_SWITCH_TOPIC“ werden dann die Topics festgelegt.
Dabei steht „MQTT_TOPIC“ für das individuelle Topic des Tasmota-Devices. Dabei wird auch immer ein Teil der MAC-Adresse Eures Tasmota-Devices mit angehängt.
„MQTT_GRTOPIC“ steht für ein Topic in der Ihr mehrere Tasmota-Devices in einer Gruppe zusammenfassen könnt.
Mit „MQTT_BUTTON_TOPIC“ und „MQTT_SWITCH_TOPIC“ könnt Ihr spezielle Topics für die eventuell angeschlossenen Taster und Schalter einstellen.
Mit „MQTT_CLIENT_ID“ könnt Ihr noch den Namen bzw. die ID des MQTT-Clienten festlegen.
Normalmente puedes dejar todos estos valores como están.
Mit diesen und den Optionen im nächsten Abschnitt könnt Ihr die Kriterien für die Sommer-/Winter-Zeitumstellung festlegen. Dabei legen die Parameter die mit „TIME_DST…“ starten fest unter welchen Bedingungen von Standardzeit(Winterzeit) auf Sommerzeit umgestellt wird. Die Parameter die mit „TIME_STD_…“ beginnen sind dagegen für den umgekehrten Fall, also die Umstellung von Sommer- auf Winterzeit ausschlaggebend. Die Parameter sind ansonsten für beide Bereiche identisch: „…HEMISPHERE“ legt fest auf welchem Teil der Erdkugel Ihr euch befindet. Diese Option wird eigentlich nicht für die Zeitumstellung sondern eher für die Berechnung des korrekten Sonnen- Auf- und Untergangs-Zeitpunkts benötigt.
Nun geht es an die Parameter für die Zeitumstellung. Da die Zeitumstellung (zumindest in Deutschland) von Winter- auf Sommerzeit immer am letzten Sonntag im März um 02:00 Uhr stattfindet müsst Ihr den Paramater „TIME_DST_WEEK“ auf „Last“, den Parameter „TIME_DST_DAY“ auf „Sun“(=Sunday), den Parameter „TIME_DST_MONTH“ auf „Mar“ (=March) und den Parameter „TIME_DST_HOUR“ auf zwei stellen. Mit dem Parameter „TIME_DST_OFFSET“ gebt Ihr dann noch an welche Zeitverschiebung in diesem Fall eintritt. Dabei müsst Ihr auch die Abweichung durch die Zeitzone mit anegeben. In Fall Deutschlands, dass die Zeitzone UTC+1 hat also +60 Minuten hat, gilt hier für die Sommerzeit +120 Minuten.
El cambio de hora de verano a invierno (de nuevo en Alemania) siempre tiene lugar el último domingo de octubre a las 03:00.
Deshalb müsst Ihr den Paramater „TIME_STD_WEEK“ auf „Last“, den Parameter „TIME_STD_DAY“ auf „Sun“(=Sunday), den Parameter „TIME_STD_MONTH“ auf „Oct“ (=October) und den Parameter „TIME_STD_HOUR“ auf drei stellen. Mit dem Parameter „TIME_STD_OFFSET“ gebt Ihr dann noch an welche Zeitverschiebung in diesem Fall eintritt. Dabei müsst Ihr auch die Abweichung durch die Zeitzone mit anegeben. In Fall Deutschlands, dass die Zeitzone UTC+1 hat also +60 Minuten hat, gilt hier für die Standardzeit(=Winterzeit) somit +60 Minuten.
Mit den Optionen „LATITUDE“ und „LONGITUDE“ könnt Ihr die Position des Tasmota-Devices festlegen. Dies ist notwendig um die korrekte Sonnen-Auf- und Untergangs-Zeit zu berechnen. Solltet Ihr diese Funktion nutzen wollen ist es wichtig hier die korrekten Daten anzugeben. Wie Ihr die Position eines beliebigen Ortes herausfinden könnt ist im Artikel Encuentra la latitud y longitud de cualquier ubicación con GoogleMaps descrito. Asegúrese de especificar la posición (como se muestra) en el sistema decimal. Cómo hacer esto también se describe en el artículo mencionado.
„APP_TIMEZONE“ definiert die Zeitzone.
„APP_LEDSTATE“ definiert die Funktion der (in vielen Sonoff-Devices) integrierten LED’s
„APP_PULSETIME“ definiert die Pulsdauer in Form von vielfachen von 0,1 Sekunden. Ein Wert von 5 entspricht hier also 0,5 Sekunden bzw. 500 Millisekunden. Ein Wert von 0 deaktiviert diese Funktion.
„APP_POWERON_STATE“ definiert den Zustand der konfigurierten Relays nach dem Einschalten. Hierbei sind folgende Einstellungen verfügbar: POWER_ALL_OFF, POWER_ALL_ON, POWER_ALL_SAVED_TOGGLE, POWER_ALL_SAVED, POWER_ALL_ALWAYS_ON, POWER_ALL_OFF_PULSETIME_ON
„APP_BLINKTIME“ definiert die Impulslänge eines „blinkenden“ Relais
„APP_SLEEP“ definiert eine Zeitdauer zwischen 1 und 250 Millisekunden in denen der ESP8266 in den Schlafmodus versetzt wird. Auf diesem Weg lässt sich etwas Energie sparen. Natürlich reagiert der ESP8266 im worst case so erst 250 Millisekunden später.
„KEY_DEBOUNCE_TIME“ definiert die Entprellzeit eines angeschlossenen Tasters. Ein Wert von 50 gibt also an, dass nach einem erkannten Tastendruck der betreffende Taster für 50 Millisekunden ignoriert wird.
„KEY_HOLD_TIME“ definiert die Zeitdauer die ein Taster gedrückt werden muss bis dies als dauerhaft gedrückter Taster erkannt wird. Dabei wird der angegeben Wert wieder mit 0,1 Sekunden multipliziert. Ein Wert von 40 entspricht hier also einer Zeitdauer von 4 Sekunden. Erst nach 4 Sekunden wird also das „Taster ist gedrückt“-Event ausgelöst.
„SWITCH_DEBOUNCE_TIME“ definiert die Entprellzeit eines angeschlossenen Schalters. Ein Wert von 50 gibt also an, dass nach einem erkannten Schalter-positionswechsels der betreffende Schalter für 50 Millisekunden ignoriert wird.
„SWITCH_MODE“ definiert das Verhalten des konfigurierten Relais in Bezug auf einen angeschlossenen Schalter. Dabei sind folgende Optionen möglich:
PALANCA; SEGUIR, SEGUIR_INV, BOTÓN, PUSHBUTTON_INV, PUSHBUTTONHOLD, PUSHBUTTONHOLD_INV, PUSHBUTTON_TOGGLE
„WS2812_LEDS“ definiert die Anzahl der angeschlossenen WS2812 LED’s.
„TEMP_CONVERSION“ aktiviert (=1) oder deaktiviert (=0) die konvertierung der Temperatur in die Einheit Fahrenheit.
„TEMP_RESOLUTION“ definiert mit welcher Auflösung die Temperatur angezeigt wird. Dabei kann man zwischen keiner und bis zu drei Stellen hinterm Komma wählen. ACHTUNG: Die jeweilige Auflösung muss natürlich auch vom angeschlossenen Sensor geliefert werden. Sonst ist dieser vermeintlich exaktere Wert eher geraten als exakt.
„HUMIDITY_RESOLUTION“ definiert mit welcher Auflösung die Luftfeuchtigkeit angezeigt wird. Dabei kann man zwischen keiner und bis zu drei Stellen hinterm Komma wählen. ACHTUNG: Die jeweilige Auflösung muss natürlich auch vom angeschlossenen Sensor geliefert werden. Sonst ist dieser vermeintlich exaktere Wert eher geraten als exakt.
„PRESSURE_RESOLUTION“ definiert mit welcher Auflösung der Luftdruck angezeigt wird. Dabei kann man zwischen keiner und bis zu drei Stellen hinterm Komma wählen. ACHTUNG: Die jeweilige Auflösung muss natürlich auch vom angeschlossenen Sensor geliefert werden. Sonst ist dieser vermeintlich exaktere Wert eher geraten als exakt.
„ENERGY_RESOLUTION“ definiert mit welcher Auflösung der Energieverbrauch angezeigt wird. Dabei kann man zwischen keiner und bis zu fünf Stellen hinterm Komma wählen. ACHTUNG: Die jeweilige Auflösung muss natürlich auch vom angeschlossenen Sensor geliefert werden. Sonst ist dieser vermeintlich exaktere Wert eher geraten als exakt.
Mit diesen Optionen lässt sich das verhalten in dem Fall, dass für das Tasmota-Device noch keine gültigen WLAN-Zugangsdaten hinterlegt sind, festlegen. Ist „USE_WPS“ aktiviert(also die beiden // vor dem entsprechendem Eintrag entfernt) habt Ihr die Möglichkeit Euer Tasmota-Device mittels der WPS-Funktion mit Eurem Router zu verbinden. Ist „USE_SMARTCONFIG“ aktiviert könnt Ihr die Zugangsdaten mit der Aplicación de Android ESP8266 Configuración inteligente configurar.
Die Option „USE_RF_FLASH“ ermöglicht, sofern aktiviert auf einer SONOFF 433Mhz RF Bridge die programmierung des angeschlossenen Co-Prozessors über die Weboberfläche der Tasmota-Firmware. Näheres dazu könnt Ihr auch im Artikel Tasmota: chip RF Flash Sonoff RF Bridge (EFM8BB1) con firmware portugués encontrar.
Iniciar el proceso de programación
Después de haber adaptado o configurado el firmware según sus deseos, ahora es el momento de transferirlo al ESP8266 de su dispositivo Tasmota. En este ejemplo, una placa adaptadora ESP8266 normal del WEMOS D1-Mini está programada con el firmware Tasmota.
Diviértete con el proyecto.
Espero que todo te haya funcionado como se describe. Si no es así, o si tiene alguna pregunta o sugerencia, hágamelo saber en los comentarios. Si es necesario, lo añadiré al artículo.
Las ideas para nuevos proyectos siempre son bienvenidas. 🙂
PS Muchos de estos proyectos, especialmente los proyectos de hardware, cuestan mucho tiempo y dinero. Por supuesto que hago esto porque lo disfruto, pero si crees que es genial que comparta la información contigo, me encantaría hacer una pequeña donación al fondo del café. 🙂
En la versión actual del firmware de tasmota de github, la carpeta sonoff descrita anteriormente ya no existe. La compilación no funciona. ¿Qué estoy haciendo mal?
Atentamente
Fabian
Hola Fabián,
tienes razón, la estructura de carpetas ha cambiado un poco.
Pruebe la carpeta "Tasmota" en: https://github.com/arendst/Tasmota/tree/development/tasmota
Si abre el archivo "Tasmota.ino", debería poder compilar el firmware. 🙂
Atentamente
(también) Fabián 😀