
La rutina es un campo enorme para la automatización. Si una tarea requiere mucha energía, requiere perseverancia y se repite de vez en cuando, esta es una señal segura de que se deben tomar un par de pasos para reducir este dolor recurrente. Y puede convertir la implementación en un buen technofanchik.
Hoy hablaré sobre la automatización del sistema de alerta, monitoreo y alertas. Debajo del corte, una luz intermitente polaca en 1984 y ni un solo disparo fallido. El código y las instrucciones de montaje están incluidos.
Recientemente cumplí 8 años. 8 años desde que trabajo en 2GIS. En esta ocasión, un amigo preguntó: “¿Cómo aguantas tanto tiempo? ¿No había deseo de probar algo nuevo?
Surgió. Y aún surge. Y todavía lo intentas. Me pruebo en nuevos roles, equipos, tecnologías. Por que no Después de todo, el trabajo no es solo y no se trata tanto de "venir a las 9:00, abrir un administrador de tareas y asumir otra tarea, ir a casa a las 18:00" y ni siquiera "¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Nuevamente somos DDoS'yat, vamos a presionar request_limit aquí mismo, y aquí vamos a sacudir las IP, y aquí ... Oh, ¿cómo es que ya son las 3 de la mañana? " Todo esto está mal. El trabajo se trata del equipo, las relaciones, las reuniones nocturnas en la cocina. Sobre tareas interesantes y un ambiente de vida confortable, después de todo. Todo mata la indiferencia y la rutina. No sé cómo trabajar con el primero, no me di cuenta por mí mismo, pero les contaré sobre el segundo.
Hoy nos saldremos de los caminos trillados: un semáforo en la oficina , y uno más ; y automatizar alertas, monitoreo y alertas. Pero para hacer el próximo semáforo para el servidor de compilación, se fue. Tenemos muchas construcciones, sucursales y pruebas, pero no queremos robar el depósito de la policía de tránsito por una docena de semáforos. ¡Visualizaremos los "fuegos"!
Sistema de monitoreo estándar

Aquí hay una pantalla típica que cuelga en nuestra oficina. El 95% del tiempo, muestra cuán animado es nuestro proyecto y qué le sucede. Paralelamente, hay un canal en Slack con notificaciones de lanzamientos y errores.
Para no distraer a todo el equipo, se nombra a un oficial de servicio durante una semana, que actúa como maestro de liberación y se dispara a sí mismo si sucede algo terrible. Su tarea es descubrir lo que sucedió, y arreglarlo usted mismo, o encontrar a alguien que lo arregle.
También utilizamos este monitor para las reuniones diarias: abrimos el tablero de Kanban en Jira y nos vamos.
Que esta mal
El estado de servicio no cancela las tareas de trabajo. Si la persona responsable de los incendios vagó demasiado lejos en los pasillos de su mente, el resultado puede ser menos operativo de lo requerido. Esto llevó a la idea de que para una felicidad completa necesitamos una advertencia más significativa que las notificaciones interminables de Slack.
¡Automatízalo!
La idea se hizo más fuerte cuando se descubrió en el Avito un excelente flasher polaco vintage de 1984. Si hay un incendio en alguna parte, ¡entonces encienda esto! La cosa fue prometida incluso en condiciones casi de trabajo. 500 rublos y ella está en mi mochila. Así que agreguemos un poco de IoT hype y bocetos arduino.

Plan de acción
¡El plan era simple y brillante! Tomamos una fuente de alimentación de 12 voltios, agregamos un Sonoff SV - esp8266 con un relé y todos los flejes y la alimentación necesarios de 12 voltios. Estamos parpadeando algo como http://wifi-iot.ru/ , atrapamos una luz intermitente: ¡lucro! Tenemos un dispositivo conectado a través de Wi-Fi con una API REST y otras 1000 funciones.
Sobre gastos

Cable de alimentación con un enchufe plano de la radio de una abuela o del mercado de productos de radio más cercano: 60 rublos
Fuente de alimentación 12v 10w con Aliexpress o todos los mismos productos de radio - 260 rublos
Sonoff SV - $ 4.85 + envío
Flasher vintage - no tiene precio (500 rublos)
Opinión corporativa de Wi-Fi
Para acciones tan audaces, el Wi-Fi corporativo con certificados EAP-PEAP y otras palabras aterradoras dijeron "¡No pasarás!".

Puede arremangarse, google https://github.com/esp8266/Arduino/issues/1032 , tome un SDK nuevo y escriba todo usted mismo rápidamente. Pero entonces el tecnofanch se convierte en una larga excavación y debate. Pospondré esta opción hasta el lanzamiento de la versión 2.0, mejorada y reparada.
Productos blandos
Tome el amado olartamonov Arduino, una dispersión de lo que ha estado desempolvando en cajones durante N años, y recoja un monstruo de Frankenstein. Un almacén de piezas para el hogar será suficiente para verificar la viabilidad del MVP y desecharlo después de depurar la hermosa y brillante versión 2.0.

La solución es torpe: Arduino se conecta a la red a través de Ethernet, recibe IP a través de DHCP, escucha las solicitudes HTTP y parpadea el "LED". Cualquiera en la noche puede armar una solución de este tipo de ejemplos de IDE Arduino (pero nunca, ¡escuchen, nunca la usen! Esto es un infierno).
¿Qué usar?Para aquellos que todavía están llorando, pinchando, pero aún comiendo un cactus, sugiero que se transfieran al menos a PlatformIO (instalado en Atom o VSCode), pero es mejor no usarlo en absoluto, sino leer un curso de conferencias sobre STM32 o algo más útil. Y yo, tan mordido como un niño por arduinistas, terminaré mi acto sucio :)
El código está publicado en github , no hay autorización, API ramificada y hermosas páginas html. ¡Solo MVP, solo hardcore! Use bajo su propio riesgo, advertí.
Productos sólidos
Cuando se escribe el software, es hora de iniciar una luz intermitente. A continuación se muestra un diagrama que debería ayudar a comprender el dispositivo.
En espera:

Realidad:

Entonces reemplace Sonoff SV con:
Arduino UNO + wiznet w5100 + Relé
Conexión por pines:
DIGITAL 10 - SS
DIGITAL 11 - MOSI
DIGITAL 12 - MISO
DIGITAL 13 - SCK
GND - GND
5V - 5V
Conectamos el relé aún más fácilmente: el pin de señal en DIGITAL 4, el cable de alimentación al intermitente lo conectamos en el espacio en C (común) y NC (normalmente cerrado).
Achtung!
Consulte la documentación de sus dispositivos. ¡No es un hecho que conectando una placa Ethernet a 5 voltios no obtendrá un humo extraño cuando realice las pruebas! En mi caso, todo es normal y el módulo está diseñado para una potencia de 5 voltios.
Productos plasticos
Un anuncio en Avito dijo que la luz intermitente estaba casi operativa. Con los años, solo un detalle ha muerto en él: el engranaje girando el reflector.

Exhalamos, tomamos Fusion360 en nuestras manos, simulamos uno nuevo e imprimimos en una impresora 3D de oficina.
Proceso de modelado de engranajesVerificamos los radios y otras características del engranaje, luchamos con los parámetros de subextrusión y rebanadora

Seguimos modelando

Imprimimos, probamos

Personaliza un poco más e imprime de nuevo. Los remaches originales fueron taladrados y reemplazados con una combinación de tornillos M3 convencionales y tuercas autoblocantes. No te olvides de agregar asientos para ellos.


Lubrique los engranajes, reemplace los cables, vuelva a armar, ¡funciona!
Sería bueno imprimir el engranaje de nylon, pero la primera letra pequeña falló y la segunda sonda de Bestfilament ya no fue suficiente para la segunda.
Para qué estamos, ¡pase lo que pase!

¿Cómo hacer que se encienda la luz intermitente cuando sucede algo fuera de lo común?
Elemental! Utilizamos Grafana en el trabajo, por lo que acabamos de comenzar un nuevo canal de notificación con el tipo WebHook, que envía una solicitud para encender la luz de emergencia de acuerdo con ciertos criterios. Se apaga después de unos segundos, para no escalar la atmósfera aún más.
¿Cuánto tiempo tomó todo este desastre? Un par de noches, si no distraído. Además, medio día de tiempo de trabajo para configurar la integración con otros sistemas internos.
El technofanchik fue exitoso, el equipo trajo beneficios, finalmente se presentan fotos del proceso de ensamblaje.
Aquí está frente a nosotros, una luz intermitente con cables