大屏使用问题_物联网平台

如何在大屏内展示告警列表?

答案

💡提示

如果需要将告警列表直接展示在大屏内,可以使用大屏组件"分页表格(适合告警或者设备列表)

"搭配动态接口使用。

动态接口配置:

大屏操作:

💡提示

大屏内实现告警显示的组件名为“分页表格(适合告警或者设备列表)”,数据源接口对应过滤器名称为“告警记录列表带搜索条件(适合分页表格)”。


如何在大屏内进行属性下发?

答案

💡提示

如果需要在大屏内对设备数据进行控制,首先要保证设备物模型属性为读写,并使用"联动设备文本"组件达到对应的效果。

配置数据源:

💡注意

默认接口只会返回10个设备的消息,如果需要请求的设备数据超过10个,可以手动修改接口params里面的pagesize为合理数值。

大屏操作:

💡注意

使用“联动设备文本”搭配公共接口时,如果将接口过滤器写在公共接口内,则需要每一个组件配置一个公共接口,使用时,会重复配置,但可以配置不同的请求频率。也可以将接口过滤器写在组件过滤器内,使用时,只需要选择同一个公共接口,过滤器写在组件内,配置该公共接口的组件只会调用一次 ,且请求频率一致。

第一种方式(多个公共接口,支持不同频率):

第二种方式(单个公共接口,推荐,请求频率一致):

过滤器:

💡提示

示例过程过滤器可以通过修改filterDeviceData内容,返回不同的控制项,不使用过滤器会返回所有设备所以物模型属性的控制。该示例建议使用公共接口。

function filterDeviceData(data, deviceName, functionNames) {
    // 确保 functionNames 是数组,如果是字符串则转为单元素数组
    var names = Array.isArray(functionNames) ? functionNames : [functionNames];
    
    // 过滤 items
    var filteredItems = [];
    for (var i = 0; i < data.items.length; i++) {
        var item = data.items[i];
        if (item.name === deviceName) {
            // 复制 item 避免修改原对象
            var newItem = {};
            for (var key in item) {
                if (item.hasOwnProperty(key)) {
                    newItem[key] = item[key];
                }
            }
            // 过滤 timeseries
            if (newItem.timeseries && Array.isArray(newItem.timeseries)) {
                var filteredTs = [];
                for (var j = 0; j < newItem.timeseries.length; j++) {
                    var tsEntry = newItem.timeseries[j];
                    var funcName = tsEntry.thingsModel && tsEntry.thingsModel.functionName;
                    // 检查 functionName 是否在允许列表中
                    if (funcName && names.indexOf(funcName) !== -1) {
                        filteredTs.push(tsEntry);
                    }
                }
                newItem.timeseries = filteredTs;
            }
            filteredItems.push(newItem);
        }
    }
    
    // 构造返回结果
    return {
        total: filteredItems.length,
        items: filteredItems
    };
}
//mqtt为设备名称只填一个  测试下发为物模型属性名称可多选  过滤器其他内容不变
res = filterDeviceData(res, "mqtt", ["测试下发"]);
delete res.items[0].name;
return res;

如果当前平台为https访问,但数据源配置第三方接口请求为http,请求提示报错应该如何处理?

答案

💡提示

由于浏览器会将http请求自动升级为https请求,所以数据源请求第三方接口会显示报错,可以利用平台地址nginx服务进行代理,文档以百度为示例。

location /baidu/ {
            proxy_pass  https://www.baidu.com;
            proxy_connect_timeout  5s;
            proxy_read_timeout  300s;
            proxy_send_timeout  300s;
            proxy_ssl_server_name on; 
            proxy_set_header Host $http_host;                            
            proxy_set_header X-Real-IP        $remote_addr;             
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  	        proxy_set_header X-Forwarded-Proto $scheme;                  
  	        proxy_set_header X-Forwarded-host $server_name;             
  	        proxy_set_header X-Forwarded-Port $server_port;       
	    }

💡提示

当配置完成后,单机部署需要重启平台。微服务只需要重启nginx服务,假设平台地址为https://www.test.com,数据源就可以配置图中所示:


云腾五洲-AI助理