pondělí 26. prosince 2016

Python Open ZWave

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:

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.py

Odkaz 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. 


Žádné komentáře:

Okomentovat