Herramientas de usuario

Herramientas del sitio


guias:tasmota

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
guias:tasmota [2020/08/15 15:54] Rafa Coutoguias:tasmota [2021/04/16 20:41] (actual) – editor externo 127.0.0.1
Línea 3: Línea 3:
 [[https://tasmota.github.io/docs/ |Tasmota]] é un firmware moi versátil para placas con ESP8266 que integra [[https://templates.blakadder.com/  |moitos dispositivos]] para control automatizado. O seu éxito vén dado polo baixo prezo dos microcontroladores e a popularización do dispositivo orixinal //Sonoff//. [[https://tasmota.github.io/docs/ |Tasmota]] é un firmware moi versátil para placas con ESP8266 que integra [[https://templates.blakadder.com/  |moitos dispositivos]] para control automatizado. O seu éxito vén dado polo baixo prezo dos microcontroladores e a popularización do dispositivo orixinal //Sonoff//.
  
-Nesta entrada explicamos como configurar o **firmware e servidor para establecer unha canle segura** como configurar correctamente o dispositivo para que os **temporizadores funcionen coa túa zona horaria**, mesmo se hai cambios de hora de verán (DST).+Nesta entrada explicamos como configurar o **firmware e servidor para establecer unha canle segura**como configurar correctamente o dispositivo para que os **temporizadores funcionen coa túa zona horaria**, mesmo se hai cambios de hora de verán (DST) e como cambiar o comportamento do botón //toggle// para que funcione coma un **pulsador temporizado**. 
 + 
 +{{ :guias:tasmota:wemos-tasmota.jpg?400 | Wemos D1-mini con shield de relé funcionando con firmware Tasmota}}
  
 ===== Conexión segura con MQTT ===== ===== Conexión segura con MQTT =====
  
-É moi **importante que se conectas o teu dispositivo a un servidor en Internet sexa cunha conexión sexa segura**. Isto non é normalmente necesario se estás a facer probas sen sair da túa rede segura (ollo, a túa wifi caseira podería non selo), pero moita xente pensa que a seguridade é unha opción e deixan os sistemas desprotexidos en contornas de produción.+É moi **importante que se conectas o teu dispositivo a un servidor en Internet sexa cunha conexión segura**. Isto non é normalmente necesario se estás a facer probas sen sair da túa rede segura (ollo, a túa wifi caseira podería non selo), pero moita xente pensa que a seguridade é unha opción e deixan os sistemas desprotexidos en contornas de produción.
  
 Deixar a conexión desprotexida implica que calquera pode examinar o tráfico de rede ou, simplemente ofrecendo un acceso WiFi máis forte ou cercano, pode tomar o control da túa instalación. Deixas as chaves da túa casa na porta, día e noite, cando estás e non estás? Deixar a conexión desprotexida implica que calquera pode examinar o tráfico de rede ou, simplemente ofrecendo un acceso WiFi máis forte ou cercano, pode tomar o control da túa instalación. Deixas as chaves da túa casa na porta, día e noite, cando estás e non estás?
Línea 13: Línea 15:
 ==== Firmware Tasmota ==== ==== Firmware Tasmota ====
  
-Os binarios precompilados de firmware Tasmota non veñen con soporte TLS, polo que é necesario recompilar o firmware a partir do código fonte.+Os binarios precompilados de firmware Tasmota non veñen con soporte TLS, polo que é necesario recompilar o firmware a partir do código fonte. Os pasos a seguir en //GNU/Linux// son:
  
-Os pasos seguir en //GNU/Linux// son:+   - Instalar Platformio Core 
 +  - Descargar o código fonte 
 +  - Activar opción TLS 
 +  - Compilar e cargar o firmware na placa
  
-1. Descargar o código fonte e descomprir nun directorio do teu sistema+<code> 
-2Instalar platformio Core +# paso 1. Instalar Platformio Core 
-3Activar opción TLS +cd /tmp 
-4Compilar e cargar o firmware na placa+wget https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py 
 +python3 get-platformio.py 
 +wget https://raw.githubusercontent.com/platformio/platformio-core/master/scripts/99-platformio-udev.rules 
 +sudo cp 99-platformio-udev.rules /etc/udev/rules.d/ 
 +sudo udevadm control --reload-rules && sudo udevadm trigger 
 +sudo usermod --G dialout $USER && sudo usermod -a -G plugdev $USER 
 +# reinicia a túa sesión de usuario para que os permisos tomen efecto...
  
-(PorFacer)+# paso 2. Descargar o código fonte: 
 +cd /tmp 
 +wget https://github.com/arendst/Tasmota/archive/master.zip 
 +unzip master.zip && cd Tasmota-master 
 + 
 +# paso 3. Activar a opción TLS: 
 +sed -i 's///#define USE_MQTT_TLS/#define USE_MQTT_TLS/' tasmota/my_user_config.h 
 + 
 +# paso 4. Compilar e cargar o firmware (adapta --upload-port ao que apareza cando conectas a túa placa) 
 +pio run -e tasmota -t upload --upload-port=/dev/ttyUSB0 
 +</code>
  
 ==== Configuración de Mosquitto ==== ==== Configuración de Mosquitto ====
  
-Tasmota usa [[https://en.wikipedia.org/wiki/MQTT |MQTT como protocolo]] para comunicarse na rede como dispositivo a ser controlado. Unha instalación típica ten varios dispositivos conectados por rede TCP/IP a un servidor que executa un //broker// (intercambiador) de mensaxes [[https://www.hivemq.com/mqtt-essentials/ | MQTT]]. Un dos máis coñecidos é //Mosquitto// para o que explicamos como securizalo.+Tasmota usa [[https://en.wikipedia.org/wiki/MQTT|MQTT como protocolo]] para comunicarse na rede como dispositivo a ser controlado. Unha instalación típica ten varios dispositivos conectados por rede TCP/IP a un servidor que executa un //broker//  (intercambiador) de mensaxes [[https://www.hivemq.com/mqtt-essentials/|MQTT]]. Un dos máis coñecidos é //Mosquitto//  para o que explicamos como securizalo. 
 + 
 +<code> 
 +# mosquitto.conf 
 +port 8883 
 +keyfile /mosquitto/config/server.key 
 +certfile /mosquitto/config/server.crt 
 +cafile /mosquitto/config/ca.crt 
 +password_file /mosquitto/config/users.passwd 
 +</code> 
 + 
 +O porto 8883 é o porto estándar asignado pola IANA para o MQTT sobre TLS. 
 + 
 +Para **xenerar os ficheiros de certificados**  podes seguir os [[http://www.steves-internet-guide.com/mosquitto-tls/|pasos 1-7 desta guía de Mosquitto securizado]]. 
 + 
 +Os certificados para clientes non se usan en Tasmota polas restriccións de memoria o procesador e, para isto, usamos o **ficheiro de usuarios definido en //password_file//** . Para xenerar os usuarios podes seguir o [[http://www.steves-internet-guide.com/mqtt-username-password-example/|método 2 desta guía]]. 
 + 
 +O ficheiro de CA non é necesario en Tasmota (aínda que tamén sería posible engadilo en duro no fonte) porque dispón dun inxenioso método que simplifica a validación da conexión co servidor lexítimo. A primeira vez que conecta garda a sinatura do certificado do servidor e a comproba nas seguintes conexións. Se cambias de servidor podes executar a seguinte orde na consola de Tasmota para **borrar a sinatura e conectar por primeira vez co novo servidor**  para gardar a sinatura: 
 + 
 +<code> 
 +MqttFingerprint1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
 +</code> 
 + 
 +Podes atopar máis información en:
  
-(PorFacer)+  * [[https://tasmota.github.io/docs/TLS/|TLS Secured MQTT]] 
 +  * [[https://www.hivemq.com/blog/mqtt-security-fundamentals-tls-ssl/|TLS/SSL - MQTT Security Fundamentals]]
  
 ===== Hora local correcta cos cambios de hora (DST) ===== ===== Hora local correcta cos cambios de hora (DST) =====
  
-Para configurar a túa [[https://www.timeanddate.com/time/zone/spain/la-coruna |zona horaria local]] e que funcionen os temporizadores como se espera, dende a consola de Tasmota executar:+Para configurar a túa [[https://www.timeanddate.com/time/zone/spain/la-coruna|zona horaria local]] e que funcionen os temporizadores como se espera, dende a consola de Tasmota executar:
  
 <code> <code>
Línea 38: Línea 83:
     TimeSTD 0 0 10 1 3 60     TimeSTD 0 0 10 1 3 60
     Timezone 99     Timezone 99
-</code>     +</code> 
-     + 
-Que de acordo aos [[https://tasmota.github.io/docs/Commands/#management |comandos de Tasmota]] vén sendo que DST comeza no último domingo de marzo ás 2:00 con +120 minutos sobre UTC e que finaliza no último domingo de outubro ás 3:00 con +60 minutos sobre UTC. //Timezone 99// indica que queremos usar a zona horaria configurada con //TimeDST// e //TimeSTD//.+Que de acordo aos [[https://tasmota.github.io/docs/Commands/#management|comandos de Tasmota]] vén sendo que DST comeza no último domingo de marzo ás 2:00 con 120 minutos sobre UTC e que finaliza no último domingo de outubro ás 3:00 con 60 minutos sobre UTC. //Timezone 99//  indica que queremos usar a zona horaria configurada con //TimeDST//  e //TimeSTD//. 
 + 
 +Os campos para //TimeSTD//  e //TimeDST//  son:
  
-Os campos para //TimeSTD// e //TimeDST// son: 
   * Hemisferio (0=norte, 1=sur)   * Hemisferio (0=norte, 1=sur)
-  * Semana do mes para o cambio (0=última, 1=primeira, 2=segunda, ...)+  * Semana do mes para o cambio (0=última, 1=primeira, 2=segunda, )
   * Mes para o cambio (1..12 = xaneiro..decembro)   * Mes para o cambio (1..12 = xaneiro..decembro)
   * Día da semana para o cambio (1..7 = domingo..sábado)   * Día da semana para o cambio (1..7 = domingo..sábado)
   * Hora do cambio (0..23)   * Hora do cambio (0..23)
-  * Minutos de desprazamento con respecto a UTC (60..-60 = UTC+01:00..UTC-01:00)+  * Minutos de desprazamento con respecto a UTC (60..-60 = UTC 01:00..UTC-01:00)
  
-Agora podemos ver que a hora local correcta (//Local//) e cando se van producir os cambios de hora (//StartDST// e //EndDST//):+Agora podemos ver que a hora local correcta (//Local//) e cando se van producir os cambios de hora (//StartDST//  e //EndDST//):
  
 <code> <code>
     Status 7     Status 7
-    15:03:31 MQT: stat/tasmota_DE57D0/STATUS7 = +    15:03:31 MQT: stat/tasmota_DE57D0/STATUS7 =
       {       {
         "StatusTIM": {         "StatusTIM": {
Línea 65: Línea 111:
           "Sunset": "21:06"           "Sunset": "21:06"
         }         }
-      }    +      }
 </code> </code>
-    + 
 + 
 +===== Botón coma pulsador temporizado ===== 
 + 
 +Cos seguintes [[https://tasmota.github.io/docs/Commands/#control |comandos de consola]] cambiamos o comportamento de todos os relés para que cando se prema o botón //toggle// quede activo durante 4 segundos: 
 + 
 +<code> 
 +SwitchMode 13 
 +PulseTime 40 
 +</code> 
 + 
 +O parámetro de //SwitchMode// configura o comportamento segundo os seguintes valores: 
 + 
 +  * **13** = modo botón temporizado con lóxica de relé activo cando se pulsa o botón 
 +  * **14** = modo botón temporizado con lóxica de relé invertida cando se pulsa o botón 
 + 
 +e *PulseTime*: 
 + 
 +  * **1..111** = incremento en décimas de segundo (no exemplo, 40 decimas son 4 segundos) 
 +  * **112..64900** = incrementos en segundos quitando 100 ao valor (para 30 segundos sería o valor 130) 
 + 
 +Se usas varios relés podes configurar os modos e tempos poñendo o //GPIO// no que está o relé como primeiro parámetro. Para aplicar o exemplo a un relé no //GPIO 5//: 
 + 
 +<code> 
 +SwitchMode 5 13 
 +PulseTime 5 40 
 +</code> 
  
guias/tasmota.1597506843.txt.gz · Última modificación: 2021/04/16 20:38 (editor externo)