Ideas para VirtualHMI Android y http/https

  • 26 Respuestas
  • 18269 Vistas

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #15 : octubre 14, 2015, 20:17:27 pm »
Hola Boris,
Si, el PortForward lo tengo hecho tanto para UDP como para TCP.
Voy a probar con la versión Windows (nunca la instalé).
En cuanto a los desarrollos, me parece un laburo infernal lo del web server... ! Me alegro que ta lo tengas casi listo. De todas formas, no son soluciones "intercambiables" con el http cliente. Lo que te permite uno no lo permite el otro. Lo del web server es también  bastante mas complicado no? Hay muchas cuestiones de seguridad, de compatibilidades, etc.

Muchas gracias y seguimos en contacto.
Pablo.




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

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2326
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #16 : octubre 14, 2015, 20:30:30 pm »
Ahora, estaba viendo para el cliente HTTP, utilizar el cliente TCP genérico que en el PLC esta implementado (ahora).

Ver este mensaje: http://www.slicetex.com/foro/smf/index.php?topic=48.msg121#msg121

Es posible mandar strings dinamicos utilizando las funciones StrFormat().
Ver: http://www.slicetex.com/foro/smf/index.php?topic=50.msg131#msg131

Entonces, si utilizas el puerto "80" para el cliente TCP, con thingspeak.com, podrías enviar
los strings segun el ejemplo que me pasaste:

https://github.com/ok1cdj/ESP8266-LUA/blob/master/Thermometer-DS18B20-Thingspeak/ds1820.lua

Básicamente el estracto del código que pasaste útil:

Código: [Seleccionar]

--- Get temp and send data to thingspeak.com
function sendData()
getTemp()
t1 = lasttemp / 10000
t2 = (lasttemp >= 0 and lasttemp % 10000) or (10000 - lasttemp % 10000)
print("Temp:"..t1 .. "."..string.format("%04d", t2).." C\n")
-- conection to thingspeak.com
print("Sending data to thingspeak.com")
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(payload) end)
-- api.thingspeak.com 184.106.153.149
conn:connect(80,'184.106.153.149')
conn:send("GET /update?key=YOURKEY&field1="..t1.."."..string.format("%04d", t2).." HTTP/1.1\r\n")
conn:send("Host: api.thingspeak.com\r\n")
conn:send("Accept: */*\r\n")
conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
conn:send("\r\n")
conn:on("sent",function(conn)
                      print("Closing connection")
                      conn:close()
                  end)
conn:on("disconnection", function(conn)
                                print("Got disconnection...")
  end)
end


Si te fijas, lo unico que hace es enviar:

Código: [Seleccionar]
conn:connect(80,'184.106.153.149')
conn:send("GET /update?key=YOURKEY&field1="..t1.."."..string.format("%04d", t2).." HTTP/1.1\r\n")
conn:send("Host: api.thingspeak.com\r\n")
conn:send("Accept: */*\r\n")
conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
conn:send("\r\n")

Eso pienso que es posible en el estado actual del PLC, con las funciones Pawn TCP disponibles.

Fíjate si entendes mas o menos lo que digo, e intento ver si te doy un ejemplo Pawn de como seria.
« Última Modificación: octubre 14, 2015, 20:32:16 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #17 : octubre 15, 2015, 07:58:50 am »
Hola !

Los ejemplos que adjuntás son los ejemplos en lenguaje LUA, que son justamente los que estoy utilizando actualmente para subir información a ThingSpeak desde el módulo ESP8266.
Ahora, vos decís que esto se puede implementar con las funcionalidades TCP existentes ... fantástico. Aunque no puedo entender cómo porque entiendo que el PLC no tiene soporte http. Quizá vos estás pensando en una función escrita en Pawn que implemente http sobre las funciones TCP existentes, lo cual me parece perfecto ...
Avisame si lo lográs hacer, yo hago pruebas...

Saludos !
Pablo.

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2326
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #18 : octubre 15, 2015, 10:34:39 am »
Buenos días,

Si, algo así, dejame que intente hacer un ejemplo y te aviso así lo probás.

Estamos en contacto.



Enviado desde un dispositivo móvil usando Taptalk.

SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #19 : octubre 15, 2015, 17:57:47 pm »
Hola Boris, que tal?

Ahí probé el VirtualHMI para Windows, y tampoco me funciona si es accedido desde "afuera" de la LAN. Sí funciona si lo hago desde la LAN. La prueba básica que hago es enviar el RESET al PLC, y puedo confirmar que no se logra comunicar cargando un nombre de host en lugar del IP. El error que tira es ErrorRxUnknown.

En cuanto a la versión Android, me funciona perfecto dentro de la LAN, envío mensajes al display, recibo comandos, todo perfecto. Con respecto a la versión Android (que es espectacular!), aquí va una sugerencia: si llegás a tener que recompilarlo para solucionar lo del tema del nombre del host, quizá se podría agregar lo siguiente: entre los parámetros de configuración del programa, sería muy bueno tener una opción tal como:
- Seleccionar el Panel por defecto  (Basic, Menu Keys, Function, etc, etc). O bien...
- Un checkbox: Iniciar en el último Panel Utilizado
Yo por ejemplo, el panel que siempre uso es "Only LCD", pero tengo que ir y seleccionarlo cada vez...

Saludos y muchas gracias !
Pablo.
« Última Modificación: octubre 15, 2015, 23:01:44 pm por PabloGa »

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #20 : octubre 16, 2015, 08:56:15 am »
Agregado de último momento:

Leí en la documentación de que VirtualHMI utiliza protocolo UDP para comunicarse.
Según lo que yo entiendo, eso explicaría por qué no funciona el acceso a VirtualHMI "desde afuera" de la LAN: según tengo entendido, todos los ISP no permiten que sus routers trafiquen paquetes UDP, puesto que al ser un broadcast mete demasiado tráfico en las redes. No estoy 100% seguro, pero creo que es así. Y si estoy en lo correcto, los VirtualHMI (Windows o Android) nunca van a poder funcionar desde afuera de la LAN (a menos que utilicen TCP en vez de UDP).

Saludos !
Pablo

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2326
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #21 : octubre 16, 2015, 20:16:45 pm »
Buenas tardes Pablo,

Citar
Con respecto a la versión Android (que es espectacular!), aquí va una sugerencia: si llegás a tener que recompilarlo para solucionar lo del tema del nombre del host, quizá se podría agregar lo siguiente: entre los parámetros de configuración del programa, sería muy bueno tener una opción tal como:
- Seleccionar el Panel por defecto  (Basic, Menu Keys, Function, etc, etc). O bien...
- Un checkbox: Iniciar en el último Panel Utilizado
Yo por ejemplo, el panel que siempre uso es "Only LCD", pero tengo que ir y seleccionarlo cada vez...

Si estoy de acuerdo, lo habia pensado pero me olvide de agregarlo.
Lo voy a hacer y te aviso.

Citar
según tengo entendido, todos los ISP no permiten que sus routers trafiquen paquetes UDP

Los ISP de telefonia celular cierran todos los puertos, solo quedan algunos TCP, y para UDP ni hablar.

Con respecto a los ISP de Banda Ancha, es depende, pero el tema es que UDP muchas veces como decís
se pierde en la "nube". No es fiable para VirtualHMI por internet.

Como bien decís, debería ser por TCP.

Por otro lado te comento que estoy haciendo pruebas con Thingspeak, te mantengo al tanto cuando logre actualizar
un dato en la Web.

Quedo a disposición.






SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #22 : octubre 16, 2015, 21:36:41 pm »
Citar
Con respecto a la versión Android (que es espectacular!), aquí va una sugerencia: si llegás a tener que recompilarlo para solucionar lo del tema del nombre del host, quizá se podría agregar lo siguiente: entre los parámetros de configuración del programa, sería muy bueno tener una opción tal como:
- Seleccionar el Panel por defecto  (Basic, Menu Keys, Function, etc, etc). O bien...
- Un checkbox: Iniciar en el último Panel Utilizado
Yo por ejemplo, el panel que siempre uso es "Only LCD", pero tengo que ir y seleccionarlo cada vez...

Si estoy de acuerdo, lo habia pensado pero me olvide de agregarlo.
Lo voy a hacer y te aviso.
Excelente !!  (no hay apuro, es solo una sugerencia)

Citar
según tengo entendido, todos los ISP no permiten que sus routers trafiquen paquetes UDP
Los ISP de telefonia celular cierran todos los puertos, solo quedan algunos TCP, y para UDP ni hablar.
Con respecto a los ISP de Banda Ancha, es depende, pero el tema es que UDP muchas veces como decís
se pierde en la "nube". No es fiable para VirtualHMI por internet.
Como bien decís, debería ser por TCP.
Sí, lamentablemente las cosas son así.

Citar
Por otro lado te comento que estoy haciendo pruebas con Thingspeak, te mantengo al tanto cuando logre actualizar
un dato en la Web.
Fantástico. Te sugiero el siguiente procedimiento para verificar básicamente si funciona: crear una cuenta en ThingSpeak (gratis), y vas a ver que en un minuto podés armar una sentencia URL que se ejecuta desde el navegador, y eso te graba el valor en ThingSpeak. Luego meter esa misma URL en la nueva función de Pawn, y ver si se actualizan los valores en ThingSpeak.

Muchas gracias y buen fin de semana.

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2326
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #23 : octubre 18, 2015, 20:11:38 pm »
Buenas tardes Pablo,

Ya es posible usar thingspeak.com, te paso el link al tema del foro abierto para esa función:

http://www.slicetex.com/foro/smf/index.php?topic=160.msg727#msg727

Probalo y seguimos por ahí con esa funcionalidad.

Saludos
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #24 : octubre 18, 2015, 22:46:17 pm »
Fantásticoooo !  Muchas gracias.
Te mando feedback apenas lo haya probado.
Saludos,
Pablo.

Buenas tardes Pablo,

Ya es posible usar thingspeak.com, te paso el link al tema del foro abierto para esa función:

http://www.slicetex.com/foro/smf/index.php?topic=160.msg727#msg727

Probalo y seguimos por ahí con esa funcionalidad.

Saludos

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2326
  • Soporte Técnico
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #25 : octubre 19, 2015, 20:31:33 pm »
Buenas tardes Pablo,

Ya fue actualizado Virtual HMI con la característica que solicitabas.

Ver resumen en: http://www.slicetex.com/foro/smf/index.php?topic=161.0

Citar
...entre los parámetros de configuración del programa, sería muy bueno tener una opción tal como:
- Seleccionar el Panel por defecto  (Basic, Menu Keys, Function, etc, etc). O bien...
- Un checkbox: Iniciar en el último Panel Utilizado
Yo por ejemplo, el panel que siempre uso es "Only LCD", pero tengo que ir y seleccionarlo cada vez...

Estamos en contacto.
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

PabloGa

  • Avanzado
  • ***
  • Mensajes: 103
Re:Ideas para VirtualHMI Android y http/https
« Respuesta #26 : octubre 20, 2015, 08:12:45 am »
Anda perfecto !
Muchas gracias,
Pablo.

Buenas tardes Pablo,

Ya fue actualizado Virtual HMI con la característica que solicitabas.

Ver resumen en: http://www.slicetex.com/foro/smf/index.php?topic=161.0

Citar
...entre los parámetros de configuración del programa, sería muy bueno tener una opción tal como:
- Seleccionar el Panel por defecto  (Basic, Menu Keys, Function, etc, etc). O bien...
- Un checkbox: Iniciar en el último Panel Utilizado
Yo por ejemplo, el panel que siempre uso es "Only LCD", pero tengo que ir y seleccionarlo cada vez...

Estamos en contacto.