Python wrapper pro OpenZWave knihovny. Pro ověření správné instalace a funkce ZWave sítě používám následující jednoduchý příklad.
Příklad jednoduchého Python skriptu pro ověření funkčnosti Python Open ZWave:
Příklad jednoduchého Python skriptu pro ověření funkčnosti Python Open ZWave:
import sys
import time
import openzwave
from openzwave.node import ZWaveNode
from openzwave.value import ZWaveValue
from openzwave.scene import ZWaveScene
from openzwave.controller import ZWaveController
from openzwave.network import ZWaveNetwork
from openzwave.option import ZWaveOption
# import time
# from louie import dispatcher, All
device="/dev/ttyACM0"
options = ZWaveOption(device, config_path="openzwave/config", user_path=".", cmd_line="")
options.set_log_file("OZW_Log.log")
options.set_append_log_file(False)
options.set_console_output(False)
options.set_save_log_level('Debug')
options.set_logging(True)
network = None
options.lock()
network = ZWaveNetwork(options, autostart=False)
network.start()
for i in range(0,90):
if network.state>=network.STATE_AWAKED:
print( "***** Network is ready")
break
else:
sys.stdout.write(".")
sys.stdout.flush()
time.sleep(1.0)
Definice stavů sítě
- STATE_STOPPED = 0
- STATE_FAILED = 1
- STATE_RESETTED = 3
- STATE_STARTED = 5
- STATE_AWAKED = 7
- STATE_READY = 10
Odkaz zdrojový text netwok.py
https://github.com/OpenZWave/python-openzwave/blob/master/src-api/openzwave/network.py
Odkaz na zdrojový text node.py
https://github.com/OpenZWave/python-openzwave/blob/master/src-api/openzwave/node.pyOdkaz na zdrojový text value.py
https://github.com/OpenZWave/python-openzwave/blob/master/src-api/openzwave/value.py
Seznam node v ZWave síti
for nodeKey in network.nodes:
print("Node "+str(nodeKey)+": ")
print(str(network.nodes[nodeKey]))
Notifikace s pyDispatch
Přijímání notifikací ze ZWave sítě je důležitá funkcionalita pro spolupráci se zařízeními. Následující kód ukazuje příklad přijmutí notifikace při změně stavu sítě.from pydispatch import dispatcher
def handle_network_started_event( sender ):
print("Network started")
dispatcher.connect( handle_network_started_event, signal=ZWaveNetwork.SIGNAL_NETWORK_STARTED, sender=dispatcher.Any )
Alternativou je knihovna louie, která poskytuje to samé, co pydispatch.