Become a leader in the IoT community!
New DevHeads get a 320-point leaderboard boost when joining the DevHeads IoT Integration Community. In addition to learning and advising, active community leaders are rewarded with community recognition and free tech stuff. Start your Legendary Collaboration now!
Hi I think your problem is with the device name you’re using in your code, make sure the device name ‘LightSensor’ matches exactly what the Thread network recognizes.
it looks like the code assumes the door sensor is always node 1, have you confirmed the node ID of the door sensor? Nodes might not always be in a sequential order. You might need to scan the network for the correct node ID. Also, openzwave.network.ZWaveNetwork and openzwave.options.ZWaveOption might require proper initialization parameters. Make sure to configure the Z-Wave options correctly. Here’s a bit more detailed setup:
“`python
import openzwave.option
import openzwave.network
import time
options = openzwave.option.ZWaveOption(“/dev/ttyUSB0″, config_path=”/path/to/openzwave/config”, user_path=”.”, cmd_line=””)
options.lock()
network = openzwave.network.ZWaveNetwork(options, log=None)
network.start()
for i in range(0, 300):
if network.state >= network.STATE_AWAKED:
break
time.sleep(1)
print(“Network state:”, network.state)
for node in network.nodes:
print(f”Node {node.node_id}: {node}”)
door_sensor = None
for node in network.nodes:
if node.product_name == “Your Door Sensor Product Name”:
door_sensor = node
break
if door_sensor:
try:
door_status = door_sensor.get_sensor_binary_value()
print(f”Door Status: {door_status}”)
except Exception as e:
print(f”Error reading door status: {e}”)
else:
print(“Door sensor not found”)
network.stop()
“`
@bosslady0299 it’s good practice to ensure the network is fully initialized before trying to access nodes. Sometimes the initialization might take a bit longer. You might want to increase the waiting time or add additional checks.
Hey @bosslady0299 , it seems like the code assumes the device name is always `LightSensor`. Have you confirmed the device name and address? Devices might not always have straightforward names. You might need to discover the device first and make sure the Thread network is fully initialized and the devices are properly discovered before accessing them.
For instance:
“`python
import openthread
import time
ot_instance = openthread.Instance()
ot_instance.factory_reset()
try:
ot_instance.thread_start()
# Wait for the Thread network to be initialized
time.sleep(5)
device_list = ot_instance.device_manager.get_device_list()
light_sensor = None
for device in device_list:
print(f”Discovered device: {device}”)
if device.name == ‘LightSensor’:
light_sensor = device
break
if light_sensor:
light_level = light_sensor.read_attribute(‘LightLevel’)
print(f”Light Level: {light_level}”)
else:
print(“Light sensor not found”)
except Exception as e:
print(f”Error reading light level: {e}”)
finally:
ot_instance.thread_stop()
“`
Okay @camila_9900 should I scan for device name
Thanks @darkai042 it’s already been resolved, I updated the code to scan for the correct node and added some initialization checks. Here’s the updated version:
“`python
import openzwave.option
import openzwave.network
import time
options = openzwave.option.ZWaveOption(“/dev/ttyUSB0″, config_path=”/path/to/openzwave/config”, user_path=”.”, cmd_line=””)
options.lock()
network = openzwave.network.ZWaveNetwork(options, log=None)
network.start()
for i in range(0, 300):
if network.state >= network.STATE_AWAKED:
break
time.sleep(1)
print(“Network state:”, network.state)
door_sensor = None
for node in network.nodes.values():
print(f”Node {node.node_id}: {node}”)
if node.product_name == “Your Door Sensor Product Name”:
door_sensor = node
break
if door_sensor:
try:
door_status = door_sensor.get_sensor_binary_value()
print(f”Door Status: {door_status}”)
except Exception as e:
print(f”Error reading door status: {e}”)
else:
print(“Door sensor not found”)
network.stop()
“`
CONTRIBUTE TO THIS THREAD