Security News
Node.js EOL Versions CVE Dubbed the "Worst CVE of the Year" by Security Experts
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
airtunes2mqtt
Advanced tools
This is a little daemon that can retrieve an audio stream via TCP socket or from a Alsa Loopback device and stream it to Airplay/Airtunes compatible receivers. Via Web UI or MQTT you can control the receivers volume and enable/disable the receivers.
Multi-Room Audio based on Airplay/Airtunes with MQTT support 🔈
This is a little daemon that can retrieve an audio stream via TCP socket or from a Alsa Loopback device and stream it to one or more Airplay/Airtunes compatible receivers. Via its Web UI or MQTT you can control the receivers volume and enable/disable the receivers. I'm using it in conjunction with Mopidy to create a Multiroom Smart Home integrated audio playback system with several Airplay Speakers.
Based on lperrins node_airtunes - all credits belong to him. Also thanks to Adam Duncan for creating a fork that works with recent versions of Node.js.
Prerequisite: Node.js >= 6
$ sudo npm install -g airtunes2mqtt
$ airtunes2mqtt --help
I suggest to use pm2 to manage the airtunes2mqtt process (start on system boot, manage log files, ...).
Usage: airtunes2mqtt [options]
Options:
--disable-web disable web server
--web-port web server listening port [default: 8096]
--version Show version number [boolean]
-h, --help Show help [boolean]
-u, --mqtt-url mqtt broker url. May contain user/password
[default: "mqtt://127.0.0.1"]
-s, --speaker name:host:port or name:host:portStart:portEnd of speaker. May
be repeated. [required]
-n, --name instance name. used as mqtt client id and as prefix for
connected topic [default: "airtunes"]
-v, --verbosity possible values: "error", "warn", "info", "debug"
[default: "info"]
-p, --port TCP Listen port for audio reception [default: 12346]
-l, --loopback Use Alsa loopback device instead of TCP listener [boolean]
-d, --device Alsa loopback device [default: "hw:Loopback,1"]
$ airtunes2mqtt -s LivingRoom:192.168.2.100:5000 Kitchen:192.168.2.103:5000 -s SoundFly:192.168.2.105:1024:1032 -v debug
[audio]
output = audioconvert ! audio/x-raw,format=S16LE,rate=44100,channels=2,layout=interleaved ! tcpclientsink host=127.0.0.1 port=12346
Airtunes2mqtt offers a simple user interface (web app capable) to enable/disable speakers and adjust volume:
I just added the airtunes2mqtt ui into the frontend of my mopidy server ("musicbox webclient") by removing the original volume slider and adding an iframe:
/usr/local/lib/python2.7/dist-packages/mopidy_musicbox_webclient/static/index.html
<li data-icon="false">
- <div><!-- slider for volume -->
- <a href="#" onclick="controls.doMute(); return false;"><span title="Toggle mute"><i id="mutebt" class="fa fa-volume-up"></i></span></a>
- <label for="volumeslider" class="ui-hidden-accessible">Volume</label>
- <input id="volumeslider" data-highlight="true" name="volumeslider" data-mini="true" type="range" min="0"
- value="0" max="100"/>
- </div>
+ <iframe style="border:0;padding:0;margin:0;height:450px;width:240px;" src="http://192.168.2.100:8096/ui/index.html"></iframe>
</li>
airtunes/set/<speaker-name>/enable
- Enable or disable a speaker (payload can be true
, false
, 0
or 1
)airtunes/set/<speaker-name>/disable
- Disable a speaker (payload is irrelevant)airtunes/set/<speaker-name>/volume
- Set a speakers volume (payload has to be a number between 0
and 100
)airtunes/connected
- Publishes 1
after airtunes2mqtt started, 2
when a client is connected via tcp socket
respectively when the alsa loopback device is connected and 0
as last will.airtunes/status/activeSpeakers
- Number of currently enables speakers.airtunes/status/speaker/enable
- Actual speaker state.airtunes/status/speaker/volume
- Actual speaker volume.MIT Copyright (c) 2015-2018 Sebastian 'hobbyquaker' Raff hobbyquaker@gmail.com
FAQs
This is a little daemon that can retrieve an audio stream via TCP socket or from a Alsa Loopback device and stream it to Airplay/Airtunes compatible receivers. Via Web UI or MQTT you can control the receivers volume and enable/disable the receivers.
The npm package airtunes2mqtt receives a total of 9 weekly downloads. As such, airtunes2mqtt popularity was classified as not popular.
We found that airtunes2mqtt demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.