Expertos informática/programación, necesito ayuda con proyecto!

LostSouls

Códijo Earth2 9PMU9AI4F0
Desde
25 Jul 2012
Mensajes
2.049
Reputación
5.638
Lugar
Shell Beach
Ya que el subforo se ha convertido en un punto de encuentro de informáticos, programadores y aspirantes, os invoco para ver qué viabilidad le veis a esto. Adjunto imagen para tratar de facilitar la comprensión. El esquema es el siguiente:

topologia.png

Los equipos de medición son diferentes, cada uno con su protocolo, normalmente AK, conectados por LAN a un switch y de este switch al HOST, máquina linux con aplicaciones python. Este Host recoge todas las lecturas en tiempo real de los equipos, tiene un script python que permite ver todas las señales de los diferentes dispositivos. El PC visualización también permite ver las señales pero simplemente visualiza a diferencia del HOST, que recaba todo, calcula y vuelca a la BD según el trabajo que se haga para luego generar informes, etc.
Mi idea es acceder a ese HOST, para conseguir convertir esas variables de señales en variables de mi programa python y procesarlas para llenar hojas excel, que se llenarían tb por otro lado con equipos conectados por RS232 pero ese aspecto está relativamente bajo control ya.
Del HOST, que es un sistema industrial bastante cerrado, a base de escudriñar he conseguido los archivos .py de la aplicación que recoge las señales con sockets y las saca en una ventana con tkinter. Tengo conexión por al host por el switch, tengo respuesta ping, mi pregunta es:
  • Si meto el programa python del host en mi PC, cambiando lo que toque, podría llegar a leer esas señales?
  • hay otra manera de "leer" esos valores que ya están en pantalla y asignarlos a variables de mi programa Python si tengo conecxión física al host?
  • Hay alguna manera más viabe que esa, por ejemplo, sabiendo qué IP y puertos usa el PC visualización para acceder al HOST? imagino que es más compejo que eso porque si funciona por TCP hay que saber direccionar cada señal, etc...
  • Sería una posibilidad copiar el programa python que visualiza las señales y modificarlo para que me las "envíe" a mi PC por algún protocolo y manera conocida?
  • La alternativa sería atacar a los dispositivos que ya conozco su IP y tengo los comandos del protocolo para hacer las querys de las medidas que me interesan pero perdería otras muchas señales que posiblemente necesite en el futuro.
Sé que es una explicación paco y que muchos me mandaréis a la hez diciendo que lo contrate... no lo voy a contratar porque soy yo el contratado pero sí prometo tener un detalle si alguien me halluda.
PD: soy contratado pero mi especilidad es la instrumentación, hago pinitos con iot, python y hezs varias pero no puedo abarcar tanto campo con nivel tan alto.

Gracias de antebraso.
 

Concursante

Himbersor
Desde
10 Abr 2020
Mensajes
1.855
Reputación
4.338
Lugar
Siguiendo al conejo blanco
Pregunto, ¿por qué no lo haces en la nube e ya?

Vale, recoge las señales con sockets y el host es un armatoste, dejame unos minutos y quizás te de una buena respuesta
 
Última edición:

Toctocquienes

Madmaxista
Desde
10 Jun 2008
Mensajes
10.876
Reputación
19.148
No he entendido un carajo pero si estás racopilando series temporales, ¿porqué no usas Elasticsearch?
En ese esquema no aparece ninguna base de datos.
¿Qué quieres conseguir? Estás haciendo preguntas concretas pero no dices cuál es tu meta final y quizá todo el planteamiento que estás haciendo está mal.
El plural de query es queries.
Host no se escribe en mayúsculas, no es un anagrama.
 

LostSouls

Códijo Earth2 9PMU9AI4F0
Desde
25 Jul 2012
Mensajes
2.049
Reputación
5.638
Lugar
Shell Beach
Pregunto, ¿por qué no lo haces en la nube e ya?

Vale, recoge las señales con sockets
Es una LAN industrial sin conexión a internet, sólo para servicio remoto de asistencia técnica, sistema muy capado como he dicho. Gracias por tu respuesta.
¿que miden los equipos?
De todo, desde condiciones ambientales, velocidad, fuerza... multitud de equipos cada uno de su madre conectados al HOST.
 

LostSouls

Códijo Earth2 9PMU9AI4F0
Desde
25 Jul 2012
Mensajes
2.049
Reputación
5.638
Lugar
Shell Beach
No he entendido un carajo pero si estás racopilando series temporales, ¿porqué no usas Elasticsearch?
En ese esquema no aparece ninguna base de datos.
¿Qué quieres conseguir? Estás haciendo preguntas concretas pero no dices cuál es tu meta final y quizá todo el planteamiento que estás haciendo está mal.
El plural de query es queries.
Host no se escribe en mayúsculas, no es un anagrama.
No sé si con series temporales te refieres a las lecturas de los diferentes sensores, etc. No he puesto la BD porque ya graba datos procesados y yo necesito la lectura en el momento, y el único que me la muestra es el host y la otra máquina de visualización.
Quiero conseguir un botón en mi aplicación python que al darle recoja datos de esos canales de temperatura, presión o lo que sea, haga la media y me la vuelque en varias celdas de una hoja de calibración.
 

Toctocquienes

Madmaxista
Desde
10 Jun 2008
Mensajes
10.876
Reputación
19.148
No sé si con series temporales te refieres a las lecturas de los diferentes sensores, etc. No he puesto la BD porque ya graba datos procesados y yo necesito la lectura en el momento, y el único que me la muestra es el host y la otra máquina de visualización.
Quiero conseguir un botón en mi aplicación python que al darle recoja datos de esos canales de temperatura, presión o lo que sea, haga la media y me la vuelque en varias celdas de una hoja de calibración.
Si tienes el código que está ejecutando el host entonces enviar esa señal a otra máquina debería ser posible tocando ese código.

Tú en esto tienes poca experiencia ¿verdad? Se nota en cosas como:
"Quiero conseguir un botón en mi aplicación python que al darle recoja "
A ver, para poder recogeral, esa info tiene que estar en algún sitio. Para que esté en algún sitio, el código que lee las señales en el host y las convierte en información y posteriormente la guarda en la bbdd, tiene que estar dejándola en algún sitio más.

Básicamente: si el host no tiene una API y la info que está en la BBDD no te sirve, vas a tener que tocar el código del host para que exponga esa información en alguna parte donde un PC cualquiera, por ejemplo el tuyo, pueda cogerla.

A priori lo veo viable, y si todo está hecho en Python quizá hasta no sea muy difícil.
Entiendo que el host es Linux ¿no?
 

Marcus Halberstam

Madmaxista
Desde
24 Oct 2009
Mensajes
2.759
Reputación
9.354
Lugar
Donde pongo el sombrero
Igual suelto alguna burrada porque se me escapa algo:

1. Entiendo que no puedes instalar nada en el HOST, ¿no? De lo contrario una solución podría ser instalar algo tipo Flask, capaz de ejecutar los scripts python en respuesta a una llamada HTTP lanzada desde tu PC.
2. Dices que el HOST escribe a BD: ¿no te vale con leer BD desde tu PC? ¿O en BD no se guarda toda la info que necesitas?
3. Solución ñapa premium: si puedes acceder al HOST por ssh y obtener manualmente la info que necesitas (entiendo que ejecutando los scripts), entonces eso mismo se podría automatizar de forma programática. Por ej, si quieres usar Python: Python SSH Tutorial . Esto es, escribir un programa Python que: 1) Se conecte por ssh al HOST 2) Ejecute los scripts 3) Lea el resultado de la ejecución y extraiga la info relevante
 

LostSouls

Códijo Earth2 9PMU9AI4F0
Desde
25 Jul 2012
Mensajes
2.049
Reputación
5.638
Lugar
Shell Beach
Si tienes el código que está ejecutando el host entonces enviar esa señal a otra máquina debería ser posible tocando ese código.

Tú en esto tienes poca experiencia ¿verdad? Se nota en cosas como:
"Quiero conseguir un botón en mi aplicación python que al darle recoja "
A ver, para poder recogeral, esa info tiene que estar en algún sitio. Para que esté en algún sitio, el código que lee las señales en el host y las convierte en información y posteriormente la guarda en la bbdd, tiene que estar dejándola en algún sitio más.

Básicamente: si el host no tiene una API y la info que está en la BBDD no te sirve, vas a tener que tocar el código del host para que exponga esa información en alguna parte donde un PC cualquiera, por ejemplo el tuyo, pueda cogerla.

A priori lo veo viable, y si todo está hecho en Python quizá hasta no sea muy difícil.
Entiendo que el host es Linux ¿no?
Como he dicho no soy informático ni mucho menos. Entiendo lo que dices de la BD, sólo es usada para volcar los datos "estáticos", lo que es el "logger" de lectura en contínuo lo hace el host por un sistema de DSM, de hecho el .py se llama así, Dynamic shared memory, imagino que crea un área de memoria compartida y ahí están todas las señales en directo.
Efectivamente, el host el linux, tengo el código .py del programa de visualización, estoy leyéndolo, me he puesto hoy, si fuera necesario os lo paso tapando las cosas clave, es un tema industrial bastante confidencial y podría meterme en problemas.
De hecho pregunté a los desarrolladores de la casa, los conozco de cuando hacen el comissioning y no han soltado prenda, y no voy a modificar nada, simplemente necesito tener esas lecturas en vivo para procesarlas en un excel paco de comprobación de sensores.
Muchas gracias por vuestras respuestas, de verdad ;)
 

LostSouls

Códijo Earth2 9PMU9AI4F0
Desde
25 Jul 2012
Mensajes
2.049
Reputación
5.638
Lugar
Shell Beach
Igual suelto alguna burrada porque se me escapa algo:

1. Entiendo que no puedes instalar nada en el HOST, ¿no? De lo contrario una solución podría ser instalar algo tipo Flask, capaz de ejecutar los scripts python en respuesta a una llamada HTTP lanzada desde tu PC.

No he probado instalar nada, sólo puedo pasarme archivos porque he descubierto una carpeta compartida en red, y de ahí me los he copiado y los tengo ahora en mi pc.

2. Dices que el HOST escribe a BD: ¿no te vale con leer BD desde tu PC? ¿O en BD no se guarda toda la info que necesitas?

Como he dicho al compañero, la BD solo almacena datos, yo necesito leer en directo, meto una presión, o una velocidad conocida con un patrón y necesito leer de manera simultánea.

3. Solución ñapa premium: si puedes acceder al HOST por ssh y obtener manualmente la info que necesitas (entiendo que ejecutando los scripts), entonces eso mismo se podría automatizar de forma programática. Por ej, si quieres usar Python: Python SSH Tutorial . Esto es, escribir un programa Python que: 1) Se conecte por ssh al HOST 2) Ejecute los scripts 3) Lea el resultado de la ejecución y extraiga la info relevante
Miraré el tuto de SSH, aunque la máquina está capadísima lo intentaré, he conetstado arriba porque voy con prisa y no me da la olla para hacer quotes punto por punto.
Gracias de nuevo!
 

LostSouls

Códijo Earth2 9PMU9AI4F0
Desde
25 Jul 2012
Mensajes
2.049
Reputación
5.638
Lugar
Shell Beach
¿A la bd por qué no te puedes conectar? ¿hay alguna API?

Y lo mas importante ¿puedes tocar el host para algo?
He intentado conectarme en otrs ocasiones pero pide la contraseña y no la tengo.
Puedo tocar el host, tengo algunas apps instaladas, y copiar archivos si lo necesito pero poco más. Lo que conozco es lo que voy averiguando a base de indagar por iniciativa propia, yo me dedico a calibrar equipos, averías, mantenimiento, instrumentación, pero desarrollo y tal sólo cuando tengo tiempo.
 

Toctocquienes

Madmaxista
Desde
10 Jun 2008
Mensajes
10.876
Reputación
19.148
Como he dicho no soy informático ni mucho menos. Entiendo lo que dices de la BD, sólo es usada para volcar los datos "estáticos", lo que es el "logger" de lectura en contínuo lo hace el host por un sistema de DSM, de hecho el .py se llama así, Dynamic shared memory, imagino que crea un área de memoria compartida y ahí están todas las señales en directo.
Efectivamente, el host el linux, tengo el código .py del programa de visualización, estoy leyéndolo, me he puesto hoy, si fuera necesario os lo paso tapando las cosas clave, es un tema industrial bastante confidencial y podría meterme en problemas.
De hecho pregunté a los desarrolladores de la casa, los conozco de cuando hacen el comissioning y no han soltado prenda, y no voy a modificar nada, simplemente necesito tener esas lecturas en vivo para procesarlas en un excel paco de comprobación de sensores.
Muchas gracias por vuestras respuestas, de verdad ;)
Es decir, no quieres tocar el código pero quieres acceder a posiciones de memoria en uso por otro proceso.
Buena suerte :D

O no te estoy entendiendo o lo que comentas no tiene mucho sentido: a ver, si haces un acceso puntual a la memoria lo que vas a conseguir es un dato concreto. Con eso no puedes calcular una media. Tendrías que estar constantemente leyendo esa posición y guardándola en otra parte ajena a ese programa.

Si el tráfico no está cifrado puedes esnifar la conexión en el host y tratar de procesar lo que salga ahí. Buena suerte con esto también.

Te queda inspeccionar cómo accede el programa de visualización e intentar replicar las partes que te interesen en tu propia máquina, que dices que es lo que ya estás haciendo. Creo que si no quieres tocar el host, que sería la opción más viable para mí, esto es lo que más futuro tiene.

Tendrás que averiguar: cómo se conecta (credenciales etc) y qué metodos llama. Con suerte estará recibiendo datos y no una gráfica ya pintada.
Sin ver más no puedo opinar.