📖 Scenario: You are setting up a simple home automation system using Z-Wave devices. Z-Wave is a wireless protocol used to connect smart home devices like lights, sensors, and locks. Your goal is to organize and control these devices using a basic data structure and commands.
🎯 Goal: Build a simple program that stores Z-Wave devices with their status, sets a control threshold, filters devices based on this threshold, and displays the filtered list.
📋 What You'll Learn
Create a dictionary of Z-Wave devices with their battery levels
Add a battery level threshold variable
Filter devices with battery levels above the threshold
Print the filtered devices
💡 Why This Matters
🌍 Real World
Home automation systems use Z-Wave to connect and control smart devices wirelessly. Managing device status like battery levels helps keep the system reliable.
💼 Career
Understanding how to organize and filter device data is important for roles in IoT development, smart home engineering, and DevOps for connected devices.
Progress0 / 4 steps
1
Create a dictionary of Z-Wave devices
Create a dictionary called zwave_devices with these exact entries: 'Door Lock': 85, 'Motion Sensor': 40, 'Thermostat': 75, 'Light Switch': 60, 'Water Sensor': 30. The numbers represent battery levels in percent.
IOT Protocols
Hint
Use curly braces {} to create a dictionary with device names as keys and battery levels as values.
2
Set a battery level threshold
Create a variable called battery_threshold and set it to 50. This will be used to filter devices with battery levels above this value.
IOT Protocols
Hint
Just assign the number 50 to the variable battery_threshold.
3
Filter devices with battery above threshold
Create a new dictionary called active_devices that includes only devices from zwave_devices with battery levels greater than battery_threshold. Use a dictionary comprehension with device and battery as variable names.
IOT Protocols
Hint
Use a dictionary comprehension: {device: battery for device, battery in zwave_devices.items() if battery > battery_threshold}.
4
Display active devices
Write a print statement to display the active_devices dictionary.
IOT Protocols
Hint
Use print(active_devices) to show the filtered devices.
Practice
(1/5)
1. What is the main purpose of Z-Wave in home automation?
easy
A. To replace Wi-Fi for internet browsing
B. To provide wired internet to smart devices
C. To charge smart home devices wirelessly
D. To wirelessly connect and control smart home devices
Solution
Step 1: Understand Z-Wave's role
Z-Wave is designed to connect smart devices wirelessly in a home.
Step 2: Identify the correct purpose
It creates a mesh network to control devices, not to provide internet or charging.
Final Answer:
To wirelessly connect and control smart home devices -> Option D
Quick Check:
Z-Wave purpose = wireless device control [OK]
Hint: Z-Wave connects devices wirelessly, not internet or power [OK]
Common Mistakes:
Confusing Z-Wave with Wi-Fi
Thinking Z-Wave provides internet
Assuming Z-Wave charges devices
2. Which of the following is the correct way to describe Z-Wave's network type?
easy
A. Mesh network where devices relay signals to extend range
B. Star network where all devices connect to a central hub only
C. Ring network where devices connect in a circle
D. Bus network where devices share a single communication line
Solution
Step 1: Recall Z-Wave network type
Z-Wave uses a mesh network to allow devices to pass signals through each other.
Step 2: Match network type to description
Mesh network fits because it extends range by relaying signals, unlike star or ring.
Final Answer:
Mesh network where devices relay signals to extend range -> Option A
Quick Check:
Z-Wave network = mesh [OK]
Hint: Z-Wave uses mesh, not star or ring networks [OK]
Common Mistakes:
Choosing star network thinking hub controls all directly
Confusing mesh with ring or bus networks
Not knowing how signal range extends
3. Given this Z-Wave device status code list: status_codes = {"00": "Offline", "01": "Online", "02": "Sleeping"} What will be the output of print(status_codes.get("01"))?
medium
A. Sleeping
B. Offline
C. Online
D. None
Solution
Step 1: Understand dictionary get method
The get method returns the value for the given key if it exists.
Step 2: Check key "01" in dictionary
Key "01" maps to "Online" in the status_codes dictionary.
Final Answer:
Online -> Option C
Quick Check:
status_codes["01"] = Online [OK]
Hint: Dictionary get returns value for key or None if missing [OK]
Common Mistakes:
Confusing keys and values
Expecting output to be key instead of value
Assuming get returns None for existing keys
4. You wrote this Z-Wave device control command: zwave.send_command(device_id, "turn_on") But the device does not respond. What is the most likely error?
medium
A. The device_id is incorrect or not included in the network
B. The command string "turn_on" is invalid syntax
C. Z-Wave does not support turning devices on or off
D. The send_command function requires three arguments
Solution
Step 1: Check device_id validity
If the device_id is wrong or device is not part of the network, commands won't reach it.
Step 2: Verify command and function usage
"turn_on" is a valid command string and send_command usually takes device_id and command.
Final Answer:
The device_id is incorrect or not included in the network -> Option A
Quick Check:
Device ID error = no response [OK]
Hint: Check device ID first if command fails [OK]
Common Mistakes:
Assuming command string syntax error
Thinking Z-Wave can't turn devices on/off
Adding extra unnecessary arguments
5. You want to create a Z-Wave automation that turns on lights when motion is detected and turns them off after 5 minutes of no motion. Which approach best fits this scenario?
hard
A. Set the lights to always stay on and ignore motion sensor
B. Use a Z-Wave motion sensor to trigger a controller rule that sends 'turn_on' command immediately and 'turn_off' command after 5 minutes delay
C. Use Wi-Fi devices instead of Z-Wave for motion detection and control
D. Manually send 'turn_on' and 'turn_off' commands to devices every day at fixed times
Solution
Step 1: Identify automation trigger and actions
Motion sensor triggers turning lights on immediately and off after delay.
Step 2: Match with Z-Wave automation capabilities
Z-Wave controllers support rules with triggers and delayed actions, fitting this need.
Final Answer:
Use a Z-Wave motion sensor to trigger a controller rule that sends 'turn_on' command immediately and 'turn_off' command after 5 minutes delay -> Option B
Quick Check:
Automation with triggers and delays = Use a Z-Wave motion sensor to trigger a controller rule that sends 'turn_on' command immediately and 'turn_off' command after 5 minutes delay [OK]
Hint: Use triggers and delays in Z-Wave controller rules [OK]
Common Mistakes:
Using manual commands instead of automation
Confusing Z-Wave with Wi-Fi devices
Ignoring motion sensor input
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.