npm 包 homebridge-gpio-sensors 使用教程

阅读时长 8 分钟读完

前言

在这个不断发展的技术时代,IoT(物联网)技术越来越普及,人们越来越追求智能化的生活。前端作为这个领域中的一员,也有着不同的贡献。其中,homebridge-gpio-sensors 就是前端类的 npm 包之一,本文将详细介绍这个包的使用教程。

homebridge-gpio-sensors 背景

homebridge-gpio-sensors 是一个用于 Raspberry Pi 的 node.js 家庭桥插件,可使您的 Raspberry Pi 变成一个虚拟家庭桥。你可以使用它来连接到家庭应用程序中设置的各种设备,包括开关,传感器等等,并且这些设备可以在 iPhone,iPad 或 Mac 的 HomeKit 应用程序中控制以及监控。

安装

homebridge-gpio-sensors 可以通过 npm 进行安装,使用以下命令:

简单说明下命令:

  • npm:Node.js 包管理器
  • install:安装命令
  • homebridge-gpio-sensors:npm 包名
  • -g:全局安装

安装完成后,可以在 Raspberry Pi 上运行以下命令来启动 homebridge:

此时,如果一切顺利,homebridge 就会在终端中输出一个二维码。

配置

接下来就是 homebridge-gpio-sensors 的配置部分了。首先,在 Raspberry Pi 上创建一个配置文件夹,使用以下命令:

然后在该文件夹下创建一个名为 config.json 的配置文件,使用以下命令:

在终端中输入以上命令时,nano 是一个 Linux 下的终端文本编辑器,可以使用其他编辑器代替。

以下是一个 config.json 的示例配置,它使用 17(BCM 编号)和 18(BOARD 编号)两个 GPIO 引脚进行设置。其中,17 引脚对应温度传感器,18 引脚对应门磁传感器:

-- -------------------- ---- -------
-
    --------- -
        ------- -------------
        ----------- --------------------
        ------- ------
        ------ ------------
    --
    
    -------------- -
        -
            ------------ ---------------
            ------- ----- --------
            ------- -------
            ------- --
        --
        -
            ------------ ---------------
            ------- ------------ --------
            ------- --------------
            ------- --
        -
    -
-
  • bridge:桥的信息,应该始终包含在配置文件中
  • accessories:你希望通过 homebridge-gpio-sensors 连接到 HomeKit 的所有设备

传感器类别和参数

homebridge-gpio-sensors 支持以下传感器类别和参数:

Door Sensor (门磁传感器)

  • "accessory":必须为 "GPIO-Sensors"
  • "name":设备名称
  • "type":必须为 "door"
  • "gpio":GPIO 引脚号
  • "invert":如果门开关被误标记为 “关”,则设为 true,默认值 false

Contact Sensor (接触式传感器)

  • "accessory":必须为 "GPIO-Sensors"
  • "name":设备名称
  • "type":必须为 "contact"
  • "gpio":GPIO 引脚号

Temperature Sensor (温度传感器)

  • "accessory":必须为 "GPIO-Sensors"
  • "name":设备名称
  • "type":必须为 "temperature"
  • "gpio":GPIO 引脚号
  • "timeout":(以秒为单位)传感器响应时间的最大值,默认值 1
  • "temperature_unit":固定为 "celsius",摄氏度,暂时不支持华氏度( Fahrenheit )

更多传感器类别和参数的详细说明,可以查看该 npm 包的 GitHub 页面。

示例代码

有了上述的准备工作,我们可以使用 homebridge-gpio-sensors 进行一些小功能的实现。以下代码演示了如何利用 homebridge-gpio-sensors 在 HomeKit 应用程序中添加一个门磁传感器。

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

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

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

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

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

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

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

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

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

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

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

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

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

-----

以上代码实现了一个 DoorSensorAccessory 类,表示一个门磁传感器。该类继承自 Accessory 类,其中 getServices() 方法返回该传感器的信息和状态。

到这里,我们已经了解了 npm 包 homebridge-gpio-sensors 的使用教程,同时也了解了如何实现一个基于该包的门磁传感器。希望这篇文章对初学者和快速开发测试的工程师有所启发。

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

纠错
反馈