Raspberry Pi Zero 2 W – Expandiendo el Docker .NET detector de red local

Buenas , aprovechando el docker para detección de dispositivos en la red local le he añadido una nueva funcionalidad muy útil para dispositivos que no entregan el numero de pulsaciones como pueden ser los Remote Control de IKEA y otros

Os he dejado el docker aquí

Utilizaremos la versión 1.5 del docker , modificando el docker-compose.yaml

  mqtt_scanner:
    container_name: mqtt_scanner
    restart: unless-stopped
    image: antrivas/mqtt_scanner_pi:1.5
    volumes:
      - ${DOCKERDIR}/mqtt_scanner/config:/App/config
      - ${DOCKERDIR}/mqtt_scanner/logs:/App/logs
    environment:
      - TZ=${TZ}    
    networks:
      - traefik
      - default    

En /config encontraremos un nuevo fichero de configuración llamado topic.json , allí podremos poner todos los topics a los que nos queremos suscribir y configurar a nuestro gusto cada uno de los topics

[
  {
    "Topic": "zigbee2mqtt/ikea_mando_4",
    "Field": "action",
    "Action": "toggle",
    "NTiempo": 1000
  },
  {
    "Topic": "zigbee2mqtt/ikea_mando_1",
    "Field": "action",
    "Action": "toggle",
    "NTiempo": 1000
  },
  {
    "Topic": "zigbee2mqtt/ikea_mando_2",
    "Field": "action",
    "Action": "toggle",
    "NTiempo": 1000
  }
]

Una vez arrancado el docker podemos probarlo pulsando varias veces el dispositivo asociado a uno de los topics configurados , nos devolverá un mensaje al finalizar el timeout personalizado para cada uno de los topics , el topic enviado será el nombre del topic suscrito mas el sufijo “_pulsaciones” , enviando un json donde va el evento capturado y el numero de pulsaciones

En nuestro Home Assistant crearemos un par de sensores mqtt , y a partir de ahí podemos realizar todas aquellas automatizaciones que se nos ocurran

  - platform: "mqtt"
    state_topic: "zigbee2mqtt/ikea_mando_4_pulsaciones"
    icon: "mdi:gesture-tap-button"
    value_template: "{{ value_json.repeticiones }}"
    force_update: true
    name: "sensor_ikea_mando_4_pulsaciones"

  - platform: "mqtt"
    state_topic: "zigbee2mqtt/ikea_mando_4_pulsaciones"
    icon: "mdi:comment-flash"
    value_template: "{{ value_json.evento }}"
    force_update: true
    name: "sensor_ikea_mando_4_evento"

Este es un ejemplo de automatizaciones que distingue por evento y por numero de pulsaciones

- alias: pruebas mando ikea 4 repeticiones 2
  initial_state: 'on'
  trigger:
    - platform: state
      entity_id: sensor.sensor_ikea_mando_4_pulsaciones
  condition:
    - condition: state
      entity_id: sensor.sensor_ikea_mando_4_evento
      state: 'toggle'
    - condition: state
      entity_id: sensor.sensor_ikea_mando_4_pulsaciones
      state: '2'
  action:     
    - service: light.turn_off
      target:
        entity_id:
          - light.luz_estudio
          - light.tira_led_estudio
    - delay: 00:00:02 
    - service: light.turn_on
      target:
        entity_id:
          - light.luz_estudio
          - light.tira_led_estudio
    - delay: 00:00:02 

- alias: pruebas mando ikea 4 repeticiones 3
  initial_state: 'on'
  trigger:
    - platform: state
      entity_id: sensor.sensor_ikea_mando_4_pulsaciones
  condition:
    - condition: state
      entity_id: sensor.sensor_ikea_mando_4_evento
      state: 'toggle'
    - condition: state
      entity_id: sensor.sensor_ikea_mando_4_pulsaciones
      state: '3'
  action:     
    - service: light.turn_off
      target:
        entity_id:
          - light.luz_estudio
          - light.tira_led_estudio


- alias: pruebas mando ikea 4 repeticiones 4
  initial_state: 'on'
  trigger:
    - platform: state
      entity_id: sensor.sensor_ikea_mando_4_pulsaciones
  condition:
    - condition: state
      entity_id: sensor.sensor_ikea_mando_4_evento
      state: 'toggle'
    - condition: state
      entity_id: sensor.sensor_ikea_mando_4_pulsaciones
      state: '4'
  action:     
    - service: light.turn_on
      target:
        entity_id:
          - light.luz_estudio
          - light.tira_led_estudio

Y con esto y un bizcocho …………………

Raspberry Pi Zero 2 W – Creación de un Docker en .NET para detección en la red local