89698c5bd6d9e6aea6b2aadfda7df37f34ee4efb
driver / standard (pull_request) Successful in 14s
driver / lint (pull_request) Successful in 12s
driver / types (pull_request) Successful in 47s
driver / test (3.10) (pull_request) Successful in 2m44s
driver / test (3.11) (pull_request) Successful in 2m46s
driver / test (3.12) (pull_request) Successful in 2m41s
driver / security (pull_request) Successful in 47s
driver / build (pull_request) Successful in 22s
driver / test (3.13) (pull_request) Successful in 2m35s
driver / lowest (pull_request) Successful in 2m18s
CI / driver (pull_request) Successful in 5m55s
driver / publish (pull_request) Skipped
napalm-sonos
NAPALM driver for Sonos speakers, built on
napalm-device-types (MediaDriver).
It talks to the speaker through SoCo.
Tested against
| Model | Firmware |
|---|---|
| not recorded yet |
Connection
UPnP/SOAP over HTTP on port 1400, through SoCo. A Sonos speaker takes no login:
username and password are accepted for NAPALM's constructor and ignored.
open() reads the speaker info once; is_alive() checks that TCP port 1400 accepts
a connection.
from napalm import get_network_driver
driver = get_network_driver("sonos")
with driver("192.0.2.20") as speaker:
print(speaker.get_facts())
print(speaker.get_playback_state())
Supported
| Getter / action | |
|---|---|
get_facts |
from the speaker info read at open() |
get_interfaces, get_interfaces_ip |
eth0 when the speaker is wired, always wlan0 |
get_playback_state, get_current_track |
yes |
get_volume, set_volume, get_mute, set_mute |
yes |
play, pause, stop, next_track, previous_track |
yes |
get_group_info, get_zone_info |
yes |
Not supported
Configuration management (load_replace_candidate and load_merge_candidate raise
NotImplementedError), the CLI, and every routing, LLDP, ARP, NTP, SNMP, BGP, user
and environment getter: they return empty results.
Installation
pip install napalm-sonos
Development
The rules are in STANDARDS.md.
python -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/pytest --cov
License
Apache-2.0
Languages
Python
100%