msgbartop
El síndrome del francotirador majara
msgbarbottom

25 jul 21 Codificación y envío de imágenes por MQTT, y uso de las mismas en WhatsApp

En fechas recientes he realizado un aprovechamiento interesante de las capacidades de comunicación que proporciona el servidor MQTT que tengo instalado para diversos temas: el envío de imágenes a través del mismo. en principio no es algo para lo que esté pensado un servidor MQTT, que actúa como servidor de mensajería, mediante la suscripción a una serie de topics, mediante los cuales clientes del servidor MQTT pueden intercambiar información en formato texto. Pero como al fin y al cabo, las imágenes no dejan de transmitirse como información codificada, es posible ponerse algo creativo para conseguir su procesamiento correcto.

En mi escenario, se trataba de compartir información proveniente de una webcam, para integrarla en mi sistema de domótica. En otras circunstancias, consumiría la información directamente de la webcam, pero el servidor de domótica y la webcam se encuentran en ubicaciones geográficas distintas, y la red de la webcam se encuentra tras un CG-NAT, por lo que no es posible establecer una publicación directa de puertos. Existe la posibilidad de establecer una VPN, pero esta opción me parecía bastante más interesante. La webcam se trata de una ESP32-CAM, con capacidad para publicar imágenes tanto en formato streaming como imágenes individuales, y acceder a ellas a través de una URL concreta. Mi idea era aprovechar la capacidad de Python de convertir imágenes a arrays de bytes, y volcar la información a un topic MQTT específico, para su posterior consumo. Consumo que en una primera instancia sería una publicación directa en Home Assistant, pero que posteriormente se vio complementado con una idea adicional interesante.

Esquema general del envío de imágenes por MQTT

Esquema general del envío de imágenes por MQTT

Codificación y envío de la imagen por MQTT

La primera parte de este proyecto consiste en el volcado de la información de la imagen en un topic MQTT. En mi caso, aprovechando que dispongo de un servidor Orange Pi Zero instalada en Forcarey para controlar diversos dispositivos Zigbee, creé un pequeño script en Python que toma una captura de imagen de la ESP32-CAM, la vuelca en un fichero temporal, y posteriormente la codifica como un bytearray, para enviarla a un topic MQTT concreto. El código sería el siguiente:

mport paho.mqtt.publish as publish
from PIL import Image
import requests
from io import BytesIO

MQTT_SERVER = “xxx.xxx.xxx.xxx” #Write Server IP Address, or your server FQDN
MQTT_PATH = “path” #Write your MQTT topic path

response = requests.get(“http://xxx.xxx.xxx.xxx/capture”) #Write your ESP32-CAM IP address
f=open(“/tmp/image_test.jpg”,”wb”)
f.write(response.content)
f.close

f=open(“/tmp/image_test.jpg”, “rb”)
fileContent = f.read()
byteArr = bytearray(fileContent)
publish.single(MQTT_PATH, byteArr, hostname=MQTT_SERVER)
f.close

Bastante sencillo. Para no andarme loco con servicios en linux, me limito a invocarlo desde /etc/crontab una vez cada 5 minutos, aunque se puede programar la frecuencia que se desee.

Captura y publicación en Home Assistant

Una vez tenemos nuestra imagen siendo volcada en el topic MQTT correspondiente, se trata de explotarla de manera adecuada. Y en este caso, Home Assistant nos lo pone bastante sencillo, ya que existe una integración de tipo cámara MQTT directamente incorporada a Home Assistant. Su uso es tan sencillo como indicar el topic del que tendremos que recoger la imagen:

camera:
– platform: mqtt
name: MQTT Cam
topic: MQTT_TOPIC_PATH

El resultado es el que sigue:

Captura de cámara MQTT en Home Assistant

Captura de cámara MQTT en Home Assistant

En mi caso, una topa del recibidor del piso de Forcarey.

Otros usos: sistema de alarma mediante correo electrónico con Node-Red

Pero estando ya este sistema montado, y merced a algunos detectores de apertura de puertas y ventanas Zigbee que ya tenía previamente instalados, es posible dar una vuelta de tuerca, y hacer algo más interesante: un sistema que detecte aperturas no deseadas de la puerta de la entrada, que tome varias imágenes, y las envíe por correo electrónico a un buzón previamente definido. El proceso es el siguiente: tengo instalado en la puerta un sensor de apertura Zigbee. La información de este sensor es procesada por un servidor Zigbee2MQTT, que vuelca en un topic MQTT la información de cuándo se activa este sensor. Este topic es procesado mediante una automatización en Home Assistant que, cuando se encuentra activada, envía una señal de alarma mediante un segundo topic MQTT. A su vez, tengo un script en Python en la Orange Pi Zero de Forcarey que se encuentra suscrito a este topic, y que cuando detecta una activación del mismo, toma tres imágenes a intervalos regulares, y las envía codificadas como bytearray por un tercer topic MQTT. Y por último, tengo creado en Node-Red un flujo que está suscrito a este último topic, descodifica las imágenes, y las envía a una cuenta de correo como un adjunto.

Flujo de Node Red de envío de correo

Flujo de Node Red de envío de correo

Admito que tiene que haber maneras más sencillas de hacerlo, pero esta resulta bastante instructiva. :mrgreen:

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)

Etiquetas: , , , , , , ,

25 jul 21 La iglesia de St. James de Dublín, iluminada por el Xacobeo 2021

Hoy es 25 de Julio, día de Santiago, y como este año cae en domingo, se considera éste como Año Santo Xacobeo. A pesar de las restricciones por la Covid, se están realizando celebraciones por todo el mundo. Y me ha llamado la atención que la iglesia de St. James de Dublín es una de las que lo ha celebrado, iluminando su fachada con el logotipo Xacobeo:

St. James' Church, Dublin

St. James’ Church, Dublin

No ha sido la única, de hecho, se han registrado actos similares en Reino Unido y Polonia, y ya a finales del año pasado pudimos ver de similar guisa el Monasterio de San Isidoro, de Santiponce. Pero me gusta especialmente ver que en Dublín también le dedican algo de cariño al Xacobeo 2021.

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)

Etiquetas: , ,

21 jul 21 Centenario del Desastre de Annual

Tal día como hoy, hace 100 años, aconteció el mayor desastre militar moderno del Ejército Español, durante las labores de toma de control del Protectorado del norte de Marruecos, conocido como el Desastre de Annual. Este hecho fue el punto de partida de una serie de desastres que se fueron encadenando en España: golpe de estado y dictadura de Primo de Rivera (dado en parte para tapar la implicación del Rey Alfonso XIII que se iba a desvelar durante la presentación en cortes del Expediente Picasso, que investigó la responsabilidad del Desastre), advenimiento de la Segunda República, período de esperanza pero tremendamente inestable, que devino en el Alzamiento de 1934, y el trágico estallido de la Guerra Civil, y la posterior dictadura del General Franco, precisamente un africanista.

Y en referencia al Expediente Picasso, se encuentra digitalizado y es posible consultarlo en línea. Estremecen estos tres telegramas:

El primero, del General Silvestre, Comandante General de Melilla, y jefe de las operaciones que se estaban llevando a cabo:

Telegrama del 21 de julio a las 19:30h del General Silvestre

Telegrama del 21 de julio a las 19:30h del General Silvestre

…en el que se informa de la evacuación de Annual en términos como estos:

…y ante la imposibilidad [de] conseguirlo ordené evacuación acogiéndose protección mayor parte guarnición después de inutilizar material.- Jefes y Oficiales muertos en alambrada suicidados. Retirada muy sangrienta, recogiendo fuerzas, repito mayoría territorio, en Anual, donde me quedo con las mismas, completamente rodeado por enemigo: debido situación gravísima y angustiosa me es urgentísimo envío de dos divisiones con todos elementos.- Intentaré toda clase [de] esfuerzos para conseguir salir [de] esta dificilísima situación que desconfío por tener cotadas comunicaciones, no cesando peticiones inmediatas pedirme auxilios que yo necesito.

El segundo, también del General Silvestre, a las 4:55h del 22 de julio:

Telegrama del 22 de julio a las 4:55h, del General Silvestre

Telegrama del 22 de julio a las 4:55h, del General Silvestre

…en el que reitera su grave situación, sin agua ni municiones, e informa de que intentará retirarse de Annual:

(…) me hace suponer [que] no he acertado a dar a V.E. idea exacta [de la] situación en que [se] hallan mis tropas en Anual, constantemente hostilizadas, aguadas que habrán de ser sangrientas, cortada por el enemigo mi línea de abastecimiento y de evacuación de bajas, no dispongo otras municiones más que para un combate y resolución comprometidísima que tomaré, aceptando toda responsabilidad, teniendo en principio idea de retirarme a Buynsa, Bentrieb y Beni-Said, recogiendo antes posiciones que me sea posible, en donde esperaré los refuerzos que V.E. me envíe.

Y, por último, el telegrama del Coronel Jefe de Estado Mayor, del 22 de Julio a las 17:50h:

Telegrama del 22 de julio a las 17:50h del Coronel Jefe de Estado Mayor

Telegrama del 22 de julio a las 17:50h del Coronel Jefe de Estado Mayor

…informando del suicidio del General Silvestre:

Tengo [el] sentimiento [de] participar a V.E. que según me comunica [el] hijo [del] Comandante general, acaba su padre General Silvestre de suicidarse al evacuar [el] campamento [de] Anual.

Escalofriante, aunque no menos que los 13.500 muertos por el lado español en los combates, tanto en Annual como en Monte Arruit, torturados y degollados por los rifeños tras su rendición.

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)

Etiquetas: , ,

10 jul 21 Etapa ciclista: De Castro a Castro. Forcarey – Ponte Maril – Castro de Loureiro – Parque Eólico – Castro de Garellas – Camino Miñoto (26/06/2021)

El sábado 26 de junio realicé una etapa ciclista en Forcarey que he venido en denominar como “De Castro a Castro”. Se trató de un recorrido circular que enlazó Forcarey con el Castro de Loureiro, para desde allí ir al Castro de Garellas, y retornar a Forcarey por el recientemente limpiado Camino Miñoto de Santiago. Salí de Forcarey al filo de las 9:00h, por carretera en dirección a Dosiglesias. Seguí la carretera hasta llegar a las cercanías de Ponte Maril, en donde tomé una pista que bajaba hasta el vado del río Lérez.

Por segunda vez en dos días, me vi metido en las frías aguas del Lérez. No puedo decir, en ninguno de los dos casos, que fuera algo accidental, si bien no calculaba que el río iba a llevar tanta agua y tener unas piedras tan grandes precisamente en el vado. Aun así, la cosa no tuvo mayor trascendencia. Pasado el Lérez, transité junto al área del campamento juvenil, para tomar el camino que sube al Castro de Louireiro. Como de costumbre, no pude resistirme a entrar en el castro.

De nuevo en la carretera, giré a la derecha para dirigirme hacia Loureiro, población que atravesé, tomando la carretera secundaria que sube hasta la carretera de Lalín y, posteriormene, una pista a mano derecha que sube hasta el parque eólico de Lamasgalán.. Un ascenso desde el castro de 4,5 kilómetros sostenido, duro a ratosy que me llevó a la cota máxima de la etapa, situada a 845 msnm.

IMG_20210626_100209581.jpg

Una vez en el primero de los generadores, mi idea era tomar la pista de mantenimiento de los mismos para ir hasta las neveras de Fixó, y continuar desde allí hasta Vilariño, pero quise explorar una pista que surgía a mano derecha, y que en teoría llevaba al mismo sitio sin tener que subir hasta la cresta de la montaña, y que en realidad me acabó llevando casi al fondo del valle, hasta Millarada.

IMG_20210626_100135847_HDR.jpg

Una vez abajo, y de nuevo en la carretera, seguí por la misma hasta después de Fixó, y desde allí, tomé la carretera que lleva hasta Garellas. Apenas a 200 metros de tomado el desvío, se llega al Castro de Garellas, cuya silueta inconfundible destaca a mano derecha de la carretera.

IMG_20210626_102535057.jpg

Al igual que en el caso de Castro Louireiro, no pude resistirme a explorarlo un poco.

Tras volver a la carretera, continué en bajada hasta Garellas, donde hice una breve parada junto a la Ermita de San Antonio, para beber un poco del agua que mana de la fuente que hay cerca de la misma.

IMG_20210626_102912387_HDR.jpg

Tras dejar atrás Garellas, tomé la carretera de Cachafeiro, con el objetivo de volver a Forecarey haciendo uso del trazado del Camino Miñoto de Santiago, que como decía más arriba, había sido limpiado y señalizado recientemente. No era la primera vez que recorría ese trazado. Ya en la etapa del 14 de febrero de 2021 lo había recorrido, si bien en sentido inverso, y había podido experimentar la pena de que lo que parecía ser un camino estupendo se encontrara completamente devorado por la maleza. Por fortuna, esta vez sería distinto. Tomé la carretera en sentido hacia Cachafeiro, y no tardé en encontrar las flechas que indican el Camino, si bien es cierto que se nota que están pensadas más para ser seguidas por peregrinos a pie que por alguien que vaya en bici. El tamaño y la ubicación de las mismas no es precisamente el mejor, la verdad.

IMG_20210626_103758402_HDR.jpg

A apenas 1 kilómetro desde Garellas, se toma a mano izquierda una pista que se adentra en la espesura. Curiosamente, es uno de los tramos menos limpios de como ha quedado el Camino Miñoto.

IMG_20210626_103805138.jpg

Pero una vez dentro, la cosa camina. A unos 100 metros se ha de girar a la derecha, y el camino cambia completamente. Lo que antes era una maraña de zarzas, era ahora un estupendo camino entre cercas de piedra, estupenda para andar por ella, y algo fastidiosa para rodar, porque tras la poda no se retiran los restos de la misma, que forman una alfombra mullida en el camino, que hace que la bici se enganche algo más de lo normal. En cualquier caso, era una delicia comparado con la vez anterior que pasé por allí.

IMG_20210626_104030620_HDR.jpg

Desde este punto tuve un rodar excelente hasta la Freixeira, que no pude menos que dejar inmortalizado:

Ya en la Freixeira, paré un momento para tomar unas fotos de la zona.

IMG_20210626_104536309_HDR.jpg

…antes de volver a Forcarey. Tras pasar Cachafeiro, opté por tomar una senda a mano derecha que lleva directamente hasta Casanova, y desde allí bajar por el tramo de carretera vieja hasta el Lérez. Como de costumbre, ya sólo quedaba realizar la subida por carretera a Forcarey para dar por finalizada la etapa.

Datos de la etapa

  • Distancia: 25’533km
  • Distancia (según el GPS): 25’53km
  • Altitud ascendida: 585m
  • Tiempo de etapa: 1:42:53
  • Tiempo desde el inicio de la etapa: 2:02:51
  • Pulsaciones medias: 141ppm
  • Pulsaciones máximas: 177ppm
  • Cadencia media: 61 rpm
  • Cadencia máxima: 192 rpm
  • Calorías consumidas: 1699kcal

VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)

Etiquetas: , , , , , , , , ,

12 jun 21 Explotación de datos abiertos mediante Node Red: Colegios de Galicia

Estos días he estado jugando un poco con una fuente de datos abiertos proporcionada por el Gobierno de España para resolver un pequeño problema que teníamos en casa: cómo priorizar la elección de centro para el curso que viene que tiene que realizar Ana. El caso es que ha estado este año trabajando de interina en un colegio de la zona de Carballiño, y para el curso que viene tiene que indicar su prioridad de centros. Tiene la posibilidad de escoger cualquiera de las provincias, pero una de las posibilidades es escogerlos de manera individual. Y para nosotros, teniendo en cuenta que tenemos un piso en Forcarey, un criterio bastante importante es el de la proximidad geográfica, y el de la facilidad de desplazamiento en carretera.

El problema a priori se planteaba complicado, ya que en la zona interior de Galicia donde está Forcarey, cerca de los límites de las cuatro provincias, ninguno de los dos teníamos nociones de cuáles podían ser los centros más apropiados. Mirarlos de manera individual podía ser un dolor de cabeza, por lo que me puse a pensar en maneras de optimizar la elección, y di con algo bastante interesante. Existe en el catálogo de datos puestos a disposición por parte del Gobierno una categorización de todos los Centros Educativos de Galicia. Categorización que incluye el tipo de centro (público, privado, CEIP, IES…) así como (y esta era la clave del asunto) sus coordenadas geográficas.

Información XML de los colegios de Galicia

Información XML de los colegios de Galicia

Exactamente lo que estaba buscando. A partir de ahí, la idea era poder representarlos en un mapa, para poder determinar los más convenientes para nuestra ubicación. ¿Y cómo hacerlo? Por suerte, tengo experiencia con Node Red y su estupendo plugin para mapas. No tardé en realizar un flujo, que extrae de las fuentes en XML (una por provincia) la información de cada colegio, clasificarlo, filtrarlos por tipo, y crear una entrada en el mapa para cada colegio, con información relevante:

Flujo de procesamiento en Node Red

Flujo de procesamiento en Node Red

¿El resultado? Estupendo. Un mapa en el que se puede observar los centros, clasificados por los tipos que nos interesan, y con la información relativa a código de centro, dirección y algunos datos adicionales.

CEIPS y CPIs en las cercanías de Forcarey

CEIPS y CPIs en las cercanías de Forcarey

Este ejercicio, aparte de lo obvio, me ha permitido sacar una información derivada adicional bastante interesante, y es el conocer las zonas más despobladas o con población más envejecida de Galicia. Y es que si se observa el mapa completo de la Comunidad, es fácil ver que hay zonas muy extensas en las que no existe colegio alguno de Primaria. Es decir, zonas sin habitantes, o al menos sin niños (lo que suele ser parejo):

CEIPs y CPIs de Galicia

CEIPs y CPIs de Galicia

Esta es la maravilla de poder usar datos abiertos.

VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)

Etiquetas: , , ,