Acceso Remoto Seguro gRPC con grpcurl en Dispositivos PLCnext
ADVERTENCIA: El procedimiento descrito en este blog usa características del PLCnext Runtime que actualmente no son soportadas. Usa estas características bajo tu propio riesgo, y definitivamente no las uses en aplicaciones de producción.
Del proyecto gRPCurl en GitHub:
En versiones recientes de firmware, ha sido posible acceder al servidor gRPC en dispositivos PLCnext Control, pero solo usando clientes gRPC ejecutándose en el dispositivo local. Previos posts del Makers Blog han dado ejemplos de clientes gRPC escritos en C# y Python.
En futuras versiones de firmware, también será posible acceder al servidor gRPC en dispositivos PLCnext Control desde dispositivos remotos. De hecho, esta característica ya está incluida en la versión de firmware 2022.6, pero aún está en desarrollo y no está actualmente soportada. Este artículo describe cómo activar esta característica para propósitos de prueba y desarrollo, usando un cliente gRPC de código abierto llamado gRPCurl.
Ten en cuenta que el servidor gRPC NO debería ser accedido remotamente en aplicaciones de producción actualmente.
Procedimiento
En el dispositivo PLCnext Control (con firmware 2022.6)
- Edita el archivo
/etc/plcnext/Packages.acf.settingsy cambia el valor de la variable de entornoARP_PACKAGE:Arp.Services.GrpcRemotea"true"
En el futuro, este ajuste se hará a través de la página "Servicios del Sistema" de la Gestión Basada en Web.
Verifica el contenido del archivo
/opt/plcnext/config/Services/Grpc/Remote.grpc.config. Deberías ver un valor de"0.0.0.0:50051"para la dirección del socket listener. Esto significa que el servidor gRPC escuchará en el puerto 50051 mensajes de clientes gRPC.Reinicia el PLCnext Runtime.
En el dispositivo remoto
Instala gRPCurl usando las instrucciones en GitHub.
Descarga el directorio
protobuf, conteniendo los archivos de definición de servicio gRPC, del repositorio PLCnext/gRPC en GitHub.En la línea de comandos, emite un comando
grpcurlpara leer la temperatura de la placa en el dispositivo PLCnext Control:
grpcurl -insecure -import-path Documents/plcnext-grpc/protobuf -proto Device/Interface/IDeviceStatusService.proto -d '{"identifier":"Status.Board.Temperature.Centigrade"}' 192.168.1.10:50051 Arp.Device.Interface.Services.Grpc.IDeviceStatusService/GetItem
... donde -import-path es la ruta al directorio protobuf, y la dirección IP es la del dispositivo PLCnext Control.
La respuesta debería ser un objeto JSON conteniendo la temperatura de la placa en grados Celsius:
{
"ReturnValue": {
"TypeCode": "CT_Int8",
"Int8Value": 43
}
}
Preguntas Frecuentes
Esto podría ser posible, pero grpcurl necesitaría ser compilado desde fuente para la plataforma objetivo, y dado el número de dependencias probablemente no será simple.
Para más ayuda ...
Usa grpcurl -help para obtener más información sobre opciones disponibles.
Para preguntas sobre el Servidor gRPC en el PLCnext Runtime, por favor usa el Foro de la Comunidad PLCnext.
Tecnología Industrial
- Monitorización meteorológica remota con Raspberry Pi 3 y PubNub
- Capturar comandos de mando IR en Raspberry Pi sin LIRC: enfoque Python UART
- 5 Beneficios clave del control remoto de producción para la industria moderna
- Acceso Remoto Seguro gRPC con grpcurl en Dispositivos PLCnext
- Gestión de clústeres en PLCnext: Aprovechando Kubernetes para automatización industrial
- Monitorización en tiempo real de PLCnext con dashboards Tableau
- Crea dashboards Power BI desde datos PLCnext en la nube
- Crea dashboards Grafana en tiempo real para PLCnext Control en Azure IoT Hub
- Optimiza aplicaciones Java 9 en PLCnext Control usando Jlink
- Instala el gestor de paquetes APT en PLCnext Linux: Guía paso a paso
- Dominando las Sentencias Using en C#: Importaciones, Alias y Directivas Estáticas