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 ………….