gRPC remoto usando grpcurl
ADVERTENCIA:El procedimiento descrito en este blog utiliza funciones de PLCnext Runtime que actualmente no son compatibles. Use estas funciones bajo su propio riesgo y definitivamente no las use en aplicaciones de producción.
Del proyecto gRPCurl github:
En versiones de firmware recientes, ha sido posible acceder al servidor gRPC en dispositivos PLCnext Control, pero solo usando clientes gRPC que se ejecutan en el dispositivo local. Las publicaciones anteriores del blog Makers han brindado 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 remoto dispositivos. De hecho, esta característica ya está incluida en la versión de firmware 2022.6, pero aún está en desarrollo y actualmente no es compatible. En este artículo, se describe cómo activar esta función con fines de prueba y desarrollo mediante un cliente gRPC de código abierto llamado gRPCurl.
Tenga en cuenta que el servidor gRPC NO debe actualmente se puede acceder de forma remota en las aplicaciones de producción.
Procedimiento
En el dispositivo PLCnext Control (con firmware 2022.6)
- Edite el archivo
/etc/plcnext/Packages.acf.settings
y cambie el valor de la variable de entornoARP_PACKAGE:Arp.Services.GrpcRemote
a"true"
En el futuro, esta configuración se realizará a través de la página "Servicios del sistema" de Administración basada en web.
-
Compruebe 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 del oyente. Esto significa que el servidor gRPC escuchará en el puerto 50051 los mensajes de los clientes gRPC. -
Reinicie PLCnext Runtime.
En el dispositivo remoto
-
Instale gRPCurl siguiendo las instrucciones en Github.
-
Descarga el
protobuf
directorio, que contiene los archivos de definición de servicio gRPC, del repositorio PLCnext/gRPC en Github -
En la línea de comando, emita un
grpcurl
comando para 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 dirección del dispositivo PLCnext Control.
La respuesta debe ser un objeto JSON que contenga la temperatura de la placa en grados Celsius:
{
"ReturnValue": {
"TypeCode": "CT_Int8",
"Int8Value": 43
}
}
Preguntas frecuentes
Esto podría ser posible, pero grpcurl
tendría que construirse desde el origen para la plataforma de destino, y dada la cantidad de dependencias, probablemente no sea simple.
Para obtener más ayuda...
Usa grpcurl -help
para obtener más información sobre las opciones disponibles.
Si tiene preguntas sobre el servidor gRPC en PLCnext Runtime, utilice el foro de la comunidad de PLCnext.
Tecnología Industrial
- C # usando
- Monitoreo remoto del clima usando Raspberry Pi
- Uso del control remoto por infrarrojos con Raspberry Pi sin LIRC
- 5 ventajas del control remoto de la producción
- gRPC remoto usando grpcurl
- ¿Gestión de clústeres en PLCnext?
- Tablero PLCnext de Tableau
- Informes de PLCnext Power BI
- Paneles de PLCnext Grafana
- Aplicación Java en PLCnext Control
- Instalación del administrador de paquetes apt(-get) en PLCnext