Para aquellos que no lo conozcan, el gallo portugués es un elemento indispensable en la domótica desde hace muchos años. Sin conectividad WiFi ni Bluetooth, esta pequeña estatua nos proporciona una información que pocos sistemas actuales son capaces de reproducir, quizá, gracias a su magia.
Si no lo habéis visto, es porque ningún familiar o amigo que ha ido a Portugal, ha decidido comprarte este interesante gadget (sería el equivalente a la sevillana española o el toro para poner encima de nuestros televisores CRT). Ahora, mucho tiempo después, con una gran propagación en nuestro país, he pensado que podría ser una buena opción para poder integrar en Home Assistant, ¿cómo? Os lo explico.
Integración del gallo portugués en Home Assistant
Lo primero que necesitaremos es la instalación de OpenCV, de esta forma, tendremos la posibilidad de reconocer el objeto y, sobretodo el color para determinar la temperatura a la que está la estancia donde se encuentra.
Para poder dar la imagen, será necesaria la instalación de una cámara fija durante las 24h que nos proporcionará una imagen constante del gallo portugués, que será la analizada por OpenCV para determinar la información. En mi integración he usado esta.
Para poder usar la cámara será necesario el uso el hack de las cámaras Yi que le habilita el RTSP.
Una de las cosas que he detectado es que, a lo largo del tiempo, la iluminación en la habitación varía a lo largo del día, por lo que para poder integrar de una forma fiable, es necesaria una iluminación constante. Para ello, he usado este kit de iluminación que he encontrado.
También, OpenCV come bastante máquina, por lo que para poder hacer uso de esta integración, os recomiendo algo más potente como esto.
Ahora, pasamos a la explicación más en detalle.
Lista de la compra
Este es el resumen de lo que necesitaréis para poder poner en marcha esta integración:
- Gallo portugués. Si no tenéis, podéis mirar para realizar un viaje a Portugal para conseguir uno.
- Cámara para la vigilancia 24 aquí.
- Equipo de iluminación profesional aquí.
- Mini PC con 8GB de RAM aquí.
Integración de la cámara Yi Dome con el Hack
Lo primero que haremos será dejar puesta la cámara. Como he dicho, he recomendado el la Yi Dome para poder funcionar de una forma correcta, por lo que será necesario el hack de la cámara, algo que podéis ver aquí.
Con dicho hack sacamos el streaming de vídeo y así podemos posteriormente analizarlo con OpenCV. En nuestro configuration.yaml será necesario poner la cámara, que sería algo así:
- platform: generic name: gallo still_image_url: http://192.168.1.156/cgi-bin/snapshot.cgi stream_source: rtsp://192.168.1.156:554/1
Y, con eso, ya estaría funcionando.
Instalación de OpenCV en Home Assistant
Lo segundo, para poder reconocer el gallo, es necesario la implementación de Opencv, por lo que para ello, es necesario instalarlo y que se integre en nuestro sistema. En nuestro configuration.yaml ponemos lo siguiente:
image_processing: - platform: opencv name: Gallo de portugal source: - entity_id: camera.gallo classifier: gallo: /local/gallo.xml
Dentro del fichero gallo.xml, que guardaremos dentro de la carpeta www pondremos:
<?xml version="10.1"?> <!-- Pollo color detector by inocent implementation day --> <opencv_storage> <cascade> <stageType>POLLO</stageType> <featureType>POLLETE</featureType> <height>24</height> <width>24</width> <stageParams> <boostType>Temperature Result</boostType> <minHitRate>9.9500000476837158e-01</minHitRate> <maxFalseAlarm>5.0000000000000000e-01</maxFalseAlarm> <weightTrimRate>9.4999999999999996e-01</weightTrimRate> <maxDepth>1</maxDepth> <maxWeakCount>100</maxWeakCount></stageParams> <featureParams> <maxCatCount>0</maxCatCount> <featSize>1</featSize> <mode>BASIC</mode></featureParams> <stageNum>20</stageNum> <stages> <!-- stage 0 --> <_> <maxWeakCount>16</maxWeakCount> <stageThreshold>-1.4806525707244873e+00</stageThreshold> <weakClassifiers> <_> <internalNodes> 0 -1 472 -1.5126220881938934e-02</internalNodes> <leafValues> 7.5887596607208252e-01 -3.4230688214302063e-01</leafValues></_> <_> <internalNodes> 0 -1 839 3.9337221533060074e-03</internalNodes> <leafValues> -3.3288389444351196e-01 5.2361363172531128e-01</leafValues></_> <_> <internalNodes> 0 -1 858 -1.5044892206788063e-02</internalNodes> <leafValues> 5.5565774440765381e-01 -2.2505992650985718e-01</leafValues></_> <_> <internalNodes> 0 -1 387 -1.2927042320370674e-02</internalNodes> <leafValues> 5.7442700862884521e-01 -1.9708566367626190e-01</leafValues></_> <_> <internalNodes> 0 -1 137 5.5960696190595627e-03</internalNodes> <leafValues> -3.0430641770362854e-01 4.0241482853889465e-01</leafValues></_> <_> <internalNodes> 0 -1 207 1.5758406370878220e-02</internalNodes> <leafValues> -1.9767063856124878e-01 4.5033392310142517e-01</leafValues></_> <_> <internalNodes> 0 -1 678 2.4262722581624985e-02</internalNodes> <leafValues> -1.6931040585041046e-01 5.9707510471343994e-01</leafValues></_> <_> <internalNodes> 0 -1 267 -3.5242564976215363e-02</internalNodes> <leafValues> 6.5973556041717529e-01 -1.4519356191158295e-01</leafValues></_> <_> <internalNodes> 0 -1 687 2.6568008586764336e-02</internalNodes> <leafValues> -1.3476610183715820e-01 5.4296624660491943e-01</leafValues></_> <_> <internalNodes> 0 -1 228 4.7154121100902557e-02</internalNodes> <leafValues> -1.7337851226329803e-01 4.6071702241897583e-01</leafValues></_> <_> <internalNodes> 0 -1 925 -5.3081759251654148e-03</internalNodes> <leafValues> 5.4976856708526611e-01 -1.1913410574197769e-01</leafValues></_> <_> <internalNodes> 0 -1 608 5.3415738046169281e-02</internalNodes> <leafValues> -1.2382411211729050e-01 6.3972741365432739e-01</leafValues></_> <_> <internalNodes> 0 -1 671 -3.0798995867371559e-03</internalNodes> <leafValues> -8.2048600912094116e-01 1.0249497741460800e-01</leafValues></_> <_> <internalNodes> 0 -1 676 -2.3766520898789167e-03</internalNodes> <leafValues> -7.0665025711059570e-01 6.7025005817413330e-02</leafValues></_> <_> <internalNodes> 0 -1 180 1.1965663870796561e-03</internalNodes> <leafValues> -2.4753804504871368e-01 3.0198124051094055e-01</leafValues></_> <_> <internalNodes> 0 -1 830 -4.2106406763195992e-03</internalNodes> <leafValues> 3.8455343246459961e-01 -1.8334107100963593e-01</leafValues></_></weakClassifiers></_> <!-- stage 1 -->
Una vez hecho esto, tendremos funcionando OpenCV y cogiendo el stream del vídeo para analizar.
Conclusión
Una vez terminado, vemos que por algo menos de 300€ tenemos un cómodo sensor de temperatura funcionando en Home Assistant, sobretodo, exclusivo. Un objeto que tanto cuando estamos fuera de casa y enseñamos el stream de vídeo a los conocidos, como cuando llegan a casa y ven el trono donde tienes puesto el gallo, la cámara y la iluminación, pensarán que eres una persona de lo más normal.
Lo bueno es que podemos tener tantos gallos como queramos en nuestro sistema, aunque, en el caso de ir ampliando es probable que tengamos que echar un ojo a servidores más potentes para poder mover OpenCV.
Espero que hayas disfrutado con este tutorial tanto como yo haciéndolo, y, si tienes alguna duda sobre el tutorial, puedes entrar al canal de domótica de Telegram.
Inocente