Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Control IKEA Dirigera smart home devices (lights, outlets, scenes, controllers). Use when the user asks to control smart home devices, check device status, turn lights on/off, adjust brightness/color, control outlets, trigger scenes, check battery levels, or work with IKEA smart home automation. Also use when the user needs help finding the Dirigera hub IP address or generating an API token. Accessible via Cloudflare tunnel on VPS.
Control IKEA Dirigera smart home devices (lights, outlets, scenes, controllers). Use when the user asks to control smart home devices, check device status, turn lights on/off, adjust brightness/color, control outlets, trigger scenes, check battery levels, or work with IKEA smart home automation. Also use when the user needs help finding the Dirigera hub IP address or generating an API token. Accessible via Cloudflare tunnel on VPS.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Control lights, outlets, scenes, and other IKEA smart home devices through the Dirigera hub.
pip install dirigera
Check the router/DHCP client list for "Dirigera" and note its IP address. If the agent is on the same LAN, try the IP discovery script. It can: Scan the subnet for likely candidates (no token required). Verify the exact hub IP if a token is available. As a last resort, try generate-token against candidates (interactive). python scripts/find_dirigera_ip.py # or python scripts/find_dirigera_ip.py --subnet 192.168.1.0/24 # verify with token (if you have it) python scripts/find_dirigera_ip.py --token <dirigera-token> # last resort: try generate-token against candidates python scripts/find_dirigera_ip.py --try-generate-token
IMPORTANT: Token generation REQUIRES PHYSICAL USER ACTION. Follow this workflow: Step 1: Start Token Generation Script Run the wrapper script in the background. It will automatically wait for the button press: python scripts/generate_token_wrapper.py <dirigera-ip-address> & The token will be saved to dirigera_token.txt by default. To specify a custom location: python scripts/generate_token_wrapper.py <dirigera-ip-address> --output /path/to/token.txt & Step 2: END YOUR TURN AND INFORM THE USER CRITICAL: After starting the script, you MUST: End your turn immediately - do not wait or continue processing Tell the user: "I've started the token generation process. Please press the ACTION BUTTON on the bottom of your Dirigera hub now. Let me know when you've pressed it." Step 3: Wait for User Confirmation The user will: Physically press the button on their Dirigera hub Reply to you confirming they pressed it (e.g., "Done" or "Pressed") The script will automatically detect the button press and save the token to the file. Step 4: Retrieve the Saved Token After the user confirms, read the token from the file: from pathlib import Path token = Path("dirigera_token.txt").read_text().strip() Or from a custom location: TOKEN=$(cat /path/to/token.txt) Then use the token to connect: import dirigera hub = dirigera.Hub(token=token, ip_address="<dirigera-ip>") Alternative: Manual Command For manual use (not recommended for agents): generate-token <dirigera-ip-address> This requires interactive terminal access and doesn't save output automatically.
If you cannot find the hub IP address: Check the router/DHCP list and look for "Dirigera". If the name is missing, match the hub's MAC address label to a new device entry. Ensure the hub and client are on the same network. If you have candidate IPs, run generate-token against them until one succeeds. If you already have a token, run python scripts/find_dirigera_ip.py --token <dirigera-token>. If everything else fails, run python scripts/find_dirigera_ip.py --try-generate-token and follow the prompt.
import dirigera hub = dirigera.Hub( token="token", ip_address="ip_address" )
Device state is in .attributes, not top-level. # CORRECT light.attributes.is_on light.attributes.light_level # WRONG - raises AttributeError light.is_on light.light_level Top-level: device.id, device.is_reachable, device.room State: device.attributes.is_on, device.attributes.light_level
lights = hub.get_lights() outlets = hub.get_outlets() controllers = hub.get_controllers() scenes = hub.get_scenes()
light = hub.get_light_by_name(lamp_name="bedroom light") # Check reachability first if light.is_reachable: light.set_light(lamp_on=True) light.set_light_level(light_level=75) light.set_color_temperature(color_temp=2700) # Warm white # Reload after changes light.reload()
outlet = hub.get_outlet_by_name(outlet_name="living room") outlet.set_on(outlet_on=True) outlet.reload()
scene = hub.get_scene_by_name(scene_name="Sove tid") scene.trigger()
# Verify device supports feature before using if 'colorTemperature' in light.capabilities.can_receive: light.set_color_temperature(color_temp=3000)
See references/patterns.md for room-based control, batch operations, status reports, and battery monitoring.
Use scripts/helpers.py for common operations: get lights by room, check battery levels, find unreachable devices.
See references/api.md for: Complete attribute reference All control methods Device capabilities Color temperature/hue values Troubleshooting
Always check device.is_reachable before control Call device.reload() after control commands Use .attributes for all state access Add 0.5s delays between rapid commands Check capabilities before using features
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.