使用Kuksa Mock Provider执行Actuate设值报错:Provider不存在
解决Kuksa Mock Provider Actuate请求报错“Provider for vss_id X does not exist”
问题现象
本地部署Kuksa Mock Provider后,Kuksa Broker运行正常:
- 执行
GetValues请求可正常获取Vehicle.Body.Windshield.Front.Wiping.System.Mode的数值 - 执行
Actuate请求设置该信号值时,报错Provider for vss_id 105 does not exist,其他支持Actuate的路径也存在相同问题
正常的Get请求及输出
./grpcurl -plaintext -d "{\"signalIds\": [{\"path\": \"Vehicle.Body.Windshield.Front.Wiping.System.Mode\"}]}" localhost:44444 kuksa.val.v2.VAL/GetValues
{ "dataPoints": [ { "timestamp": "2025-07-25T01:30:59.091750070Z", "value": { "string": "STOP_HOLD" } } ] }
报错的Actuate请求及输出
./grpcurl -plaintext -d '{ "signalId": { "path": "Vehicle.Body.Windshield.Front.Wiping.System.Mode" }, "value": { "string": "STOP_HOLD" } }' localhost:44444 kuksa.val.v2.VAL/Actuate
ERROR: Code: Unavailable Message: Provider for vss_id 105 does not exist
解决方案
1. 配置Mock Provider负责目标信号的写入操作
Kuksa Mock Provider默认仅注册为信号的读取提供者,需修改配置文件(通常为config.yaml),将需要执行Actuate的信号添加到actuators列表:
# 示例配置片段 actuators: - path: Vehicle.Body.Windshield.Front.Wiping.System.Mode allowed_values: ["STOP_HOLD", "INTERMITTENT", "CONTINUOUS_LOW", "CONTINUOUS_HIGH"]
2. 重启Mock Provider并加载配置
启动Mock Provider时指定修改后的配置文件:
python -m kuksa_mock_provider --config ./config.yaml
3. 验证信号的VSS元数据权限
确保目标信号在VSS规范中的access属性为READWRITE,若为READONLY则无法执行写入操作。可通过Broker接口查询验证:
./grpcurl -plaintext -d "{\"signalIds\": [{\"path\": \"Vehicle.Body.Windshield.Front.Wiping.System.Mode\"}]}" localhost:44444 kuksa.val.v2.VAL/GetMetadata
检查返回结果中的access字段是否为READWRITE。
内容的提问来源于stack exchange,提问作者user12
相关产品推荐
相关产品推荐

