npm 包 homebridge-logic-board 使用教程

随着智能家居的发展,人们对家居设备的要求越来越高。homebridge-logic-board 是一个基于 node.js 的 npm 包,可以帮助开发者快速地将家居设备接入 HomeKit,支持自定义逻辑和触发器。本文将详细介绍如何使用 homebridge-logic-board,包括安装、配置以及实现自定义逻辑和触发器的方法。

安装

在开始之前,需要先安装 Node.js 和 Homebridge。Homebridge 是一个基于 Node.js 的智能家居网关,它允许用户使用 iOS 设备控制非 HomeKit 认证的设备。要安装 Homebridge,可以运行以下命令:

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

安装 Homebridge 后,可以使用以下命令安装 homebridge-logic-board:

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

安装成功后,可以通过运行以下命令来验证是否已成功安装 homebridge-logic-board:

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

配置

在安装 homebridge-logic-board 之后,需要在 Homebridge 的 config.json 文件中做一些配置。以下是一个示例配置:

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

在配置中,需要指定以下内容:

  • accessory:必须是 LogicBoard,代表此配置是 homebridge-logic-board 的配置。
  • name:此逻辑板的名称。
  • triggers:触发器列表,用于触发一些操作。
  • conditions:条件列表,用于决定触发器是否可以触发。

triggersconditions 中的每个对象都有以下属性:

  • name:名称,可以是任何字符串,用于在 HomeKit 中标识触发器或条件。
  • type:类型,可以是 time(时间型)或 event(事件型)。
  • value:值,在时间型触发器中表示时间,在事件型触发器中表示事件路径(详见后文)。
  • action:如果是触发器,需要指定一个 action 数组,每个元素都代表一个操作。每个操作由以下三个属性组成:
    • service:服务类型,例如 LightbulbSwitch 等。
    • characteristic:特征类型,例如 OnBrightnessContactSensorState 等。
    • value:特征值,例如 true50contact 等。
  • threshold:如果是条件,需要指定一个 threshold,代表条件的阈值。比较运算符可以是 <<==>>=

实现自定义逻辑和触发器

在配置完毕后,可以通过编写 JavaScript 代码来实现自定义逻辑和触发器。以下是一个例子:

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

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

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

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

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

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

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

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

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

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

在此例子中,我们定义了一个 CustomAccessory 类,它继承自 homebridge-logic-board 的 Accessory 类,并实现了自己的 getServices 方法。此类有以下属性:

  • log:用于记录日志。
  • name:逻辑板的名称。
  • conditions:条件列表,来自 config 参数。
  • triggers:触发器列表,来自 config 参数。
  • now:一个函数,返回当前时间的字符串表示(例如 "19:01:23")。

此类有以下方法:

  • foo():一个用于测试的方法,返回字符串 "bar"
  • evaluateCondition(condition):给定一个条件,返回条件是否满足。详见 config.json 中的 conditions 属性。
  • handleTrigger(trigger):执行一个触发器中的操作。详见 config.json 中的 triggers 属性。
  • getServices():返回一个由 Service 和 Characteristic 组成的数组,用于让 homebridge 使用这个 accessory。

在以上例子中,我们添加了一个 Lightbulb 服务。在 handleTrigger 方法中,我们找到了对应的 ServiceCharacteristic,并将值设为对应的 value

getServices 方法中,我们创建了一个 Lightbulb service,并添加了一个 getter,让 accessories 数组可以被 homebridge 访问,因为 homebridge 需要通过 accessories 来获取所有的 service。

最后,我们实现了一个自定义函数 getSensorValue,用于根据事件路径获取特定的 event。例如,在 evaluateCondition 方法中,我们得到了 value 属性,这是一个事件路径,例如 state.huesensor.lightlevel。该函数可以通过递归地获取 value 属性中的元素来获取特定的 event 的值。

总结

homebridge-logic-board 提供了一种简单的方式,可以让开发者将非 HomeKit 认证的设备接入 HomeKit,支持自定义逻辑和触发器。使用 homebridge-logic-board,开发者可以在其自己的 JavaScript 文件中编写自定义方法,并通过逻辑板在 HomeKit 中控制非常规设备。本文详细介绍了 homebridge-logic-board 的安装和配置方法,并提供了一个完整的 JavaScript 代码示例,介绍了自定义方法的实现。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/600566a981e8991b448e2e06


猜你喜欢

  • npm 包 @turbolent/aor-postgrest-client 使用教程

    介绍 @turbolent/aor-postgrest-client 是一个基于 React-admin 和 postgREST 的前端数据请求库。它可以方便地将 postgREST 的 REST A...

    3 年前
  • npm 包 electron-ipc-webview-stream 使用教程

    electron-ipc-webview-stream 是一个基于 Electron 环境下的 Node.js 模块,它提供了一种实现 Electron 主线程和渲染进程之间的跨域通信的方式,可以轻松...

    3 年前
  • npm 包 vue-sub 使用教程

    npm 包 vue-sub 使用教程 如果您正在使用 Vue,那么您可能会遇到需要子组件向父组件发送消息的场景。这时,npm 包 vue-sub 可以方便地解决你的问题。

    3 年前
  • npm 包 jm-tag 使用教程

    一、前言 在前端开发过程中,我们经常会遇到需要添加标签的需求。而 npm 包 jm-tag 就是一个方便快捷地添加标签的工具。本文将详细讲解 jm-tag 的使用方法,并且通过示例代码指导读者如何快速...

    3 年前
  • npm 包 vue-awesome-swiper-wx 使用教程

    在前端开发中,轮播图组件经常被用来展示图片和广告。而 Swiper 是一个流行的 JavaScript 轮播图组件,可以用来创建优雅的幻灯片、卡片轮播等。本文将介绍如何使用 npm 包 vue-awe...

    3 年前
  • npm 包 grif-layout 使用教程

    前言 在 CSS 中,布局一直是一个棘手的问题。没有了解过网页设计的人可能认为这个工作很简单,但实际上,由于不同设备及浏览器的差异,为了使网站看起来美观且易于使用,布局会耗费前端工程师很多精力。

    3 年前
  • npm 包 database-types 使用教程

    在前端开发中,我们经常需要向后台的数据库中存储和获取数据,在此过程中,使用数据库类型可以大大提高我们的开发效率。database-types 是一个npm包,它可以帮助我们连接不同类型的数据库,封装数...

    3 年前
  • npm 包 roudokuka 使用教程

    在前端开发中,我们经常会需要读取和操作文本文件,但是 JavaScript 并没有提供强大的文本操作功能。这时候,我们可以使用一些第三方库来实现这些功能。其中,npm 包 roudokuka 是一款非...

    3 年前
  • npm 包 local-session-storage 使用教程

    介绍 local-session-storage 是一个轻量级的本地存储库,用于在客户端存储数据。与其他存储库不同的是,local-session-storage 有一个灵活的选择,可以在本地存储中使...

    3 年前
  • npm 包 ng-list-antd 使用教程

    ng-list-antd 是一个基于 Angular 和 Ant Design 的列表组件,它可以让你方便快捷地构建常见的列表展示页面。本文将为大家介绍如何安装和使用这个 npm 包。

    3 年前
  • npm 包 chrono-ddmm-refiner 使用教程

    介绍 chrono-ddmm-refiner 是一个基于 chrono.js 开发的 npm 包,主要用于解析日期和时间。它的特点是支持在日期中使用 dd/mm 格式,并能够根据上下文自动判断年份。

    3 年前
  • npm 包 cousteau 使用教程

    在前端开发中,npm 是常用的包管理工具。它可以方便地引入第三方库,并提供了许多实用的命令。其中,cousteau 是一个强大的 npm 包,可以方便地在终端中生成漂亮的 ASCII 艺术。

    3 年前
  • npm 包 hyprmodel 使用教程

    在前端开发中,数据模型是一个非常重要的概念。有时候我们需要在不同的页面中对同一个数据模型进行修改和操作,这时候 hyprmodel 包就能够发挥出它的巨大作用。 hyprmodel 是一个可以在任何 ...

    3 年前
  • 前端必备:npm包alfred-yarn-packages的使用教程

    前言 在前端开发中,npm包扮演着重要的角色。但是,当我们需要在大量的npm包中寻找所需时,会不会感到头疼呢?这时,alfred-yarn-packages就能为我们提供帮助。

    3 年前
  • npm 包 react-did-catch 使用教程

    简介 在 React 应用程序中,当出现错误时,会导致整个应用程序崩溃。要解决这个问题,我们可以使用一个叫做 react-did-catch 的 npm 包。 react-did-catch 是一种 ...

    3 年前
  • npm 包 egg-kue 使用教程

    在前端开发中,如果需要处理后端的异步任务,一般使用消息队列进行解耦。消息队列通常分为两种:基于容器的消息队列和分布式消息队列。基于容器的消息队列如 RabbitMQ、Kafka 等,提供一些可用的容器...

    3 年前
  • npm包 not-bundled-npm 使用教程

    1. 什么是 not-bundled-npm not-bundled-npm 是一个专门针对非捆绑 JavaScript 模块的 npm 包,它的功能是将指定的非捆绑 npm 模块打包成一个整体文件,...

    3 年前
  • npm 包 tanbo-ui 使用教程

    介绍 Tanbo-ui 是一款基于 Vue.js 的 UI 组件库,拥有一系列常用的组件,可以帮助我们快速地开发网页。 安装 首先需要在项目中安装 tanbo-ui: --- ------- ----...

    3 年前
  • npm 包 @stomp/ng-stomp 使用教程

    简介 @stomp/ng-stomp 是一个基于 Angular 的 STOMP 客户端库,用于实现与消息代理之间的实时双向通信,如 Apache ActiveMQ等。

    3 年前
  • npm 包: gitlab-estimate-analyzer 使用教程

    Gitlab 是一个非常流行的代码托管平台,使得开发团队更加高效地合作和管理代码。而 gitlab-estimate-analyzer 这个 npm 包可以让我们在 GitLab 上更加方便地估算和跟...

    3 年前

相关推荐

    暂无文章