npm 包 homebridge-calendar 使用教程

阅读时长 8 分钟读完

随着家庭自动化技术的发展,越来越多的人开始使用智能家居设备,比如智能灯泡、智能音响和智能窗帘等等。但是,这些设备都需要一些输入才能工作,因此建立一个智能家庭控制中心变得越来越重要。npm 包 homebridge-calendar 就可以帮助你实现这个目标。

homebridge-calendar 是一个可以与 Apple Homekit 兼容的插件,它能让你把 Google 日历中的活动同步到 Apple Homekit 中,比如你可以设置一个特定的活动,比如“家庭影院时间”,当这个活动开始时,homebridge-calendar 可以控制电视自动打开,并把灯光设置为适当的亮度。

安装和配置

在安装 homebridge-calendar 之前,你需要先安装 Node.js 和 homebridge,如果还没有安装过,请先安装它们并设置好相应环境变量。

安装 homebridge-calendar 可以使用 npm 命令:

安装完成后,我们需要配置 homebridge-calendar。在 homebridge 的配置文件中,添加以下内容(请根据自己的 Google 日历信息修改):

-- -------------------- ---- -------
-
  ------------ -
    -
      ----------- -----------------
      ------- ------- ----------
      ------ --------------------------------------------------------------------------------------------
      -------- ------
      --------- --
      ---------- -
        -
          ------- -------
          ------- ---------
          ---------- -----
          ----------- ------
          ----------- ----
          ----------- -
            -
              ------- -----
              ----------------- -----
              ---------- -----
              ----------- -----
            --
            -
              ------- -----
              ----------------- -------------
              ---------- ---
              ----------- -
            -
          -
        -
      -
    -
  -
-

其中:

  • url:你的 Google 日历地址,需要替换其中的 [email_address][your_calendar_id]
  • range:要查询的日历范围(单位:秒),默认为 86400 秒,也就是一天。
  • options:列表,包含了 homebridge-calendar 能够识别的日历活动。

对于每个选项,我们需要提供以下信息:

  • name:活动的名称。
  • type:控制这个活动的类型,这里我们用 Switch,即开关。
  • onValueoffValue:活动开始时和结束时的状态。
  • duration:活动持续的时间(单位:分钟)。
  • services:这个活动对应的服务,比如电视和灯光。

实现一个例子

为了验证 homebridge-calendar 是否工作正确,我们现在来实现一个例子。假设我们要实现“影院时间”这个活动,让它可以控制电视和灯光。

首先,我们需要安装 homebridge 和 homebridge-calendar:

接下来,我们编辑 homebridge 的配置文件,添加以下内容:

-- -------------------- ---- -------
-
  --------- -
    ------- -------------
    ----------- --------------------
    ------- ------
    ------ ------------
  --

  ------------ -
    -
      ----------- -----------------
      ------- ------- ----------
      ------ --------------------------------------------------------------------------------------------
      -------- ------
      --------- --
      ---------- -
        -
          ------- -------
          ------- ---------
          ---------- -----
          ----------- ------
          ----------- ----
          ----------- -
            -
              ------- -----
              ----------------- -----
              ---------- -----
              ----------- -----
            --
            -
              ------- -----
              ----------------- -------------
              ---------- ---
              ----------- -
            -
          -
        -
      -
    -
  -
-

这里我们只保留了上面的 content 字段。其中,[email_address][your_calendar_id] 需要替换成你的 Google 日历地址中对应的信息。

接下来,我们编写一个简单的 JavaScript 脚本,监听 homebridge 和 Google 日历中“影院时间”活动的状态:

-- -------------------- ---- -------
----- ------- - ----------------------------------

----- ----------- - -------------------------

----- -------- ----------------------- -
  ----- -------- - ----- ---------
    ---- -----------------------------
    ----- ----
  ---

  ----- --------- - ----------------------------------- -- --------------------- --- ------

  -- ------------ -
    ----- --- --------- --------- ----- ---- ----- ----------
  -

  ----- ------- - ------------------------------- -- ------------ --- ----------------------------------------

  -- ---------- -
    ----- --- --------- ------ ------- ----- --- ---------- ----------
  -

  ----- -------------- - ------------------------------------------- -- ------------------- --- ----------------------------------------

  -- ----------------- -
    ----- --- --------- -------------- ----- --- ------ -------- ----------
  -

  ------ ---------------------
-

------ ---------- -
  ----- --------- - ----- ------------------------

  ----------------- ---------- -
    ----- -------- - ----- ------------------------
    --------------- ------- ----------
    -- --------- --- ----- -- --------- --- ----- -
      ---------------------
    - ---- -- --------- --- ---- -- --------- --- ------ -
      ---------------------
    -
    --------- - ---------
  -- ------
-----

这个脚本会查询 homebridge 中的“电视”服务的状态(通过 Homekit 的 API),顺便输出一些信息。每隔 1 秒钟查询一次,“影院时间”开始后 2 分钟,会自动打开电视和灯光。

接下来,我们执行这个脚本:

prevState的状态值从 false 变成 true 时,输出信息“电视已打开”,而当其状态变为 false 时,输出信息“电视已关闭”。

这证明了我们的 homebridge-calendar 插件运作正常。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671a730d0927023822677

纠错
反馈