0

我正在做一个带有两个灯泡的家庭自动化项目。请参考我使用 xstate 创建的以下状态图。我也有要点,所以你也可以在可视化器中看到它。

https://xstate.js.org/viz/?gist=119995cdff639c5b99df55278a32cf57

状态图

你可以看到我需要处于这种autoInactive状态,这样我才能打开和关闭灯泡,这很好用。问题在于autoActive我仍然想打开和关闭灯泡但使用运动传感器。

所以这就是我想要做的。

  • autoInactive - 用户可以使用 UI 打开和关闭灯泡。
  • autoActive - 用户不能操作灯泡,但运动传感器会打开和关闭它们。

如何使用 xstate 实现这一点?

4

1 回答 1

2

我知道你说过你已经解决了这个问题,但我只是在玩弄看看我将如何解决这个问题 - 所以也许它可以帮助你或其他人。

我基本上以略微不同的方式处理了这个问题(这在您的上下文中可能不起作用)。我认为灯的条件(开或关)实际上与您所处的模式(自动或手动)完全无关。所以我最终得到了两种并行状态,一种用于纯粹控制灯的状态,另一种管理界面状态允许根据您所处的模式对灯进行不同的管理:

在此处输入图像描述

https://xstate.js.org/viz/?gist=4b815be2cc42e6e51b15ba39c99d53dc

于 2021-03-25T18:15:49.203 回答