我手动编译python-openzwave以使用C++库.
我想用它作为Kodi插件(在Pi 3上运行的OpenELEC),所以不能使用标准安装.我编译了所有内容,下载了缺失six和louie库,现在尝试运行hello_world.py.
我目前的目标结构如下:
- root
- bin
- .lib
- config
Alarm.o
...
libopenzwave.a
libopenzwave.so
libopenzwave.so.1.4
...
- libopenzwave
driver.pxd
group.pxd
...
- louie
__init__.py
dispatcher.py
...
- openzwave
__init__.py
command.py
...
six.py
hello_world.py
Run Code Online (Sandbox Code Playgroud)
但是当我运行hello_world.py时,我收到以下错误 -
Traceback (most recent call last):
File "hello_world.py", line 40, in <module>
from openzwave.controller import ZWaveController
File "/storage/.kodi/addons/service.multimedia.open-zwave/openzwave/controller.py", line 34, in <module>
from libopenzwave import PyStatDriver, PyControllerState
ImportError: No module named libopenzwave
Run Code Online (Sandbox Code Playgroud)
如果我移动libopenzwave.a …
(在我提出问题之前;我不知道是否允许任何人回答我的问题,因为Z波协议应该是机密信息,但如果它确实违反了任何类型的规则,那么随意删除这个帖子.)
我目前正在尝试编写一个C程序,它只是构造一个由原始二进制数据组成的Z波消息,然后将该消息发送到连接Z波控制器的USB接口(我正在使用AEOTEC Z-Stick USB加密狗由Aeon Labs提供).我也使用本指南作为参考,并试图在简单C中重写示例代码.但是,如果你看一下指南,特别是他试图发送给USB控制器的消息:
/*
0x01, 0x09, 0x00, 0x13, nodeId, 0x03, 0x20, 0x01, state, 0x05, checksum
*/
Run Code Online (Sandbox Code Playgroud)
...也许只是我,但似乎缺少来自通常的Z波框架的一些信息.我的猜测是前4个字节代表Home ID后跟节点ID,但是我无法弄清楚'0x03'之后的含义,假设该字节后面的其余部分代表"Basic"命令类(' 0x20',1字节)和相应的"Set"应用程序命令('0x01',1字节).在校验和位之前'0x05'代表什么?那传输头信息呢,为什么不包含它?看起来他不需要包含它......或者我只是在解释数据包完全错误.有人可以开导我吗?
另外,如果您从USB端口读取应用程序层信息(f.ex.中带有open()&read()命令,那么它是否正确无法检索应用程序层信息?)
先感谢您!