PDA

Ver la versión completa : Otros Lenguajes Conexión directa entre equipos sin servicio en la nube



masteries
24/07/2021, 10:16
Aquí una cuestión de las que no suelo tocar apenas, pero que ahora estoy necesitando:

-Sucede que estoy enfrascado en un proyecto, de actualización de un sistema bastante antiguo;
con dicho sistema te puedes comunicar de forma remota, mediante conexión directa con un módem analógico.

-Desde un equipo PC con S.O. QNX, con su módem, llamas al número de teléfono de la máquina, se establece la comunicación y le puedes dar unas órdenes, y obtener unos logs.

-Ahora quieren actualizar la antigua máquina, para que también pueda obtener imágenes, y siga siendo un sistema muy baremetal... ahora hace falta un ancho de banda mayor, empleando una conexión de datos moderna, pero sin que haya que recurrir a una plataforma intermediaria en la nube para establecer la conexión.

-Vamos, básicamente hay que reemplazar módem analógico por un teléfono de 50€ con datos y que comparta su Wifi, y reconstruir la antigua máquina con un ESP32 o similar.



Mi pregunta es: ¿Cómo puedo establecer una conexión directa con una máquina que se conecta al Wifi de un móvil (siendo ese su punto de acceso a internet)? La conexión en principio puedo incluso hacerla desde un PC Windows, porque les urge más actualizar el antiguo equipamiento, que mantener el PC con QNX

La cuestión es esa, que la práctica totalidad de lo que he visto, son servicios en la nube... pero en este caso hay que prescindir del servicio intermediario en la nube,

Gracias anticipadas,

crossmax
24/07/2021, 10:51
Si la conexión de datos es a través de un operador móvil, lo más seguro es que no puedas acceder a él directamente desde fuera. Tendrás que crear una conexión desde el móvil (túnel inverso o abrir un socket) contra un equipo final o intermedio.

Yo solo veo 2 soluciones para conseguir esta conexión "saliente" que permita conectarse desde el exterior:
- O mantienes ese socket abierto siempre contra un server y así las consultas serán inmediatas
- O creas una especie de tarea programada para que cada x minutos compruebe contra el server o el host final (el pc Windows) si se ha cambiado el estado y tiene que abrir la conexión o directamente enviar los logs/imagenes.

masteries
24/07/2021, 11:04
Si la conexión de datos es a través de un operador móvil, lo más seguro es que no puedas acceder a él directamente desde fuera. Tendrás que crear una conexión desde el móvil (túnel inverso o abrir un socket) contra un equipo final o intermedio.

Yo solo veo 2 soluciones para conseguir esta conexión "saliente" que permita conectarse desde el exterior:
- O mantienes ese socket abierto siempre contra un server y así las consultas serán inmediatas
- O creas una especie de tarea programada para que cada x minutos compruebe contra el server o el host final (el pc Windows) si se ha cambiado el estado y tiene que abrir la conexión o directamente enviar los logs/imagenes.

Muchas gracias por las ideas Crossmax,

hmmm...

como el equipo remoto es un microcontrolador (y ahí las opciones están más limitadas), una posibilidad de comunicación que se me ocurre, es utilizar un correo electrónico, como Gmail; como medio de comunicación.
Es un "man in the middle", pero te estás quitando el tener que pagar por el servicio intermediario. Y Gmail es un servicio duradero en el tiempo,

Porque servidor propiamente dicho no hay, es un PC en un sitio... y mañana puede ser el PC que tiene el responsable en su casa,



Porque, que sepa, en ESP32 si existe la posibilidad de conetarse a un correo para mandar imágenes y leer los mensajes,

crossmax
24/07/2021, 11:36
Pues para un sistema con esas limitaciones, tirar de Gmail puede ser muy buena idea. Simple y con casi todo ya hecho.

Te iba a proponer Mqtt pero ahí ya tienes que instalar algo también en el PC Windows. Con Gmail te quitas de todo ese lío.

zhorro
26/07/2021, 01:34
Muchas gracias por las ideas Crossmax,

hmmm...

como el equipo remoto es un microcontrolador (y ahí las opciones están más limitadas), una posibilidad de comunicación que se me ocurre, es utilizar un correo electrónico, como Gmail; como medio de comunicación.
Es un "man in the middle", pero te estás quitando el tener que pagar por el servicio intermediario. Y Gmail es un servicio duradero en el tiempo,

Porque servidor propiamente dicho no hay, es un PC en un sitio... y mañana puede ser el PC que tiene el responsable en su casa,



Porque, que sepa, en ESP32 si existe la posibilidad de conetarse a un correo para mandar imágenes y leer los mensajes,

Si, hay librerias SMTP y soportan los ficheros anexados (importante porque hacerlo a mano es un horror), pero para que funcione SMTP tendras que quitar la seguridad en la cuenta de gmail porque los de google por defecto utilizan un protocolo de autenticación OAuth, imagino que tambien habrá librerias para ESP32.

josepzin
26/07/2021, 03:43
Usar Gmail es usar "la nube" :P

Drumpi
26/07/2021, 10:47
Pero si vas a enviar la información por SMTP ¿Por qué no te creas un servidor de correo virtual en el PC Windows que reciba los datos con IIS o algo similar?
Es más, si vas a enviar información ¿por qué no hacerla por protocolo HTTP y te creas una sencillísima WebApi en el servidor Windows, y así, de paso, que gestione los paquetes que necesitas? Se diseñó para eso, para el envío de datos de forma independiente del HW y del SW que se ejecute. Todo el sistema de sockets se diseñó para eso, incluso para la comunicación entre programas dentro del mismo sistema.

Es más, con el http no tienes que estar pendiente de si se envían datos o no: tu máquina antigua genera el paquete, lo envía, y la WebApi actúa en el momento en que lo recibe y manda una respuesta. Sabiendo C#, y con lo inteligente que sé que eres, una WebApi te la creas en una semana sin tener ni idea.

Ahora, si lo que necesitas es hacer streaming, sólo conozco AnyDesk y Teamviewer, que en ambos casos dependen de un servicio en línea. Si no, usamos el "escritorio remoto de Windows", que va por el protocolo RDP, y funciona tanto en Linux con XTerm, como en MacOS con una aplicación de la propia M$ llamada... "escritorio remoto de Windows" :D

amkam
26/07/2021, 11:58
Me da la sensación de que "no quiero servicios en la nube" significa "lo queremos gratis". En ese caso el free tier de AWS (u otras) podría ser lo que buscáis, puedes usar una lambda invocada desde un cli o un endpoint o incluso te puedes crear hasta una VPN con la máquina en cuestión, mientras los requisitos sean bajos, debería ser suficiente (una busqueda en google de cómo hacerlo da buen resultado).

masteries
27/07/2021, 15:37
Al final tiraré por la vía de reemplazar la máquina remota (está basado en una CPU 68010), por un ESP32 + una cámaras que adaptaré a RS-485 + una ROM SPI de algunos MB (el dato que ejecuta cada orden, es distinto para cada día del año, por un período almacenado de varias décadas. Sólo se puede ejecutar cada orden una vez al día, o intentarlo) + tirar de Gmail + poner en práctica la librería OAuth 2 de los ESP32

Los requisitos son que el sistema remoto, debe seguir manteniéndose lo más baremetal posible; y las órdenes, poder darlas desde cualquier lado; sin estaciones de trabajo, sin software adicional a instalar...

Con eso les irá bien,

¡Muchas gracias a todos!