You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用require引入homeassistant-ws库并解决NodeJS使用问题

Home Assistant NodeJS WebSocket库homeassistant-ws使用指南(require引入方案)

问题1:是否必须用import?能否用require引入?

可以用require引入,不需要强制使用ES模块的import语法。该库支持CommonJS规范,直接通过require就能导入,只是导入方式和你熟悉的home-assistant库略有区别。

问题2:解决引入后的报错及完整可用示例

你遇到的报错是由于导入方式错误+变量重复声明导致的,以下是正确的require引入方案及完整代码:

1. 先安装依赖

npm install homeassistant-ws

2. 完整代码示例

// 正确用require导入库的核心方法
const { createConnection } = require('homeassistant-ws');

// Home Assistant连接配置
const haConfig = {
  host: '127.0.0.1', // 注意:不需要加http前缀,库默认使用ws/wss协议
  port: 8123,
  token: '你的Home Assistant长期令牌',
  ignoreCert: true // 若使用自签名证书的HTTPS,需要开启此选项
};

// 建立连接并执行操作的异步函数
async function haWebSocketDemo() {
  try {
    // 创建WebSocket连接
    const connection = await createConnection(haConfig);
    console.log('成功连接到Home Assistant');

    // 示例1:获取所有实体的状态
    const allStates = await connection.getStates();
    console.log('所有实体状态:', allStates);

    // 示例2:调用Home Assistant服务(例如打开客厅灯)
    await connection.callService('light', 'turn_on', {
      entity_id: 'light.living_room'
    });
    console.log('已调用开灯服务');

    // 示例3:监听实体状态变化事件
    connection.subscribeEvents(event => {
      if (event.event_type === 'state_changed') {
        const { entity_id, new_state } = event.data;
        console.log(`实体${entity_id}状态变为: ${new_state.state}`);
      }
    });

  } catch (error) {
    console.error('连接或操作失败:', error.message);
  }
}

// 执行连接函数
haWebSocketDemo();

报错原因解析

  • SyntaxError: Identifier 'hass' has already been declared:你重复声明了hass变量,比如同时使用import和require导入,或者多次声明同名变量,删除重复声明即可解决。
  • TypeError: hass is not a function:该库的默认导出不是构造函数,而是包含createConnection等工具方法的对象,直接将导入的对象当作函数调用就会触发这个错误,正确做法是解构导出的createConnection方法来使用。

内容的提问来源于stack exchange,提问作者sceptre357

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 09:07:25