问题标签 [z-wave]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 您如何通过 C# Post API 进行身份验证,然后存储我从成功登录中收到的 cookie
我正在构建一个 web api 应用程序,它将使用表单数据 ping 远程服务器,响应将返回两个 cookie,我需要对所有未来的 Get 和 Post 方法进行身份验证。我是学徒,所以我想以最好的方式做到这一点,但我不知道从哪里开始。
hardware - Z-Wave 会穿透混凝土墙..???,要选择哪个模块来做到这一点..?
我正在寻找用于物联网应用程序开发的无线 PAN 设置。覆盖面积约为2000平方英尺。这是最好的协议,成本低。
我列出并比较了所有可用的无线技术,有点困惑选择哪一种。
我期待一个低成本、低维护、低功耗的解决方案。
c - 在 ZGM130S(z-wave 模块)中实现电容感应 (CSEN) 外设
我想开发一个基于 ZGM130s SiP 的 z-wave 端节点。是否有示例或文档演示如何使用 z-wave 7.11.0 或 z-wave 7.11.1 SDK 实现 CSEN 外围设备?
我在我的项目中包含“em_csen.h”文件。在此文件中注意到例如代码,包括“em_csen_single.c”文件,但我无法在任何地方找到该文件。请帮我在哪里可以找到。
python - 单元测试;如何模拟一个将要传递给 Python 函数的类对象?
我正在做一个 Python 嵌入式项目,我正在使用 Python-OpenZwave 通过 z-wave 加密狗与传感器通信。而且我需要对我已经实现的功能进行一些单元测试。我在单元测试方面没有那么有经验,并且在单元测试期间遇到了我需要摆脱的依赖问题,因为我实现的其中一些功能与传感器通信,因此只能在我的嵌入式平台上工作.
我需要测试的功能之一如下所示,它需要 2 个参数,第一个是传感器的 ID,第二个是来自 OpenZWave 库的网络类对象。它首先通过函数调用设置我们在类中使用的传感器的 ID,然后从传感器获取所有数据并将其保存为类对象中的 dict,然后我在所有数据中搜索温度值和把它返还;
我需要帮助的事情是如何摆脱来自解析为函数的类对象的依赖关系?我已经尝试过我在网上找到的 Patching、MonkeyPatching、Mock 和 MagicMock 的方法,但都无法使其工作。所以我想要一些关于如何摆脱依赖关系以及在这种情况下我应该使用什么库/工具的建议。
提前致谢
ubuntu - 编译openzwave示例时出错
我已经使用 sudo make 和 sudo make install 在 raspberry 上成功安装了 Open-zwave。在此之后,我想编译这个包中的示例(cpp/example 并做了“make”),但在此之后他向我展示了许多他没有找到的函数。这是错误:
usr/bin/ld: /home/pi/projet_intern/open-zwave/cpp/examples/MinOZW/.lib/Main.o: 在函数
OnNotification(OpenZWave::Notification const*, void*)': Main.cpp:(.text+0x468): undefined reference to
OpenZWave::Manager::HasExtendedTxStatus(unsigned int)' /usr/bin/ld : Main.cpp:(.text+0x48c): undefined reference toOpenZWave::Manager::s_instance' /usr/bin/ld: /home/pi/projet_intern/open-zwave/cpp/examples/MinOZW/.lib/Main.o: in function
main': Main.cpp:(.text.startup+0x44): undefined reference toOpenZWave::Manager::getVersionLongAsString[abi:cxx11]()' /usr/bin/ld: Main.cpp:(.text.startup+0x9c): undefined reference to
OpenZWave::Options::Create(std::__cxx11::basic_string< char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits , std::allocator > const&)' /usr/bin/ld: Main.cpp:(.text.startup+0xd8): 未定义对OpenZWave::Options::Get()' /usr/bin/ld: Main.cpp:(.text.startup+0xf8): undefined reference to
OpenZWave::Options::AddOptionInt(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int)' /usr/bin/ld: Main.cpp:(.text.startup+0x10c): 未定义的引用OpenZWave::Options::Get()' /usr/bin/ld: Main.cpp:(.text.startup+0x12c): undefined reference to
OpenZWave::Options::AddOptionInt(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int)' /usr/bin/ld: Main.cpp:(.text.startup+ 0x140): 对OpenZWave::Options::Get()' /usr/bin/ld: Main.cpp:(.text.startup+0x160): undefined reference to
OpenZWave::Options::AddOptionInt(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int)' /usr/bin/ld: Main.cpp 的未定义引用(.text.startup+0x174): 未定义对OpenZWave::Options::Get()' /usr/bin/ld: Main.cpp:(.text.startup+0x194): undefined reference to
OpenZWave::Options::AddOptionInt(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, int)' /usr/bin/ 的引用ld: Main.cpp:(.text.startup+0x1a8): 未定义对OpenZWave::Options::Get()' /usr/bin/ld: Main.cpp:(.text.startup+0x1c8): undefined reference to
OpenZWave::Options::AddOptionBool(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool)的引用' /usr/bin/ld: Main.cpp:(.text.startup+0x1dc): 未定义的引用OpenZWave::Options::Get()' /usr/bin/ld: Main.cpp:(.text.startup+0x1fc): undefined reference to
OpenZWave::Options::AddOptionBool(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool)' /usr/bin/ld: Main.cpp:(.text.startup+ 0x214): 未定义对OpenZWave::Options::Get()' /usr/bin/ld: Main.cpp:(.text.startup+0x218): undefined reference to
OpenZWave::Options::Lock()' 的引用 /usr/bin/ld: Main.cpp:(.text.startup+0x21c): 未定义对OpenZWave::Manager::Create()' /usr/bin/ld: Main.cpp:(.text.startup+0x22c): undefined reference to
OpenZWave::Manager::AddWatcher(void ( )的引用(OpenZWave::Notification const , void*), void*)' /usr/bin/ld: Main.cpp:(.text.startup+0x27c): 未定义对OpenZWave::Manager::AddDriver(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, OpenZWave::Driver::ControllerInterface const&)' /usr/bin/ld: Main.cpp:(.text.startup+0x2d8): undefined reference to
OpenZWave::Manager::RemoveDriver(std::__cxx11 ) 的引用::basic_string<char, std::char_traits, std::allocator > const&)' /usr/bin/ld: Main.cpp:(.text.startup+0x2f8): 未定义对OpenZWave::Manager::RemoveWatcher(void (*)(OpenZWave::Notification const*, void*), void*)' /usr/bin/ld: Main.cpp:(.text.startup+0x2fc): undefined reference to
OpenZWave::Manager::Destroy( )' /usr/bin/ld: Main.cpp:(.text.startup+0x300): 未定义的引用OpenZWave::Options::Destroy()' /usr/bin/ld: Main.cpp:(.text.startup+0x3cc): undefined reference to
OpenZWave::Manager::RemoveDriver(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /usr/bin/ld: Main.cpp:(.text.startup+0x3e8) : 对OpenZWave::Manager::AddDriver(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, OpenZWave::Driver::ControllerInterface const&)' /usr/bin/ld: Main.cpp:(.text.startup+0x448): undefined reference to
OpenZWave::Manager::GetNodeName[abi:cxx11](unsigned int, unsigned char)' /usr/bin/ld: Main.cpp:(.text.startup+0x478) 的未定义引用:对OpenZWave::Manager::GetNodeManufacturerName[abi:cxx11](unsigned int, unsigned char)' /usr/bin/ld: Main.cpp:(.text.startup+0x4a8): undefined reference to
OpenZWave::的未定义引用Manager::GetNodeProductName[abi:cxx11](unsigned int, unsigned char)' /usr/bin/ld: Main.cpp:(.text.startup+0x514): undefined reference toOpenZWave::Manager::GetValueLabel[abi:cxx11](OpenZWave::ValueID const&, int)' /usr/bin/ld: Main.cpp:(.text.startup+0x53c): undefined reference to
OpenZWave::ValueID::GetTypeAsStringabi:cxx11 const ' /usr/bin/ld: Main.cpp:(.text.startup+0x574): 未定义对OpenZWave::Manager::GetValueHelp[abi:cxx11](OpenZWave::ValueID const&, int)' /usr/bin/ld: Main.cpp:(.text.startup+0x5a0): undefined reference to
OpenZWave::Manager::GetValueUnits[abi:cxx11](OpenZWave::ValueID const&) 的引用' /usr/bin/ld : Main.cpp:(.text.startup+0x5c8): 未定义的引用OpenZWave::Manager::GetValueMin(OpenZWave::ValueID const&)' /usr/bin/ld: Main.cpp:(.text.startup+0x5e0): undefined reference to
OpenZWave::Manager::GetValueMax(OpenZWave::ValueID const&)' /usr/bin/ld: Main.cpp:(.text.startup+0x5f8): 未定义对OpenZWave::ValueID::GetGenreAsString[abi:cxx11]() const' /usr/bin/ld: Main.cpp:(.text.startup+0x668): undefined reference to
OpenZWave::Manager::GetDriverStatistics(unsigned int, OpenZWave ) 的引用::Driver::DriverData*)' /usr/bin/ld: Main.cpp:(.text.startup+0x7b8): undefined reference to `OpenZWave::Manager::s_instance' collect2: error: ld returned 1 exit status make: *** [Makefile:70: /home/pi/projet_intern/open-zwave/cpp/examples/MinOZW/.lib/MinOZW] 错误 1
ubuntu - 编译openzwave代码时与串口有关的错误
我已经使用 sudo make 和 sudo make install 在 raspberry 上成功安装了 Open-zwave。在此之后,我想编译这个包中的示例(cpp/example 并做了 make),但在此之后它向我展示了许多找不到的函数。这是错误:
此外,当尝试执行文件 MinOZW 时,我收到此错误
ssl - 如果没有 --capath 选项,带有 SSL 和通配符证书的 Mosquitto 将无法工作
我有一个 MQTT 服务器,想开始使用 SSL 而不是普通的 MQTT。我正确配置了服务器以使用我的通配符证书,但如果没有 --capath /etc/ssl/certs 选项,它将无法工作。此外,我的 ZwaveJS2MQTT 实例无法通过 SSL 运行(可能是因为缺少证书路径)。我在多台服务器(Debian、OpenVPN...)上使用通配符证书,从未遇到过此类问题。
在订阅者方面:
在发布者方面:
在我的 wildcare 证书上运行测试时,我看到以下错误:
认证路径显示:
python - 新手 Z-Wave Python 读取按钮值
我正在尝试让 Z-Wave 按钮(Fibaro Button FGPB101 id: 0x1000 type: 0x010f)在我的 python 应用程序中工作。
我的 python 代码中的重要部分是为了理解我的问题:
在我的 Pi3 上运行应用程序会启动 ZWaveNetwork,我会看到我的 3 个节点。但是,当我按下按钮时,消息被控制器捕获,但我尝试获取值 ( get_dimmer_level(val_id)
) 始终返回 0 下面是运行应用程序的剪切(第一行与 main() 中的第四行匹配:
等待按键
按钮级别为:0
2021-08-10 11:43:21.293 详细信息,Node002,已接收:0x01、0x0d、0x00、0x04、0x00、0x02、0x05、0x5b、0x03、0x18、0x80、0x01、0x7e , 0x00, 0x4e
2021-08-10 11:43:21.294 详细信息,
2021-08-10 11:43:21.294 信息,Node002,从节点 2 接收到中央场景集:场景 id=1 在 7680 秒内。发送事件通知。
2021-08-10 11:43:21.294 警告,Node002,没有为场景 1 创建 ValueID
2021-08-10 11:43:36.433 详细信息,Node002,已接收:0x01、0x0d、0x00、0x04、0x00、0x02、0x05, 0x5b、0x03、0x19、0x80、0x01、0x7e、
0x00、0x4f 2021-08-10 11:43:36.434 详细信息,
2021-08-10 11:43:36.434 信息,Node002,从节点 2 接收到的中央场景集:场景id=1 在 7680 秒内。发送事件通知。
2021-08-10 11:43:36.434 警告,Node002,没有为场景 1 创建 ValueID
所以我的主要问题是如何在按下时获取按钮值,例如控制器有网络流量,但是在读取值时我没有得到任何不同于 0 的值get_dimmer_value
我在 network.pydef zwcallback(self, args):
函数中做了更多的检测,我可以观察到只有 Node003(可控电源插座)将SIGNAL_VALUE_CHANGED
notificationType 传递到类 ZWaveNetwork 对象中。
FIBARO 按钮和电源插座之间的一个主要区别是 FIBARO 进入睡眠状态,但按下时它会唤醒并向控制器发送消息,这在上述日志中可见。
因此,负责处理消息的 PyManager 似乎没有处理唤醒并发送消息的节点。
PyManager 在初始化期间确实处理了 FIBARO,例如处理了以下通知类型:
- SIGNAL_NODE_ADDED
- SIGNAL_NODE_PROTOCOL_INFO
- SIGNAL_ESSENTIAL_NODE_QUERIES_COMPLETE
- SIGNAL_VALUE_ADDED
- SIGNAL_GROUP
- SIGNAL_NODE_NAMING
这与似乎可以工作的电源插座相同(我还没有尝试控制它)
做更多的挖掘我认为我的问题与 python-openzwave repo 使用基于 1.4 版的旧 openzwave 库有关:
而如果它是我构建和安装的最新 openzwave 库:
我们知道我必须使用 1.6 版本才能处理 COMMAND_CLASS_CENTRAL_SCENE