Ultima entrada

  • Sonoff S26 Wifi vitaminado para control Router e internet

    Después de probar a controlar el router con un Sonoff S26 versión zigbee una vez cada dos semanas mas o menos se quedaba sin comunicación y no había forma de volver a controlarlo hasta reiniciar el sonoff , volví a rescatar del cajón de los chismes el Sonoff S26 wifi que tenia guardado y hacer un nuevo intento.

    Lo primero será crear un firmware personalizado con la parte del código para el ping , ya que esta parte del código en el firmware habitual no viene implementada.

    Para ello usaremos de nuevo el compilador en linea de https://github.com/benzino77/tasmocompiler

    Cargaremos todo el entorno de desarrollo.

    Descargamos el codigo

    Lo actualizamos a la ultima versión

    Aprovechamos para poner las credenciales del wifi para que directamente se conecte a la wifi primaria

    Aquí marcaremos las características que deseemos , en mi caso con estas cuatro es mas que suficiente

    Añadiremos los módulos que queremos usar en los parámetros personalizados

    #define USE_PING
    #define USE_TELEGRAM

    Definimos la versión que queremos y el idioma del paquete de salida

    Empezara a descargar todos los ficheros que necesite

    Una vez descargados empezara a compilar todo en le VPS

    Una vez compilado nos ofrece la posibilidad de descargarlo directamente el BIN , y también el binario comprimido

    Aquí tenéis ambos ficheros , tanto el comprimido como sin comprimir

    Como no cabia por espacio el firmware tuve que abrir el enchufe y soldarle cuatro cables para pasar via serie el firmware tal como explique aquí ( https://rivas.cloud/2020/05/15/enchufe-inteligente-reset-router/ )

    Para ello usaremos como siempre tasmotizer , arrancando el modulo con el pulsador del enchufe pulsado para que entre en modo programación

    Una vez arrancado lo primero será aplicar la plantilla para el S26 en Configuración / Configuración extra

    {"NAME":"Sonoff S26","GPIO":[17,255,255,255,0,0,0,0,21,56,0,0,0],"FLAG":0,"BASE":8}

    También habilitamos la parte de MQTT

    Una vez probamos accedemos a la consola para insertar nuestra regla que será la madre del cordero

    Así ha quedado la regla que contralara el funcionamiento del enchufe , al final de la entrada la explicaremos poco a poco

    Añadimos esta regla en la zona de ingresar comando

    Rule1
     ON System#Boot DO Backlog Power1 1; Delay 3000; Publish stat/%topic%/rules "Enchufe a ON al arrancar" ENDON
     ON Time#Minute|10 DO Backlog Ping4 www.google.com; Publish stat/%topic%/rules "Ping a www.google.com" ENDON
     ON Ping#Status=0 DO Backlog Publish stat/%topic%/rules "Sin conexión a Internet, enchufe a OFF"; Delay 100; Power1 0;  ENDON
     ON Power1#State=0 DO Backlog Delay 100; Power1 1; Delay 3000; Publish stat/%topic%/rules "Enchufe a OFF y puesto a ON después de 10 segundos" ENDON
     ON Time#Minute=60 DO Backlog Power1 1; Publish stat/%topic%/rules "Salida encendida cada hora" ENDON
     ON Time#Minute=359 DO Backlog Power1 1; Publish stat/%topic%/rules "Reinicio del modulo en 5 segundos"; Delay 100; Restart 1 ENDON

    la activamos con

    rule1 1

    y si la queremos eliminar introducimos este comando

    rule1 "

    Una vez arrancada veremos como empieza a hacer pings cada diez minutos

    Tal cual ya funcionaria de forma totalmente autónoma , pero si queremos añadirle algo mas de chicha lo integraremos en nuestro Home Assistant.

    Lo integramos como un enchufe mqtt

        - unique_id: tasmota_switch_enchufe_router
          name: enchufe_router
          state_topic: "stat/tasmota_9C2CEA/RESULT"  
          value_template: "{{ value_json.POWER }}"
          command_topic: "cmnd/tasmota_9C2CEA/POWER"
          payload_on: "ON"
          payload_off: "OFF"
          availability_topic: "tele/tasmota_9C2CEA/LWT"
          payload_available: "Online"
          payload_not_available: "Offline"
          # retain: true
          retain: false
          qos: 0    
          optimistic: false 

    Lo ponemos algo mas chulo en customize.yaml

    switch.enchufe_router:
      friendly_name: Enchufe router
      # icon: mdi:power-socket-eu
      icon: 'bha:open-wrt'

    Y añadimos algunas automatizaciones :

    • Hacemos que nos envié cualquier activación de la reglas por Telegram
    • Hacemos que nos envié el cambio a ON de la salida del enchufe por Telegram
    • Hacemos que nos envié el cambio a OFF de la salida del enchufe por Telegram

    #################################################
    # ENCHUFE S26 ROUTER
    #################################################
    
    - alias: "Enviar mensaje por Telegram cuando cambie el topic MQTT del enchufe del router"
      id: "Enviar mensaje por Telegram cuando cambie el topic MQTT del enchufe del router"  
      trigger:
        - platform: mqtt
          topic: "stat/tasmota_9C2CEA/rules"
      action:
        - service: notify.notif_telegram_bot
          data:
            message: "*Enchufe router* en reglas : {{ trigger.payload }}"
            
    
    - alias: "Enviar mensaje por Telegram cuando cambie enchufe del router a ON"
      id: "Enviar mensaje por Telegram cuando cambie enchufe del router a ON"
      trigger:
        - platform: state
          entity_id: switch.enchufe_router
          to: "on"
      action:
        - service: notify.notif_telegram_bot
          data:
            message: "Enchufe router a : *ON*"
        
        - delay: 00:05:00        
    
        - service: notify.notif_telegram_bot
          data:
            message: "Enchufe router a : *ON* hace cinco minutos"
    
    
    - alias: "Enviar mensaje por Telegram cuando cambie enchufe del router a OFF"
      id: "Enviar mensaje por Telegram cuando cambie enchufe del router a OFF"
      trigger:
        - platform: state
          entity_id: switch.enchufe_router
          to: "off"
      action:
        - service: notify.notif_telegram_bot
          data:
            message: "Enchufe router a : *OFF*"        
            
        - delay: 00:05:00        
    
        - service: notify.notif_telegram_bot
          data:
            message: "Enchufe router a : *OFF* hace cinco minutos"

    De esta manera tendríamos unas trazas del funcionamiento en nuestro Telegram

    La regla Rule1 define una serie de acciones que se ejecutan en respuesta a diferentes eventos. A continuación, te explico cada parte de la regla en detalle:

    ON System#Boot DO Backlog Power1 1; Delay 3000; Publish stat/%topic%/rules "Enchufe a ON al arrancar" ENDON

    • Evento: System#Boot se activa cuando el dispositivo se inicia o reinicia.
    • Acciones:
      • Backlog Power1 1: Enciende el relé o salida Power1 (enchufe) inmediatamente después del arranque.
      • Delay 3000: Espera 300 segundos antes de continuar con la siguiente acción.
      • Publish stat/%topic%/rules "Enchufe a ON al arrancar": Publica un mensaje MQTT en el tópico stat/%topic%/rules con el mensaje “Enchufe a ON al arrancar”. 
    ON Time#Minute|10 DO Backlog Ping4 www.google.com; Publish stat/%topic%/rules "Ping a www.google.com" ENDON

    • Evento: Time#Minute|10 se activa cada 10 minutos.
    • Acciones:
      • Backlog Ping4 www.google.com: Realiza un ping a www.google.com para verificar la conectividad a Internet.
      • Publish stat/%topic%/rules "Ping a www.google.com": Publica un mensaje MQTT indicando que se ha realizado un ping a Google.
    ON Ping#Status=0 DO Backlog Publish stat/%topic%/rules "Sin conexión a Internet, enchufe a OFF"; Delay 100; Power1 0; ENDON

    • Evento: Ping#Status=0 se activa cuando el ping falla, es decir, cuando no hay conexión a Internet.
    • Acciones:
      • Backlog Publish stat/%topic%/rules "Sin conexión a Internet, enchufe a OFF": Publica un mensaje MQTT indicando que no hay conexión a Internet y que el enchufe se apagará.
      • Delay 100: Espera 10 segundos antes de continuar.
      • Power1 0: Apaga el relé o salida Power1 (enchufe).
    ON Power1#State=0 DO Backlog Delay 100; Power1 1; Delay 3000; Publish stat/%topic%/rules "Enchufe a OFF y puesto a ON después de 10 segundos" ENDON

    • Evento: Power1#State=0 se activa cuando el relé Power1 se apaga.
    • Acciones:
      • Backlog Delay 100: Espera 10 segundos.
      • Power1 1: Enciende el relé Power1 nuevamente.
      • Delay 3000: Espera 300 segundos.
      • Publish stat/%topic%/rules "Enchufe a OFF y puesto a ON después de 10 segundos": Publica un mensaje MQTT indicando que el enchufe se apagó y se volvió a encender después de 10 segundos.
    ON Time#Minute=45 DO Backlog Power1 1; Publish stat/%topic%/rules "Salida encendida cada hora" ENDON

    • Evento: Time#Minute=45 se activa cada hora (cuando los minutos son 45).
    • Acciones:
      • Backlog Power1 1: Enciende el relé Power1.
      • Publish stat/%topic%/rules "Salida encendida cada hora": Publica un mensaje MQTT indicando que la salida se ha encendido cada hora.

    ON Time#Minute=359 DO Backlog Power1 1; Publish stat/%topic%/rules "Reinicio del modulo en 5 segundos"; Delay 100; Restart 1 ENDON

    • Evento: Time#Minute=359 se activa cuando los minutos son 359 después de la media noche (es decir, a las 5:59).
    • Acciones:
      • Backlog Power1 1: Enciende el relé Power1.
      • Publish stat/%topic%/rules "Reinicio del modulo en 5 segundos": Publica un mensaje MQTT indicando que el módulo se reiniciará en 5 segundos.
      • Delay 100: Espera 10 segundos.
      • Restart 1: Reinicia el módulo después de 1 segundo.

    En resumen :

    Esta regla Rule1 está diseñada para:

    1. Encender el enchufe al arrancar el dispositivo.
    2. Verificar la conectividad a Internet cada 10 minutos.
    3. Apagar el enchufe si no hay conexión a Internet.
    4. Volver a encender automáticamente si el enchufe si se apaga.
    5. Encender el enchufe cada hora.
    6. Reiniciar el módulo a una hora específica (a las 5:59 minutos).

    Cada acción está acompañada de un mensaje MQTT que informa sobre el estado y las acciones realizadas, lo que facilita el monitoreo y la depuración del dispositivo.

    Y con esto y un bizcocho …..

2 comentarios en «Ultima entrada»

  1. Hola Antonio!! LLegue a tu web buscando un tutorial de como instalar un ZBDongle-E en un QNAP TS 251D pero aun ando bastante liado jaja ojala me puedas dar una mano si tienes un tiempo libre!! Abrazo desde Argentina!!

    Responder

Deja un comentario