Mis a jour le 2025-04-14, 12:10

openzwave

C'est le package python-openzwave (à installer avec pip, par exemple)
Documentation : http://openzwave.github.io/python-openzwave/index.html
Options : permet la configuration :
  • from openzwave.option import ZWaveOption
  • options = ZWaveOption(device = '/dev/ttyACM0') : indication du device correspondant au controller.
  • options.set_console_output(False) : supprime le logging sur la console.
  • options.set_logging(True) : indique de logguer
  • options.set_log_file('OZW.log') : indique de logguer dans un fichier
  • options.set_save_log_level('Error') : indique de logguer dans un fichier
  • options.lock() : nécessaire de locker le controller pour démarrer un manager.
Puis, on construit le network qui contient une référence au manager et au controller
  • network = ZWaveNetwork(options)
  • il faut attendre que le network soit ready, ce qui peut prendre des dizaines de secondes :
    while network.state != network.STATE_READY:
      time.sleep(1)
        
  • network.state_str : le statut du réseau en clair, mais utiliser network.state (valeur numérique) dans les programmes.
  • network.controller : le controller (classe ZWaveController)
  • network.home_id : le numéro d'identifiant du network
  • network.home_id_str : l'identifiant du network, mais sous forme de chaîne hexadécimale.
  • network.is_ready : True si le network est prêt pour des opérations.
  • network.manager : le manager qui communique avec la librairie C++.
  • network.nodes_count : le nombre de noeuds sur le réseau.
  • network.nodes : un dictionnaire nodeId vers l'objet node (objet ZWaveNode).
  • network.nodes_to_dict() : renvoie un dictionnaire numéro de node vers dictionnaire du node (au lieu d'un objet node)
  • network.stop() : stoppe le network.
  • network.start() : start le network (il faut beaucoup de temps et vérifier son statut régulièrement).
Controller :
  • network.controller : permet de récupérer le controller.
Node :
  • node.node_id : l'id du node (petit entier)
  • node.type : le type de node en clair
  • node.device_type : le type de device (un peu différent de node.type !)
  • node.capabilities : set des possibilités de chaque node (sous forme de strings)
  • node.command_classes : la liste des commandes possibble pour le node (valeurs entières)
  • node.command_classes_as_string : la liste des commandes possibble pour le node (strings en clair)
  • node.stats : un dictionnaire avec des stats sur la communication avec le node
  • node.name = 'my name' : pour attribuer un nom (lisible avec node.name)
  • node.location = 'my location' : pour attribuer une localisation (lisible avec node.location)
Manager :
  • manager.setNodeName(homeId, nodeId, 'my node name')
  • manager.setNodeLocation(homeId, nodeId, 'my location')
  • manager.setNodeOn(homeId, nodeId)
  • manager.setNodeOff(homeId, nodeId)

Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert