Shifu高级功能:实现FSM(有限状态机)
创始人
2025-05-29 20:53:32
0次

介绍

有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机(英语:finite-state automaton,缩写:FSA),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。查看百度百科

FSM由一些状态和转移构成,每个状态表示系统的一种潜在状态,每个转移表示从一个状态到另一个状态的转换。FSM的运行过程是通过接收输入来触发转换的,当FSM接收到一个输入时,它会从当前状态转移到下一个状态。

在工程学中,FSM可以用来描述机器的控制系统。例如,一个机器的控制系统可能有多种状态,比如“运行”、“暂停”、“停止”等。每种状态都有不同的输入和输出,并且有不同的转移规则。例如,当机器处于“运行”状态时,接收到“暂停”的输入可能会使机器转移到“暂停”状态,而接收到“停止”的输入可能会使机器停止运行。

设计

在MQTTDeviceShifu中实现最简单的FSM模型。设备初始状态为空闲状态。在使MQTTDeviceShifu向设备发送控制命令(controlMsg)后,设备由空闲状态转移到忙碌状态(设备处于忙碌状态时,阻止其它控制命令的接收);在设备完成该控制命令时,设备会向MQTT Broker返回完成信息,设备由忙碌状态转移到空闲状态。

file

file

功能

在您的集群中运行下面的命令,向设备发送moving_the_device控制命令(可以通过不同的API选择向不同的topic发布,这里选择topic1对应的get_topicmsg1),设备进入忙碌状态:

sudo kubectl exec -it nginx -- curl -X POST -d 'moving_the_device' http://deviceshifu-mqtt.deviceshifu.svc.cluster.local/get_topicmsg1  

设备在忙碌状态时会拒绝接收新的控制命令(包括拒绝其它topic发来的控制命令或普通消息,但仍然可以通过这些topic获取设备状态等消息)。

在忙碌状态时发送新的rotating_the_device控制命令:

sudo kubectl exec -it nginx -- curl -X POST -d 'rotating_the_device' http://deviceshifu-mqtt.deviceshifu.svc.cluster.local/get_topicmsg1

MQTTdeviceShifu返回如下:

Device is blocked by moving_the_device controlMsg now! 2023-01-02 07:14:28.324501338 +0000 UTC m=+67770.982000572

在设备完成控制命令后,会向MQTT Broker发送该控制命令完成的响应,恢复空闲状态。

使用mosquitto模拟设备完成moving_the_device时,返回对应的完成信息device_finished_moving:

sudo kubectl exec -it deploy/mosquitto -n devices -- mosquitto_pub -h localhost -d -p 1883 -t /test/test1 -m "device_finish_moving" 

此时,设备已恢复空闲状态,可以接收其它控制命令。

使用

根据需要自定义设备控制命令controlMsg及其对应的完成响应,均在examples/mqttDeviceShifu/mqtt_deploy/mqtt_edgedevice.yaml文件中配置。

...
data:...controlMsgs: | # 可选,配置controlMsgs(控制命令和相应完成响应的集合),格式为"key: value"。key是通过任意topic向设备发送的控制命令,设备执行控制命令时进入忙碌状态,拒绝接收其它控制命令,value是设备返回的完成响应,表示设备已完成对应控制命令,恢复空闲状态  Moving_the_device: "Device_finished_moving" # 修改此行Rotating_the_device: "Device_finished_Rotating" ... # 根据自己的需要可继续配置controlMsgs及对应完成响应,只需按照此格式继续添加即可

本文由边无际授权发布

相关内容

热门资讯

玩家必看科普透视挂!神兽透视挂... 玩家必看科普透视挂!神兽透视挂AI工具,神兽多功能好像真的有透视挂工具该软件可以轻松地帮助玩家将神兽...
揭秘透视挂!八戒透视挂AI软件... 揭秘透视挂!八戒透视挂AI软件,八戒多功能本来是真的有透视挂软件八戒脚本下载中分为三种模型:八戒挂靠...
重磅来袭外挂!葫芦岛爱玩麻将外... 重磅来袭外挂!葫芦岛爱玩麻将外挂AI攻略,葫芦岛爱玩麻将多功能确实是真的有外挂攻略1、葫芦岛爱玩麻将...
玩家必看科普辅助器!龙娱辅助器... 玩家必看科普辅助器!龙娱辅助器AIapp,龙娱多功能其实是有辅助器app1、下载好龙娱透视辅助下载之...
玩家必备教程透视挂!众乐乐透视... 玩家必备教程透视挂!众乐乐透视挂AI攻略,众乐乐多功能真是是真的有透视挂攻略1、点击下载安装,众乐乐...
发现玩家透视挂!南京麻将透视挂... 发现玩家透视挂!南京麻将透视挂AI软件,南京麻将多功能果然存在有透视挂软件1、不需要AI权限,帮助你...
分享一款透视器!聚闲游戏透视器... 分享一款透视器!聚闲游戏透视器AI方法,聚闲游戏多功能好像真的有透视器方法1、该软件可以轻松地帮助玩...
一分钟揭秘辅助!会星盟辅助AI... 一分钟揭秘辅助!会星盟辅助AI脚本,会星盟多功能切实是真的有辅助脚本1、该软件可以轻松地帮助玩家将会...
玩家爆料辅助器!杜鹃花辅助器A... 玩家爆料辅助器!杜鹃花辅助器AI攻略,杜鹃花多功能一贯有辅助器攻略亲,关键说明,杜鹃花透视脚本安卓赛...
我来分享辅助器!兴动游戏辅助器... 我来分享辅助器!兴动游戏辅助器AI教程,兴动游戏多功能都是有辅助器教程兴动游戏能透视中分为三种模型:...