I have exactly four days of experience with Home Assistant, so if I’m missing something obvious, please pardon in advance.
**Edit:** While the issue below is still true, further testing has shown that this is only a problem when running as a service on OSX, ie. when using the ` --install-osx` option. Running `hass` in a normal shell works fine. This led me to consider a likely problem with the PATH specified in the **plist** file, which after a fair amount of testing turned out to be true. So, instead of a problem with the `device_tracker` or `nmap` implementation, this appears to be an issue with the **plist** file generated by the ` --install-osx` option. The problem here is that anytime you use `--install-osx`, the **plist** file is rebuilt, meaning that you have to manually modify it again with the correct PATH value. Here is the fix for the **plist** file on my system:
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key> <string>/Library/Frameworks/Python.framework/Versions/3.5/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
Once the plist file has been manually modified, you can use `launchctl load` and `unload` as required to stop and start the service on OSX.
Running on OSX, I had a device tracker based on “nmap” to scan for a single IP address working fine for a simple automation. Then, just a few minutes ago I updated, and it no longer works. I see the following in the log. Also note that the “pip3” update claims to have updated to modules: Successfully installed requests-2.10.0 setuptools-20.10.1
INFO:homeassistant.components.device_tracker.nmap_tracker:Scanning
INFO:homeassistant.components.http:"GET /states HTTP/1.1" 200 -
INFO:homeassistant.components.http:"GET /static/webcomponents-lite.min.js HTTP/1.1" 200 -
INFO:homeassistant.components.http:"GET /static/favicon-192x192.png HTTP/1.1" 200 -
INFO:homeassistant.components.http:"GET /static/frontend-ffd8a1bde5ba13f300c3d6ad32036526.html HTTP/1.1" 200 -
ERROR:homeassistant.core:BusHandler:Exception doing job
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/homeassistant/core.py", line 801, in job_handler
func(arg)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/homeassistant/helpers/event.py", line 176, in pattern_time_change_listener
action(now)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/homeassistant/components/device_tracker/__init__.py", line 393, in device_tracker_scan
for mac in scanner.scan_devices():
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/homeassistant/components/device_tracker/nmap_tracker.py", line 71, in scan_devices
self._update_info()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/homeassistant/util/__init__.py", line 289, in wrapper
result = method(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/homeassistant/components/device_tracker/nmap_tracker.py", line 121, in _update_info
mac = info['addresses'].get('mac') or _arp(ipv4)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/homeassistant/components/device_tracker/nmap_tracker.py", line 46, in _arp
arp = subprocess.Popen(cmd, stdout=subprocess.PIPE)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 950, in __init__
restore_signals, start_new_session)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 1544, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'arp'
Here’s the “device_tracker” definition. And since I’m on the topic, what is the syntax for giving a name to a specific entry? I found several references to such a thing in the documentation (“paulus”) but nothing that actually shows how to define them.
device_tracker:
platform: nmap_tracker
home_interval: 10
hosts: 10.0.0.180