En esta entrada os explicare como crear un Docker para tener un escáner que nos indique que dispositivos estan activos en nuestra red local , el docker esta realizado en .NET y subido a docker hub , lo podéis encontrar aqui

Es una maravilla poder trabajar con Visual Studio e integrar las aplicaciones de Windows tan fácilmente en Linux vía docker , pero hay que hay que tener muy en cuenta a la hora de crear el docker el tipo de arquitectura en la que correrá el docker , aquí dejo los dockerfile para x86 y arm
Dockerfile para x86
FROM mcr.microsoft.com/dotnet/runtime:3.1 # Change timezone to local time ENV TZ=Europe/Madrid RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone COPY bin/Release/netcoreapp3.1/publish/ App/ WORKDIR /App ENTRYPOINT ["dotnet", "MQTT_Scanner.dll"]
Dockerfile para arm
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster-arm32v7 # Change timezone to local time ENV TZ=Europe/Madrid RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone COPY bin/Release/netcoreapp3.1/publish/ App/ WORKDIR /App ENTRYPOINT ["dotnet", "MQTT_Scanner.dll"]
Sin mas añadiremos en docker-compose.yaml el contenedor
mqtt_scanner:
container_name: mqtt_scanner
restart: unless-stopped
image: antrivas/mqtt_scanner_pi:1.4
volumes:
- ${DOCKERDIR}/mqtt_scanner/config:/App/config
- ${DOCKERDIR}/mqtt_scanner/logs:/App/logs
environment:
- TZ=${TZ}
networks:
- traefik
- default Tras arrancarlo veremos como empieza a escanear nuestra red local

Una vez arrancado veremos la carpeta /config , allí nos encontraremos dos archivos de configuración que modificaremos según nuestras necesidades
configuracion.json
{
"Intentos": 3,
"Tiempo_Espera": 800,
"IP_Inicial": "192.168.1.1",
"IP_Final": "192.168.1.255",
"Modo": 0,
"Payload": "MQTT_Scanner/IP/",
"Servidor_MQTT": "192.168.1.XXX",
"Puerto_MQTT": "1883",
"Usuario_MQTT": "xxxxxxxxxx",
"Contraseña_MQTT": "yyyyyyyyyyy"
}
En el definiremos los datos de conexión al servidor mqtt y nuestras preferencias a la hora de hacer el escaneo de nuestra red local , existiendo tres modos de funcionamiento :
- Modo 0 : Secuencial de IP_Inicial a IP_Final
- Modo 1 : Cada 32 ip’s interrogara a las definidas en favoritos.json
- Modo 2 : Solamente las que estén definidas en favoritos.json
favoritos.json
[
{
"IP": "192.168.1.24",
"Nombre": "Antonio"
},
{
"IP": "192.168.1.28",
"Nombre": "Oriol"
},
{
"IP": "192.168.1.21",
"Nombre": "Tere"
}
]
Aquí definiremos en que direcciones IP queremos hacer mas hincapié y su etiqueta

Para ser un docker corriendo en NET Core la verdad es que me he quedado sorprendido de que solo consuma 8MB de memoria RAM y prácticamente 0% de CPU , una maravilla en cuanto a recursos

Ahora lo integraremos en Home Assistant creando un sensor MQTT para poder usarlo en todas nuestras automatizaciones
- platform: mqtt
state_topic: 'MQTT_Scanner/IP/192.168.1.24/status'
name: 'tracker_ip_antonio'
payload_on: "1"
payload_off: "0"
device_class: occupancy Y con esto y un bizcocho ………….