物联网开源开发平台 Shifu 开放内测!第一版技术文档发布
Shifu 是由边无际Edgenesis自主研发的物联网开源开发和管理平台,开发者通过Shifu可以轻松实现连接、监控和控制任何物联网设备。
Shifu正式上线GitHub平台,发布第一版技术文档,并开启内测。
热烈欢迎具有创新力的软件工程师和有志于探索物联网业务场景的开发者加入我们,共同构建物联网时代的开发者生态。
技术文档地址(复制链接查看)https://cn.docs.edgenesis.io/
GitHub地址(加入社群可查看代码)https://github.com/Edgenesis/shifu
Shifu技术文档目录:
// 欢迎
// Shifu基本架构
// 快速上手:安装
// 快速上手:DeviceShifu
// 快速上手:接入一个PLC
// 快速上手:添加新驱动
欢迎
Shifu (github页面:https://github.com/Edgenesis/...) 是一个基于Kubernetes的开源物联网开发和管理平台。使用Shifu,开发者可以更简单地连接、监控和控制任何物联网设备。
物联网设备
一个物联网设备是指可以与其他设备、系统、服务进行在线或本地连接和交流的设备,例如:
-
一个制造厂里的机械臂,它接收本地自动化控制系统的命令完成各种动作。
-
一辆自动导引车,它受到操纵者的远程控制。
-
一辆汽车上的温度计,它命令空调升温或降温,同时也发送温度数据到云端。
通信
Shifu兼容不同的通信协议和驱动,它将不同设备的不同形式的请求进行统一,以HTTP的形式对用户开放,使得用户可以更简单地使用设备的功能。
Shifu与用户和设备之间的关系,可以用下图来表示:

Shifu与设备之间的通信: Shifu在持续增加对于新协议和驱动的兼容。对于当前兼容的列表,参见当前兼容的设备协议和驱动。
当前,Shifu支持下列协议与设备进行交互:
1.HTTP
2.MQTT
3.RTSP for streaming
4.Siemens S7
5.TCP socket
Shifu与用户之间的通信: Shifu在持续增加新协议供用户进行选择。对于当前可用协议的列表,参见当前用户可用的协议。
当前,Shifu支持用户使用下列协议进行通信:
1.HTTP
功能
Shifu作为一个物联网设备管理和开发平台,提供以下功能:从设备取得数据。
Shifu基本架构
Shifu是一个Kubernetes原生的平台,它的所有组件都以Pod的形式运行。
下图是Shifu架构的概览:

EdgeDevice
Shifu定义了一个CRD EdgeDevice,它描述了一个连接到Shifu的实际设备的各项信息。
每一个EdgeDevice拥有两个部分:EdgeDeviceSpec 和 EdgeDeviceStatus.
EdgeDeviceSpec包含了设备的基本信息。
它拥有四个元素:

EdgeDevicePhase定义了设备的当前状态:

DeviceShifu
EdgeDevice定义了名为DeviceShifu的Kubernetes Pod. DeviceShifu是一个实际设备的数字化表示,或数字孪生。
每一个DeviceShifu都与一个实际设备相关联。用户与DeviceShifu进行交互,就可以实现与实际设备的交互。
南向 - DeviceShifu接收用户的请求,对请求进行转换并发送到设备。
北向 - DeviceShifu收集设备数据,进行转换并发送给用户端。
Shifu Utils
Shifu在持续加入新的工具类服务来保证不同协议和驱动的兼容。
MQTT Broker
MQTT Broker被用来帮助MQTT信息的订阅和发布。当前,Shifu使用了Mosquitto来实现兼容。
RTSP Client
RTSP Client保证了流媒体信息的传输。
Siemens S7 Suite
Siemens S7 Suite支持了西门子S7系列PLC的操作。当前,Shifu使用了Snap7来实现兼容。
HTTP to SSH driver stub
HTTP to SSH driver stub使得Shifu可以允许用户任意添加新的命令行驱动。
快速上手
依赖项
Shifu需要以下依赖项:
Golang: Golang是Shifu的开发语言。
Docker: Shifu的各项服务以Docker镜像的形式存在。
kind: Kind用于以Docker的方式运行本地的Kubernetes集群。
kubectl: Kubernetes的操作工具。
kubebuilder: Kubebuilder用于安装CRD。
Shifu需要一个kubernetes cluster以启动。使用kind可以做一个快速的搭建:

当cluster创建完成后,我们就可以快速开始使用Shifu了。
快速配置
Shifu提供了shifu_install.yml文件,可以用于快速安装:
分步操作
也可以按照如下步骤进行安装:

安装Shifu成功后,就可以接入新设备了。
快速上手 DeviceShifu
本文将通过一个简单的“helloworld”虚拟设备的例子,来展示如何向Shifu接入设备,生成DeviceShifu,并进行操作。
Helloworld 设备
Helloworld设备只有一个功能:每次收到请求时,返回“hello world”信息。
步骤
1.准备虚拟设备
本次要创建的虚拟设备是一个软件应用,它每次收到HTTP GET请求时,都会返回“Hello_world from device via shifu!” 这条信息。另外,我们还将使用Shifu的数据收集功能对这条信息进行每秒一次的自动收集。
在开发路径中,创建一个helloworld.go文件,包含如下内容:

生成 go.mod 文件:

添加 Dockerfile:

创建镜像

2.准备 EdgeDevice:
EdgeDevice的基本信息:假设所有配置文件都保存在 /helloworld-device/configuration
Deployment 配置:
helloworld-deployment.yaml

硬件和连接信息:
helloworld-edgedevice.yaml

Service:
helloworld-service.yaml

3.准备DeviceShifu
使用下面的配置文件,Shifu将自动生成DeviceShifu的Pod。假设所有配置文件都保存在 /helloworld-device/configuration.
ConfigMap:
deviceshifu-helloworld-configmap.yaml

Deployment:
deviceshifu-helloworld-deployment.yaml

Service:
deviceshifu-helloworld-service.yaml

4.创建 DeviceShifu
下面的步骤都需要要求Shifu平台已经启动并且正在运行
1.加载刚刚构建完成的docker镜像

2.让Shifu通过配置创建DeviceShifu的Pod

3.启动一个nginx的服务器

现在使用kubectl来查看Pods:

集群中应当有以下Pod:

查看创建的EdgeDevice:

DeviceShifu的细节信息以及状态可以通过 describe 命令获取:

4.使用nginx:

5.与DeviceShifu进行交互:
应该得到以下输出:

6.在日志中查看收集到的数据:

现在 helloworld 设备已经完全整合到Shifu框架中,可以通过上述方式来通过DeviceShifu与其交互。
如果需要更新configuration,请先delete再apply configurtaion:

快速上手接入一个PLC
Shifu对西门子S7系列PLC提供了兼容。用户可以使用Shifu,通过HTTP请求对S7 PLC的内存进行修改。本文将介绍如何接入一台西门子S7-1200 1214C PLC并且与它交互。
连接
在接入Shifu之前,PLC应当已经通过以太网完成物理连接,并且拥有一个IP地址。这里我们使用192.168.0.1。
Shifu需要如下例所示的配置文件来获取IP地址与设备类型:plc-deployment.yaml

同时,Shifu还需要一些通用的配置文件:deviceshifu-plc-configmap.yaml

deviceshifu-plc-deployment.yaml

deviceshifu-plc-service.yaml

plc-edgedevice.yaml

plc-service.yaml

向Shifu添加PLC设备,创建和启动DeviceShifu:

操作
Shifu支持通过HTTP请求来编辑PLC内存。
sendsinglebit:
修改一个bit,它需要下列参数:
rootaddress: 内存区域名称,比如M代表Merker,Q代表Digital Output。
address: 内存区域中的地址。
start: 开始位置。
digit: 从开始位置起第几个bit。
value: 需要修改成为的数值.
比如,plc-device/sendsinglebit?rootaddress=M&address=0&start=2&digit=2&value=1 会将 M0.2 的第二个 bit 修改为1.
getcontent:
得到内存区域中一个byte的值,它需要下列参数:
rootaddress: 内存区域名称,比如M代表Merker,Q代表Digital Output。
address: 内存区域中的地址。
start: 开始位置。
比如 plc-device/sendsinglebit?rootaddress=M&address=0&start=2 会返回 M0.2 的一个 byte 的值.
getcpuordercode:
得到PLC的静态信息。
快速上手添加新驱动
如果设备是通过命令行直接调用驱动程序中的可执行文件进行通信,Shifu支持将他直接接入,从而可以远程操作使用这类驱动的设备。
HTTP to SSH driver stub
这个组件的功能是将接收到的HTTP请求转化为对驱动可执行文件的命令并远程执行。
配置
首先,我们需要将带有可执行文件的驱动打包成一个Docker容器镜像。
在Deployment的配置中,Shifu需要下列四个元素:
EDGEDEVICE_DRIVER_SSH_KEY_PATH:SSH key 的路径,Shifu需要通过它来访问驱动的容器。
EDGEDEVICE_DRIVER_HTTP_PORT(可选): 驱动容器的HTTP服务器端口,默认值为11112.
EDGEDEVICE_DRIVER_EXEC_TIMEOUT_SECOND(可选): 一个操作的超时设置。
EDGEDEVICE_DRIVER_SSH_USER(可选): 通过 SSH 连接到驱动程序容器的用户,默认为root。
下面是一个简单的例子:


相关推荐
GMTC 2023全球大前端技术大会北京站(公开)PPT汇总(33份).zip
GMTC 2023全球大前端技术大会北京站(公开)PPT汇总,共33份。 CI_CD 在钉钉前端的实践 Cocos Creator 编辑器技术架构与实践 GMTC内容策划思路及参会攻略 KMM 在MT餐饮 SaaS 中的探索与实践 KoKo.js:简单通用的协同框架 Shifu如何赋能IoT应用开发 SOP 思想提升 DevOps 质量和效率 Vue 中的 TypeScript 支持 Waft:基于WebAssembly和Skia的IoT应用开发框架 大前端监控系统建设与实践 持续交付在字节的实践 从“全干”工程师的发展路径,看前端的定位与价值 大前端精细化治理——组件 ID 机制 低代码原理与标准 二手电商前端团队价值之路 VR设备上大前端技术的探索.pdf 基于LowCodeEngine 的低代码组件体系的建设和实践 基于TypeScript语言服务为你的DSL带来丝滑的开发体验 类型体操——快乐的屠龙术 零代码到低代码:多端小程序制作平台探索与实践 迈向可观测,移动端监控运维体系的演进思考 IoT 跨平台开发框架方案与实现 DevOps 在 B 端业务的实践 ……等等。
飞轮储能系统机侧PQ控制+网侧变流器恒压双闭环控制【附参考文献】
内容概要:本文针对含分布式电源的配电网在遭受自然灾害或外力破坏导致多条线路同时故障的复杂场景,提出并实现了一种将网络重构、孤岛划分与检修进度统筹考虑的多时段故障恢复优化模型。该模型以最小化系统网损和甩负荷惩罚为综合目标,采用混合整数二阶锥规划(MISOCP)方法,通过引入大常数松弛处理支路的投切状态,利用二阶锥松弛技术将非线性的潮流方程转化为凸优化问题,并创新性地应用虚拟流方法确保各供电孤岛内部的连通性。模型在IEEE 33节点系统上进行了仿真验证,能够逐时段生成最优的开关操作序列、负荷恢复策略以及分布式电源协同供电方案,有效提升了配电网在故障期间的韧性与供电恢复能力。文章还深入评述了模型的实现细节,并指出了在负荷分级、无功处理、辐射状约束精确性等方面的潜在改进方向。; 适合人群:电力系统自动化、智能电网、配电网规划与运行等相关领域的研究生、科研人员及从事配电网故障恢复与韧性提升工作的工程技术人员。; 使用场景及目标:①应对由极端天气或外力破坏引发的配电网多点并发故障;②在故障后通过协同优化网络重构与动态孤岛划分,最大化恢复关键负荷供电;③将故障线路的修复时序纳入优化框架,实现检修资源调度与供电恢复路径的联合决策,以提升系统整体恢复效率与韧性。; 阅读建议:本文理论深度较高,综合运用了电力系统分析、数学优化建模与凸松弛技术,建议读者具备扎实的电力系统潮流计算、优化理论和MATLAB/YALMIP建模基础。阅读时应重点关注虚拟流、二阶锥松弛等核心技术的设计原理与实现逻辑,结合文中详细的公式推导与算例结果,深入理解模型的构建过程与求解机制,为进一步研究考虑储能、柔性负荷及多能协同的主动配电网高级恢复策略奠定基础。
风光储协同并网发电系统仿真(Simulink仿真实现)
内容概要:本文围绕“风光储协同并网发电系统仿真(Simulink仿真实现)”展开,重点介绍了一套基于Simulink/MATLAB平台的电力系统仿真体系,涵盖风力发电、光伏发电、储能系统(如电池、飞轮、抽水蓄能)以及制氢系统(PEM电解槽)等多种能源形式的协同建模与控制策略。系统实现了并网与孤岛模式下的协调控制,采用了虚拟同步发电机(VSG)、下垂控制、模型预测控制(MPC)、双闭环控制等多种先进控制算法,并结合多时段故障恢复、网络重构与孤岛划分的优化模型,提升配电网在故障情况下的韧性与恢复能力。文中详细阐述了基于二阶锥松弛与虚拟流理论的混合整数二阶锥规划(MISOCP)建模方法,用于求解含分布式电源的配电网多时段故障恢复问题,确保供电连通性与辐射状结构。整体资源体系丰富,包含仿真模型、参考文献、建模报告及代码实现,适用于科研与教学实践。; 适合人群:具备电力系统、自动化、电气工程等相关背景,熟悉MATLAB/Simulink仿真环境,从事新能源、微电网、智能配电系统研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 构建风光储协同发电系统的动态仿真模型,研究其并网运行特性与稳定性;② 设计与验证微电网在故障情况下的孤岛划分、网络重构与多源协同恢复控制策略;③ 学习并应用二阶锥松弛、虚拟流、混合整数规划等高级建模技术解决电力系统优化问题。; 阅读建议:建议结合提供的参考文献与仿真模型逐步实践,重点关注模型的约束构建、目标函数设计与求解器接口实现;在复现过程中注意变量定义、参数设置与物理意义的一致性,建议拓展加入负荷分级、储能动态调度与通信延迟等实际因素以提升模型实用性。
基于人工神经网络的类噪声环境声音声学识别(Matlab代码实现)
内容概要:本文系统阐述了基于人工神经网络的类噪声环境声音声学识别方法,并提供了完整的Matlab代码实现。研究聚焦于构建和训练人工神经网络模型,以实现对在复杂类噪声环境中采集的声音信号进行高效识别与分类。内容涵盖数据预处理、特征提取、网络模型设计、训练优化等关键技术环节,重点探讨了如何提升模型在低信噪比条件下的鲁棒性与识别精度。该方法融合了现代信号处理技术与深度学习架构,为复杂声学环境下的音频分析提供了有效的解决方案。; 适合人群:具备一定信号处理和机器学习基础,从事音频识别、环境监测、智能安防或相关领域研究的研发人员及研究生。; 使用场景及目标:①应用于智能监控、工业设备故障诊断、城市环境声音感知等需在强噪声背景下识别特定声源的场景;②为科研人员提供一个可复现、可扩展的Matlab实现框架,用于进一步改进和优化声学识别算法。; 阅读建议:建议读者结合所提供的Matlab代码逐段研读,深入理解算法实现细节,重点关注特征工程与网络结构设计部分,并尝试在不同类型的噪声条件下调试模型,以全面评估其泛化能力与实际应用潜力。
政府科技管理者在推动科技成果转化时,如何精准识别高价值科技成果?.docx
政府科技管理者在推动科技成果转化时,如何精准识别高价值科技成果?


