Ideas para VirtualHMI Android y http/https

  • 26 Respuestas
  • 18255 Vistas

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Ideas para VirtualHMI Android y http/https
« : julio 15, 2015, 10:13:50 am »
Hola Boris, buen día,

Te escribo este post para proponerte algunas ideas sobre los productos, luego de casi 2 años de utilizarlo, y también en función de lo que veo que está ocurriendo en el mundo en materia de IOT (Internet de las Cosas).

Sobre el VirtualHMI para Android: te cuento que lo tengo instalado en el celular, aunque todavía no lo estoy utilizando en la práctica. Pero hay algunas funcionalidades que creo que serían interesantes y no las veo contempladas:
- Cuando se hace la consulta de los datos del PLC (PLC info) está faltando un dato muy importante (o no lo encontré): la fecha y hora actual del PLC.
- De la misma manera, el VirtualHMI debería poder setear la fecha y hora del PLC, tomando la fecha y hora del celular. Esta funcionalidad es muy importante puesto que existe un drift bastante importante en la hora del PLC (varios minutos por mes), y requiere que se actualice con cierta periodicidad, porque si no los eventos comienzan a ocurrir a horas que no son las programadas.
- La posibilidad de utilizar Virtual HMI desde la WAN (o sea, desde internet). Para ello, lo que sería necesario es que en el lugar donde se configura el "Address", se pueda cargar una dirección tal como pepe.dyndns.org:10520.  Entonces "desde afuera" podrías acceder al PLC, consultar su estado, setear variables, etc.
- Y por último, sería espectacular tener la posibilidad de crear pantallas configuradas por el usuario, donde puedas configurar botones con nombres, y cargar valores en las variables.

Sobre la conectividad del PLC: Es un tema sobre el que ya hemos conversado antes, pero por cuestiones laborales he tenido que profundizar y comprender algo más. Hoy en día existen protocolos y plataformas gratuitas, donde los dispositivos IOT pueden fácilmente "subir" estados binarios o valores numéricos a una cuenta asociada, y luego esa información se disponibiliza via web para su consulta, y también para interactuar (se pueden cargar estados via web, que en la próxima consulta del PLC, dicha información llega al PLC).
Existen 2 protocolos y plataformas hoy en día muy en uso (aunque hay muchas otras):
MQTT: www.mqtt.org
ThingSpeak: www.thingspeak.com

Por ejemplo: en el siguiente link tenés una persona que hizo un simple dispositivo que con un chip wifi "sube" periodicamente a ThingSpeak los datos de temperatura y humedad que obtiene con un sensor:
www.instructables.com/id/Low-cost-WIFI-temperature-data-logger-based-on-ESP/?ALLSTEPS
Y en el siguiente link se accede a la correspondiente página ThingSpeak, en la que se consultan los datos recolectados a lo largo del tiempo:
http://thingspeak.com/channels/21857
En definitiva, si nuestros PLC pudieran acceder a estos servicios "en la nube", podríamos ir recolectando información a lo largo del tiempo, y consultarla via web en cualquier instante.

Para poder implementar esto, todo se resume a una cosa: es necesario que el PLC posea adentro el protocolo http y https. Eso es todo. Porque la actualización o envío de información a estos servicios se realiza precisamente ejecutando una URL con ciertos parámetros (que se obtienen con anterioridad al momento de crear la "cuenta"). Habría que ver si para la arquitectura de estos PLC ya existen desarrolladas las librerías http y https, e incorporarlas.

Bueno, te dejo estas inquietudes, que sé que son muuuucho trabajo. Pero es que el tema de la conectividad via internet de todos los dispositivos de control es algo imprescindible.

Dicho sea de paso: el equipo anda espectacular, no se cuelga nunca, no falla nunca !!

Saludos,
Pablo.


Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2324
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #1 : julio 16, 2015, 12:17:37 pm »
Buenos días Pablo,

Te respondo a continuación:

Citar
Cuando se hace la consulta de los datos del PLC (PLC info) está faltando un dato muy importante (o no lo encontré): la fecha y hora actual del PLC.

Es posible agregar la funcionalidad para leer y setear hora/fecha en el VirtualHMI para Android.
Lo tengo en cuenta para proximas versiones.

Citar
La posibilidad de utilizar Virtual HMI desde la WAN (o sea, desde internet). Para ello, lo que sería necesario es que en el lugar donde se configura el "Address", se pueda cargar una dirección tal como pepe.dyndns.org:10520.

Eso se puede hacer en VirtualHMI para Android, solo debes escribir el nombre del host en vez de la IP. El puerto lo configuras en otro campo, donde pide el numero de puerto.

Recorda que VirtualHMI para Android solo puede ser utilizado con conexiones WiFi, no por red móvil de datos.

Citar
Y por último, sería espectacular tener la posibilidad de crear pantallas configuradas por el usuario, donde puedas configurar botones con nombres, y cargar valores en las variables.

Si, eso lo tengo pensado, pero para mas adelante, ya que ahora le estamos dando prioridad a nuevos productos de hardware relacionados con la familia PLC Cube. No hay que olvidarse que somos una empresa de hardware también ja ja :D :D

Citar
Para poder implementar esto, todo se resume a una cosa: es necesario que el PLC posea adentro el protocolo http y https. Eso es todo. Porque la actualización o envío de información a estos servicios se realiza precisamente ejecutando una URL con ciertos parámetros (que se obtienen con anterioridad al momento de crear la "cuenta"). Habría que ver si para la arquitectura de estos PLC ya existen desarrolladas las librerías http y https, e incorporarlas.

En el caso nuestro, utilizamos un stack tcp/ip muy reducido, optimizado para memoria. Por lo que hay que programar prácticamente todos los protocolos
de la capa aplicación a nivel OSI, pero no veo inconvenientes con el www.thingspeak.com si decís que es por URL.

Si tenes mas info de implementación, envíamela así puedo analizarlo mejor y enviar peticiones HTTP. Aunque creo que algo vi en el link,
pero no se si era oficial. Podríamos hacer algunas pruebas.

Gracias por tus aportes.
Los tengo todo en cuenta, solo que muchas veces debemos elegir las prioridades y nos enfocamos en otros desarrollos.
Pero no nos olvidamos.

Saludos!
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #2 : julio 16, 2015, 13:23:58 pm »
Hola Boris,

Muchísimas gracias por tu respuesta, y por considerar mis comentarios.
Entiendo perfectamente que todos y cada uno de estos temas son un montón de trabajo, y que existen las prioridades.
De todas formas, continúo con el feedback, porque seguramente algún día algo surgirá para mejor :)

Volviendo al tema del http/https, yo creo que lo ideal sería (cuando llegue el momento), abordar el tema de lograr la capacidad de enviar por el puerto ethernet (con acceso a internet), comandos https, tal como el siguientes: conn.send("string")

En el siguiente link (ver desde la línea 75 en adelante), podés ver el código fuente de un pequeño software que "sube" a ThingSpeak el estado de un sensor de temperatura DS1820:
https://github.com/ok1cdj/ESP8266-LUA/blob/master/Thermometer-DS18B20-Thingspeak/ds1820.lua
(Este ejemplo está programado en un lenguaje llamado "LUA", que es bastante parecido al Pawn, por eso me pareció que era interesante el ejemplo. Solo que este lenguaje ya tiene incorporados de entrada, comandos de conectividad http).

En el siguiente link, tenés dos comandos https que al ejecutarse, realizan el "toggle" para reflejar el estado de un relé en ThingSpeak:
https://api.thingspeak.com/update?key=YF2DC4HXFSUQUIEE&field1=-1.0
https://api.thingspeak.com/update?key=YF2DC4HXFSUQUIEE&field1=1.0
De igual manera, podría ser el estado de una variable numérica (analógica).

Estos 2 comandos son "reales": están online, y los resultados se pueden ver mediante la página de consulta del Estado del Relé (ver el Field1): https://thingspeak.com/channels/21370

La documentación Oficial de ThingSpeak está en el siguiente link. Pero (repito) para mí todo se reduce a tener la capacidad de generar esos comandos https (cosa que para mí no sé si está dentro de las capacidades de nuestros PLC):
https://thingspeak.com/docs

Vos creés que está dentro de las capacidades de un PLC generar https ??

Un gran saludo,
Pablo.



Citar
Para poder implementar esto, todo se resume a una cosa: es necesario que el PLC posea adentro el protocolo http y https. Eso es todo. Porque la actualización o envío de información a estos servicios se realiza precisamente ejecutando una URL con ciertos parámetros (que se obtienen con anterioridad al momento de crear la "cuenta"). Habría que ver si para la arquitectura de estos PLC ya existen desarrolladas las librerías http y https, e incorporarlas.

En el caso nuestro, utilizamos un stack tcp/ip muy reducido, optimizado para memoria. Por lo que hay que programar prácticamente todos los protocolos
de la capa aplicación a nivel OSI, pero no veo inconvenientes con el www.thingspeak.com si decís que es por URL.

Si tenes mas info de implementación, envíamela así puedo analizarlo mejor y enviar peticiones HTTP. Aunque creo que algo vi en el link,
pero no se si era oficial. Podríamos hacer algunas pruebas.

Gracias por tus aportes.
Los tengo todo en cuenta, solo que muchas veces debemos elegir las prioridades y nos enfocamos en otros desarrollos.
Pero no nos olvidamos.

Saludos!

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2324
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #3 : julio 16, 2015, 16:58:09 pm »
Hola Pablo,

Viendo los ejemplos, se podria.

Ahora por qué decís HTTPS, y no HTTP ?. No puede funcionar con solo HTTP ?.

Ya que uno es la versión secure (complicada de hacer) y la otra es simple.

En este ejemplo que me pasaste: https://github.com/ok1cdj/ESP8266-LUA/blob/master/Thermometer-DS18B20-Thingspeak/ds1820.lua

Esta el TCP puro del GET HTTP, que lo veo simple de implementar, sin el HTTPS secure.

Podría empezar por ese.

SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #4 : julio 16, 2015, 18:09:31 pm »
Hola Boris,

Je je, yo siempre me hice la misma pregunta: http (fácil) ó https (difícil) !!

Mirando la línea de código a la que vos hacés referencia, resulta que sí, efectivamente, en ese ejemplo en LUA, se hace la actualización de la info en ThingSpeak utilizando http común.

Dedicándole un ratito más a investigar, fijate que en la documentación de ThingSpeak (que está completísima), resulta que aparentemente también sería compatible con http (todavía no tengo muy claro el cómo).
https://thingspeak.com/docs/thinghttp

Teniendo la capacidad de enviar comandos via http se podrían también hacer muchas otras cosas:
- Bajar datos desde un servidor web
- Subir datos a un servidor web
- Leer la hora exacta de Google
- Y mil cosas más.

Creo que lo más atinado sería crear una cuenta en ThingSpeak, y comenzar a hacer pruebas a enviar comandos via http (desde una PC) y ver qué pasa.

Bueno. Lo seguimos...
Saludos,
Pablo.

Hola Pablo,

Viendo los ejemplos, se podria.

Ahora por qué decís HTTPS, y no HTTP ?. No puede funcionar con solo HTTP ?.

Ya que uno es la versión secure (complicada de hacer) y la otra es simple.

En este ejemplo que me pasaste: https://github.com/ok1cdj/ESP8266-LUA/blob/master/Thermometer-DS18B20-Thingspeak/ds1820.lua

Esta el TCP puro del GET HTTP, que lo veo simple de implementar, sin el HTTPS secure.

Podría empezar por ese.
« Última Modificación: julio 16, 2015, 18:22:27 pm por PabloGa »

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2324
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #5 : julio 16, 2015, 18:27:54 pm »
Ok, entonces podría ir haciendo alguna función para que envíes datos a thingspeak.com con HTTP mediante URL, así vas probando.

Cuando tenga alguna novedad, te aviso por este medio.

Saludos!

SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #6 : julio 16, 2015, 18:37:58 pm »
Excelente !!!

Sugerencia: tratá de pensarlo como un "mecanismo genérico para enviar comandos http mediante url", y no lo pienses como algo "específico para ThingSpeak".


Ok, entonces podría ir haciendo alguna función para que envíes datos a thingspeak.com con HTTP mediante URL, así vas probando.

Cuando tenga alguna novedad, te aviso por este medio.

Saludos!

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2324
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #7 : julio 16, 2015, 19:07:20 pm »
Si, seria lo ideal. Pero, voy a ver el tema de memoria, ya que hacerlo muy genérico conlleva a asignar mas RAM para que sea ampliamente configurable.
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2324
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #8 : julio 24, 2015, 16:34:36 pm »
Buenas tardes Pablo,

Ya podes bajar desde el Play Store de Android, la versión 1.0.8 de VirtualHMI que incluye los cambios que pediste:

  • Añade panel PLC Config.
  • Permite establecer fecha/hora en PLC.
  • Permite resetear PLC desde panel.
  • Muestra hora/fecha actual en panel PLC Info (Current Date).

Luego seguimos con thingspeak  :)


« Última Modificación: julio 24, 2015, 16:45:39 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #9 : julio 24, 2015, 20:53:46 pm »
Mil gracias Boris, excelente como siempre.

De todas formas fijate que hay un bug: si le fijás la hora al PLC en horas de la tarde, le mete las horas "AM".

Me dí cuenta del tema esta tarde (luego de haber probado el nuevo VirtualHMI), que no se prendían las cosas en casa !!!

Saludos,
pablo.



Buenas tardes Pablo,

Ya podes bajar desde el Play Store de Android, la versión 1.0.8 de VirtualHMI que incluye los cambios que pediste:

  • Añade panel PLC Config.
  • Permite establecer fecha/hora en PLC.
  • Permite resetear PLC desde panel.
  • Muestra hora/fecha actual en panel PLC Info (Current Date).

Luego seguimos con thingspeak  :)

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2324
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #10 : julio 25, 2015, 19:09:37 pm »
Si, tenes razón, solo lo probé por la mañana y establecía hora en AM/PM, cuando necesita en formato 24 horas.
Ahora esta corregido en la versión disponible 1.0.9 del Play Store.

Cualquier cosa avísame.

Saludos!
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #11 : julio 28, 2015, 15:29:39 pm »
Hola !

Confirmado que la nueva version de VirtualHMI Android ahora actualiza la fecha/hora correctamente.
No lo pude hacer funcionar via internet (fuera de la red LAN), pero me parece que se debe a la utilización de comandos via UDP, y que hay que ajustar bien el port forwarding en el router. Me parece que la aplicación es más bien para uso desde la LAN.

Con respecto a lo de los comandos http/https, te cuento que ya tengo 2 dispositivos actualizando información en ThingSpeak (uno es un soft de PC, y otro es un microprocesador), utilizando solo comandos http. No hace falta que sea https.
Por ejemplo el siguiente comando enviado por http anda perfecto (la key está cambiada), y pone el valor "2" en el campo "field1":
http://api.thingspeak.com/update?key=GTIB35IARJOSBKLE&field1=2

Saludos !
Pablo.


Si, tenes razón, solo lo probé por la mañana y establecía hora en AM/PM, cuando necesita en formato 24 horas.
Ahora esta corregido en la versión disponible 1.0.9 del Play Store.

Cualquier cosa avísame.

Saludos!
« Última Modificación: julio 28, 2015, 15:34:58 pm por PabloGa »

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2324
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #12 : julio 28, 2015, 17:08:22 pm »
Buenisimo!.
Ya voy a hacer algunos testing más sobre LAN externa, pero si te funciona el de Windows, este debería comportarse igual.

Cuando tenga un tiempito pruebo algo del ThingSpeak.

Saludos
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #13 : octubre 14, 2015, 17:06:21 pm »
Hola Boris, como te va ?  Espero que muy bien,

Te cuento que he retomado el tema de utilizar VirtualHMI para Android, y no consigo acceder al PLC desde "afuera", y no puedo entender por qué.
La prueba básica que hago es simplemente obtener la "PLC Info" desde el android. No tengo todavía implementado en el PLC el código de soporte para VirtualHMI. Por ahora solo estoy haciendo prueba de conexión.
Si accedo en forma directa con el IP 192.168.1.81 y el puerto por defecto 4982 me conecto al instante y obtengo todos los datos del PLC. Pero si lo hago desde afuera no lo logro conectar.

Estoy configurando en el Android la dirección como pepe.dyndns.org + Local Port:4982, porque aparentemente el PLC utiliza ese puerto, y además tengo en el router un Port Forward para ese puerto, para que lo envíe al PLC. Al intentar la conexión, el android tira el siguiente error, después de un par de segundos: "Tx SendStat Error: ErrorTimeout".
También probé con otros puertos, y nada...

No debería ser la dirección tipo pepe.dyndns.org:4982  ??  Pero no anda tampoco, y tira como un error de sintaxis en el address.

Se te ocurre alguna solución ??

Por otro lado: has podido ver algo eso de implementar soporte http ??

Muchas gracias desde ya,
Pablo.

Citar
La posibilidad de utilizar Virtual HMI desde la WAN (o sea, desde internet). Para ello, lo que sería necesario es que en el lugar donde se configura el "Address", se pueda cargar una dirección tal como pepe.dyndns.org:10520.

Eso se puede hacer en VirtualHMI para Android, solo debes escribir el nombre del host en vez de la IP. El puerto lo configuras en otro campo, donde pide el numero de puerto.

Recorda que VirtualHMI para Android solo puede ser utilizado con conexiones WiFi, no por red móvil de datos.


Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2324
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #14 : octubre 14, 2015, 18:34:19 pm »
Buenas tardes Pablo, muy bien por suerte.

¿ Podrías probar si tenes el mismo síntoma con Virtual HMI para Windows ?.

Asegúrate que el PortForward en el router sea para el protocolo UDP, puerto 4982.

Estoy desarrollando un Web Server para el PLC, asi podes alojar paginas Web e interactuar con el mismo.
Calculo que en unas semanas podria tener algo para probar.

Te adjunto una imagen del entorno StxLadder con las paginas Web incluidas en el proyecto.

¿ Eso te sirve ? ¿ O necesitas el HTTP cliente ?.

Quedo a disposición.






SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com