tinyjukebox 0.47.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tinyjukebox/__init__.py +7 -0
- tinyjukebox/albumplayer/__init__.py +1 -0
- tinyjukebox/albumplayer/aalbumplayer.py +402 -0
- tinyjukebox/albumplayer/clock.py +39 -0
- tinyjukebox/albumplayer/dummyplayer.py +49 -0
- tinyjukebox/albumplayer/player_interface.py +97 -0
- tinyjukebox/albumplayer/radioplayer.py +391 -0
- tinyjukebox/albumplayer/simpleplayer.py +419 -0
- tinyjukebox/albumplayer/spotifyplayer.py +671 -0
- tinyjukebox/backup.py +176 -0
- tinyjukebox/backups.py +340 -0
- tinyjukebox/cli.py +1076 -0
- tinyjukebox/control.py +1386 -0
- tinyjukebox/core/__init__.py +1 -0
- tinyjukebox/core/config.py +100 -0
- tinyjukebox/core/logging/__init__.py +113 -0
- tinyjukebox/core/microservice.py +303 -0
- tinyjukebox/core/pubsub/__init__.py +15 -0
- tinyjukebox/core/pubsub/base.py +196 -0
- tinyjukebox/core/pubsub/localqueue.py +102 -0
- tinyjukebox/core/pubsub/statistics.py +57 -0
- tinyjukebox/core/py.typed +0 -0
- tinyjukebox/core/schema/__init__.py +5 -0
- tinyjukebox/core/schema/logger.py +40 -0
- tinyjukebox/core/schema/microservice.py +48 -0
- tinyjukebox/core/threads.py +39 -0
- tinyjukebox/core/ui/__init__.py +5 -0
- tinyjukebox/core/ui/cli.py +120 -0
- tinyjukebox/core/ui/tools.py +73 -0
- tinyjukebox/core/unexpected.py +46 -0
- tinyjukebox/data/__init__.py +0 -0
- tinyjukebox/data/activities.py +175 -0
- tinyjukebox/data/activity.py +138 -0
- tinyjukebox/data/common.py +91 -0
- tinyjukebox/data/degraded.py +39 -0
- tinyjukebox/data/jsondata.py +218 -0
- tinyjukebox/data/sanitycheck.py +71 -0
- tinyjukebox/data/tag.py +98 -0
- tinyjukebox/data/tags.py +160 -0
- tinyjukebox/data/target.py +568 -0
- tinyjukebox/data/targetalbumtools.py +88 -0
- tinyjukebox/data/targets.py +256 -0
- tinyjukebox/data/volumelimits.py +68 -0
- tinyjukebox/data_folder.py +180 -0
- tinyjukebox/devices/__init__.py +1 -0
- tinyjukebox/devices/baseclasses/__init__.py +1 -0
- tinyjukebox/devices/baseclasses/adriver.py +115 -0
- tinyjukebox/devices/baseclasses/aevents.py +47 -0
- tinyjukebox/devices/baseclasses/gpiolevel.py +16 -0
- tinyjukebox/devices/bluetooth/__init__.py +1 -0
- tinyjukebox/devices/bluetooth/avrcp_input.py +118 -0
- tinyjukebox/devices/bluetooth/bluez.py +446 -0
- tinyjukebox/devices/bluetooth/link.py +396 -0
- tinyjukebox/devices/bluetooth/virtual.py +155 -0
- tinyjukebox/devices/drivermanager/__init__.py +1 -0
- tinyjukebox/devices/drivermanager/driverfactory.py +75 -0
- tinyjukebox/devices/drivermanager/drivermanager.py +151 -0
- tinyjukebox/devices/drivers/__init__.py +31 -0
- tinyjukebox/devices/drivers/bluetooth.py +257 -0
- tinyjukebox/devices/drivers/input.py +165 -0
- tinyjukebox/devices/drivers/rfid.py +297 -0
- tinyjukebox/devices/drivers/rgbled.py +215 -0
- tinyjukebox/devices/py.typed +0 -0
- tinyjukebox/devices/schema/__init__.py +1 -0
- tinyjukebox/devices/schema/adriver.py +33 -0
- tinyjukebox/devices/schema/bluetooth.py +31 -0
- tinyjukebox/devices/schema/drivermanager.py +41 -0
- tinyjukebox/devices/schema/input.py +23 -0
- tinyjukebox/devices/schema/rfid.py +44 -0
- tinyjukebox/devices/schema/rgbled.py +26 -0
- tinyjukebox/diagnostics.py +179 -0
- tinyjukebox/errors.py +91 -0
- tinyjukebox/headset.py +296 -0
- tinyjukebox/images.py +133 -0
- tinyjukebox/latency.py +43 -0
- tinyjukebox/library/__init__.py +2 -0
- tinyjukebox/library/diagnostics.py +183 -0
- tinyjukebox/library/journal.py +94 -0
- tinyjukebox/library/releases.py +348 -0
- tinyjukebox/library/schema.py +98 -0
- tinyjukebox/library/service.py +1115 -0
- tinyjukebox/library/statistics.py +288 -0
- tinyjukebox/library/store.py +1386 -0
- tinyjukebox/messages.py +202 -0
- tinyjukebox/metadata.py +133 -0
- tinyjukebox/py.typed +0 -0
- tinyjukebox/restore.py +391 -0
- tinyjukebox/rgbled.py +158 -0
- tinyjukebox/schema/__init__.py +1 -0
- tinyjukebox/schema/activities.py +27 -0
- tinyjukebox/schema/tags.py +54 -0
- tinyjukebox/schema/targets.py +83 -0
- tinyjukebox/schema/tinyjukebox.py +217 -0
- tinyjukebox/schema/volume.py +28 -0
- tinyjukebox/slots.py +234 -0
- tinyjukebox/spotify/__init__.py +1 -0
- tinyjukebox/spotify/account.py +647 -0
- tinyjukebox/spotify/engine.py +568 -0
- tinyjukebox/spotify/oembed.py +65 -0
- tinyjukebox/spotify/soloist.py +198 -0
- tinyjukebox/spotify/sound.py +316 -0
- tinyjukebox/stm/__init__.py +0 -0
- tinyjukebox/stm/base.py +174 -0
- tinyjukebox/stm/playradio.py +237 -0
- tinyjukebox/stm/playspotify.py +418 -0
- tinyjukebox/stm/stmoperation.py +769 -0
- tinyjukebox/stm/stmplayalbum.py +655 -0
- tinyjukebox/stm/stmvolume.py +221 -0
- tinyjukebox/sync/__init__.py +42 -0
- tinyjukebox/sync/box.py +486 -0
- tinyjukebox/sync/client.py +189 -0
- tinyjukebox/sync/data.py +489 -0
- tinyjukebox/sync/files.py +447 -0
- tinyjukebox/sync/handshake.py +42 -0
- tinyjukebox/sync/link.py +379 -0
- tinyjukebox/sync/manifest.py +162 -0
- tinyjukebox/sync/util.py +137 -0
- tinyjukebox/tinyjukebox.py +680 -0
- tinyjukebox/tools/__init__.py +1 -0
- tinyjukebox/tools/backup.py +173 -0
- tinyjukebox/tools/fill_library.py +120 -0
- tinyjukebox/tools/import_cards.py +274 -0
- tinyjukebox/tools/import_covers.py +138 -0
- tinyjukebox/tools/migrate_box01.py +151 -0
- tinyjukebox/volumemanager.py +355 -0
- tinyjukebox/web/__init__.py +1 -0
- tinyjukebox/web/auth.py +373 -0
- tinyjukebox/web/certificates.py +111 -0
- tinyjukebox/web/logbuffer.py +62 -0
- tinyjukebox/web/server.py +1237 -0
- tinyjukebox/web/uploads.py +262 -0
- tinyjukebox/web/users.py +106 -0
- tinyjukebox/web/web/app.js +3050 -0
- tinyjukebox/web/web/favicon.svg +6 -0
- tinyjukebox/web/web/help/de/admin.html +714 -0
- tinyjukebox/web/web/help/de/manual.html +1147 -0
- tinyjukebox/web/web/help/de/quick-guide.html +79 -0
- tinyjukebox/web/web/help/en/admin.html +701 -0
- tinyjukebox/web/web/help/en/manual.html +1126 -0
- tinyjukebox/web/web/help/en/quick-guide.html +79 -0
- tinyjukebox/web/web/help/help.css +25 -0
- tinyjukebox/web/web/help/images/box-2026.jpg +0 -0
- tinyjukebox/web/web/help/images/box-back.jpg +0 -0
- tinyjukebox/web/web/help/images/lid-top.jpg +0 -0
- tinyjukebox/web/web/help/images/logo-mark.svg +38 -0
- tinyjukebox/web/web/index.html +867 -0
- tinyjukebox/web/web/style.css +412 -0
- tinyjukebox/web/web/texts/de.json +892 -0
- tinyjukebox/web/web/texts/en.json +892 -0
- tinyjukebox-0.47.0.dist-info/METADATA +236 -0
- tinyjukebox-0.47.0.dist-info/RECORD +154 -0
- tinyjukebox-0.47.0.dist-info/WHEEL +4 -0
- tinyjukebox-0.47.0.dist-info/entry_points.txt +9 -0
- tinyjukebox-0.47.0.dist-info/licenses/LICENSE.txt +21 -0
|
@@ -0,0 +1,1126 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<meta name="color-scheme" content="light dark">
|
|
7
|
+
<title>Tiny Jukebox – user manual – Tiny Jukebox</title>
|
|
8
|
+
<link rel="icon" href="../../favicon.svg" type="image/svg+xml">
|
|
9
|
+
<link rel="stylesheet" href="../../style.css">
|
|
10
|
+
<link rel="stylesheet" href="../help.css">
|
|
11
|
+
</head>
|
|
12
|
+
<body class="help">
|
|
13
|
+
<!-- made by scripts/help/build.py from docs/user/en/manual.md - not to be changed by hand -->
|
|
14
|
+
<header class="topbar">
|
|
15
|
+
<a class="brand" href="../../"><svg class="brand-logo" viewBox="0 0 64 64" aria-hidden="true"><circle class="lid" cx="32" cy="32" r="29"/><circle class="window" cx="31" cy="41" r="10.5"/><circle class="brand-led" cx="13.29" cy="28.7" r="2.8"/><circle class="key" cx="17.45" cy="19.79" r="4.2"/><circle class="key" cx="25.5" cy="14.15" r="4.2"/><circle class="key key-yellow" cx="35.3" cy="13.29" r="4.2"/><circle class="key key-yellow" cx="44.21" cy="17.45" r="4.2"/></svg>Tiny Jukebox</a>
|
|
16
|
+
<span class="muted small">Help</span>
|
|
17
|
+
<nav class="tabs help-tabs"><a href="quick-guide.html">Quick guide</a><a href="manual.html" class=active aria-current=page>Manual</a><a href="admin.html">Administration</a></nav>
|
|
18
|
+
<div class="user"><a href="../de/manual.html" hreflang="de" lang="de">Deutsch</a>
|
|
19
|
+
<a class="button" href="../../">Back to the page</a></div>
|
|
20
|
+
</header>
|
|
21
|
+
<main class="help-text">
|
|
22
|
+
<h1 id="tiny-jukebox--user-manual">Tiny Jukebox – user manual</h1>
|
|
23
|
+
<p>Tiny Jukebox is a music box for children. Place a tag on the box, and the album of the tag continues where it
|
|
24
|
+
stopped last time. The box is operated with four buttons; an LED shows its state. Albums, tags and radio stations
|
|
25
|
+
are managed on a web page. If there are several boxes or a library in the home network, the boxes share albums,
|
|
26
|
+
tags and stations (section 13).</p>
|
|
27
|
+
<p><img src="../images/box-2026.jpg" alt="The box: a white wooden case with a grille of rings at the front, on top the round lid with buttons, LED and a tag in its window" width="320"></p>
|
|
28
|
+
<p>The essentials on one card: <a href="quick-guide.html">quick guide</a>. Setting up and running boxes and the
|
|
29
|
+
library: <a href="admin.html">administration</a>.</p>
|
|
30
|
+
<p>Contents:</p>
|
|
31
|
+
<ol>
|
|
32
|
+
<li><a href="#1-terms">Terms</a></li>
|
|
33
|
+
<li><a href="#2-operating-the-box">Operating the box</a></li>
|
|
34
|
+
<li><a href="#3-led">LED</a></li>
|
|
35
|
+
<li><a href="#4-pause">Pause</a></li>
|
|
36
|
+
<li><a href="#5-bluetooth-headset">Bluetooth headset</a></li>
|
|
37
|
+
<li><a href="#6-web-page">Web page</a></li>
|
|
38
|
+
<li><a href="#7-mp3-albums">MP3 albums</a></li>
|
|
39
|
+
<li><a href="#8-radio">Radio</a></li>
|
|
40
|
+
<li><a href="#9-spotify">Spotify</a></li>
|
|
41
|
+
<li><a href="#10-limiting-the-volume">Limiting the volume</a></li>
|
|
42
|
+
<li><a href="#11-users-and-passwords">Users and passwords</a></li>
|
|
43
|
+
<li><a href="#12-if-something-does-not-work">If something does not work</a></li>
|
|
44
|
+
<li><a href="#13-library">Library</a></li>
|
|
45
|
+
</ol>
|
|
46
|
+
<hr />
|
|
47
|
+
<h2 id="1-terms"><span id="s1"></span>1. Terms</h2>
|
|
48
|
+
<table>
|
|
49
|
+
<thead>
|
|
50
|
+
<tr>
|
|
51
|
+
<th>Term</th>
|
|
52
|
+
<th>Meaning</th>
|
|
53
|
+
</tr>
|
|
54
|
+
</thead>
|
|
55
|
+
<tbody>
|
|
56
|
+
<tr>
|
|
57
|
+
<td>Tag</td>
|
|
58
|
+
<td>what is placed on the box: a disc, a figure, a card – anything with an RFID chip. The box recognizes the chip by its unique number (UID), e.g. <code>04:1A:2B:3C:4D:5E:6F</code>, not the object.</td>
|
|
59
|
+
</tr>
|
|
60
|
+
<tr>
|
|
61
|
+
<td>Album</td>
|
|
62
|
+
<td>a folder with MP3 files and a list of its tracks (playlist)</td>
|
|
63
|
+
</tr>
|
|
64
|
+
<tr>
|
|
65
|
+
<td>Radio station</td>
|
|
66
|
+
<td>an internet radio stream; needs WLAN</td>
|
|
67
|
+
</tr>
|
|
68
|
+
<tr>
|
|
69
|
+
<td>Spotify</td>
|
|
70
|
+
<td>an album, a playlist, an audiobook or a podcast of Spotify; needs the internet and a Spotify Premium account</td>
|
|
71
|
+
</tr>
|
|
72
|
+
<tr>
|
|
73
|
+
<td>Linking</td>
|
|
74
|
+
<td>assigning an album, a radio station or an entry of Spotify to a tag</td>
|
|
75
|
+
</tr>
|
|
76
|
+
<tr>
|
|
77
|
+
<td>Cover</td>
|
|
78
|
+
<td>the picture of an album, a radio station or an entry of Spotify. A tag shows the cover of what it is linked to.</td>
|
|
79
|
+
</tr>
|
|
80
|
+
<tr>
|
|
81
|
+
<td>Progress</td>
|
|
82
|
+
<td>the saved position of an album, per tag</td>
|
|
83
|
+
</tr>
|
|
84
|
+
<tr>
|
|
85
|
+
<td>Library</td>
|
|
86
|
+
<td>a program in the home network (e.g. on the NAS) that holds albums, tags and stations for all boxes</td>
|
|
87
|
+
</tr>
|
|
88
|
+
</tbody>
|
|
89
|
+
</table>
|
|
90
|
+
<hr />
|
|
91
|
+
<h2 id="2-operating-the-box"><span id="s2"></span>2. Operating the box</h2>
|
|
92
|
+
<h3 id="21-switching-on-and-off"><span id="s2-1"></span>2.1 Switching on and off</h3>
|
|
93
|
+
<p><img src="../images/box-back.jpg" alt="The back of the box: on the left the switch, on the right the USB socket for charging" width="260"></p>
|
|
94
|
+
<p>Inside the box a power bank supplies the power. On the back: the switch (left) connects and cuts it, the USB socket
|
|
95
|
+
(right) charges the power bank.</p>
|
|
96
|
+
<ul>
|
|
97
|
+
<li><strong>Switching on:</strong> with the switch. During the start the LED is red, then magenta. When it is green, the box is
|
|
98
|
+
ready.</li>
|
|
99
|
+
<li><strong>Switching off:</strong> with the switch. This is allowed at any time, also while an album plays. The box saves the
|
|
100
|
+
position every 5 seconds; next time it continues a few seconds earlier at most.</li>
|
|
101
|
+
<li>The box also plays without WLAN. Only the web page and radio stations need it.</li>
|
|
102
|
+
</ul>
|
|
103
|
+
<h3 id="22-tags"><span id="s2-2"></span>2.2 Tags</h3>
|
|
104
|
+
<table>
|
|
105
|
+
<thead>
|
|
106
|
+
<tr>
|
|
107
|
+
<th>Action</th>
|
|
108
|
+
<th>Effect</th>
|
|
109
|
+
</tr>
|
|
110
|
+
</thead>
|
|
111
|
+
<tbody>
|
|
112
|
+
<tr>
|
|
113
|
+
<td>Place a tag on the box</td>
|
|
114
|
+
<td>The album continues at the saved position. A radio station starts to play.</td>
|
|
115
|
+
</tr>
|
|
116
|
+
<tr>
|
|
117
|
+
<td>Take the tag off</td>
|
|
118
|
+
<td>Playback stops, the position is saved.</td>
|
|
119
|
+
</tr>
|
|
120
|
+
<tr>
|
|
121
|
+
<td>Place another tag</td>
|
|
122
|
+
<td>Its album plays.</td>
|
|
123
|
+
</tr>
|
|
124
|
+
<tr>
|
|
125
|
+
<td>Place a new, unknown tag</td>
|
|
126
|
+
<td>The LED is yellow. The box remembers the tag; it is linked on the web page (section 7.2).</td>
|
|
127
|
+
</tr>
|
|
128
|
+
</tbody>
|
|
129
|
+
</table>
|
|
130
|
+
<p>Every tag has its own progress. An album that was listened to the end starts from the beginning the next time
|
|
131
|
+
its tag is placed.</p>
|
|
132
|
+
<h3 id="23-buttons"><span id="s2-3"></span>2.3 Buttons</h3>
|
|
133
|
+
<p><img src="../images/lid-top.jpg" alt="The lid from above: four buttons with their symbols, the LED and the window for the tag" width="300"></p>
|
|
134
|
+
<p>The lid: the four buttons with their symbols, the LED, in the middle the window for the tag.</p>
|
|
135
|
+
<table>
|
|
136
|
+
<thead>
|
|
137
|
+
<tr>
|
|
138
|
+
<th>Button</th>
|
|
139
|
+
<th>Press briefly</th>
|
|
140
|
+
<th>Hold</th>
|
|
141
|
+
</tr>
|
|
142
|
+
</thead>
|
|
143
|
+
<tbody>
|
|
144
|
+
<tr>
|
|
145
|
+
<td>louder, quieter</td>
|
|
146
|
+
<td>one step (5 %)</td>
|
|
147
|
+
<td>on in small steps (1 % every 0.2 s)</td>
|
|
148
|
+
</tr>
|
|
149
|
+
<tr>
|
|
150
|
+
<td>next</td>
|
|
151
|
+
<td>next track</td>
|
|
152
|
+
<td>–</td>
|
|
153
|
+
</tr>
|
|
154
|
+
<tr>
|
|
155
|
+
<td>back</td>
|
|
156
|
+
<td>to the start of the track; in the first 10 seconds of a track: to the previous track</td>
|
|
157
|
+
<td>1 s: the album starts from the beginning</td>
|
|
158
|
+
</tr>
|
|
159
|
+
<tr>
|
|
160
|
+
<td>next + back together</td>
|
|
161
|
+
<td>–</td>
|
|
162
|
+
<td>5 s: pair a headset (section 5.1)</td>
|
|
163
|
+
</tr>
|
|
164
|
+
</tbody>
|
|
165
|
+
</table>
|
|
166
|
+
<ul>
|
|
167
|
+
<li>The volume is limited (section 10).</li>
|
|
168
|
+
<li>When the album has ended, "next" has no effect. "back" plays the last track, holding "back" for 1 s the whole
|
|
169
|
+
album from the beginning.</li>
|
|
170
|
+
<li>With a radio station "next" and "back" have no effect. The station is changed with the tag.</li>
|
|
171
|
+
<li>Every press of a button acts at once. When pairing a headset, an album that plays therefore jumps by one track
|
|
172
|
+
at most. To avoid that, take the tag off first.</li>
|
|
173
|
+
</ul>
|
|
174
|
+
<hr />
|
|
175
|
+
<h2 id="3-led"><span id="s3"></span>3. LED</h2>
|
|
176
|
+
<table>
|
|
177
|
+
<thead>
|
|
178
|
+
<tr>
|
|
179
|
+
<th>LED</th>
|
|
180
|
+
<th>Meaning</th>
|
|
181
|
+
</tr>
|
|
182
|
+
</thead>
|
|
183
|
+
<tbody>
|
|
184
|
+
<tr>
|
|
185
|
+
<td>red</td>
|
|
186
|
+
<td>The box is starting: after red comes magenta, then green. If the LED stays red, the box is stopped.</td>
|
|
187
|
+
</tr>
|
|
188
|
+
<tr>
|
|
189
|
+
<td>magenta</td>
|
|
190
|
+
<td>for a moment while the box starts (after red) or stops (before red)</td>
|
|
191
|
+
</tr>
|
|
192
|
+
<tr>
|
|
193
|
+
<td>green</td>
|
|
194
|
+
<td>ready, no tag on the box</td>
|
|
195
|
+
</tr>
|
|
196
|
+
<tr>
|
|
197
|
+
<td>green, blinking</td>
|
|
198
|
+
<td>no tag for 10 minutes – the box is still switched on</td>
|
|
199
|
+
</tr>
|
|
200
|
+
<tr>
|
|
201
|
+
<td>aqua</td>
|
|
202
|
+
<td>The album is being loaded, Spotify is connecting, or the radio station waits to connect again after the stream broke off.</td>
|
|
203
|
+
</tr>
|
|
204
|
+
<tr>
|
|
205
|
+
<td>green → aqua → blue, back and forth</td>
|
|
206
|
+
<td>The box fetches the album or the next track from the library and plays as soon as it is there (section 13), or a radio station is getting ready: blue as soon as it can be heard.</td>
|
|
207
|
+
</tr>
|
|
208
|
+
<tr>
|
|
209
|
+
<td>blue</td>
|
|
210
|
+
<td>playing</td>
|
|
211
|
+
</tr>
|
|
212
|
+
<tr>
|
|
213
|
+
<td>blue, blinking</td>
|
|
214
|
+
<td>The album has ended.</td>
|
|
215
|
+
</tr>
|
|
216
|
+
<tr>
|
|
217
|
+
<td>white/blue in turn</td>
|
|
218
|
+
<td>pause (section 4)</td>
|
|
219
|
+
</tr>
|
|
220
|
+
<tr>
|
|
221
|
+
<td>yellow</td>
|
|
222
|
+
<td>The tag is not linked to an album or a station.</td>
|
|
223
|
+
</tr>
|
|
224
|
+
<tr>
|
|
225
|
+
<td>yellow/red in turn</td>
|
|
226
|
+
<td>The linked album or the linked station does not exist any more.</td>
|
|
227
|
+
</tr>
|
|
228
|
+
<tr>
|
|
229
|
+
<td>red, blinking</td>
|
|
230
|
+
<td>The album cannot be played (folder, playlist or MP3 files are missing or broken). A tag of Spotify: Spotify cannot play on this box (key, player or login missing, section 9).</td>
|
|
231
|
+
</tr>
|
|
232
|
+
<tr>
|
|
233
|
+
<td>blue, blinking quickly</td>
|
|
234
|
+
<td>The box searches for a headset (60 s at most).</td>
|
|
235
|
+
</tr>
|
|
236
|
+
<tr>
|
|
237
|
+
<td>white for 2 s</td>
|
|
238
|
+
<td>headset paired – then the colour from before again</td>
|
|
239
|
+
</tr>
|
|
240
|
+
<tr>
|
|
241
|
+
<td>red, blinking quickly for 3 s</td>
|
|
242
|
+
<td>no headset found or pairing failed – then the colour from before again</td>
|
|
243
|
+
</tr>
|
|
244
|
+
<tr>
|
|
245
|
+
<td>red, white, magenta, yellow in turn</td>
|
|
246
|
+
<td>The box is out of service because the library is too old for it. Only an administrator can fix that (section 13.4).</td>
|
|
247
|
+
</tr>
|
|
248
|
+
</tbody>
|
|
249
|
+
</table>
|
|
250
|
+
<p>The web page shows the same LED next to the logo.</p>
|
|
251
|
+
<hr />
|
|
252
|
+
<h2 id="4-pause"><span id="s4"></span>4. Pause</h2>
|
|
253
|
+
<p>During a pause playback halts, the position is saved, and the tag stays on the box. The LED changes between white
|
|
254
|
+
and blue.</p>
|
|
255
|
+
<p>Pausing and resuming:</p>
|
|
256
|
+
<ul>
|
|
257
|
+
<li>play/pause on the headset</li>
|
|
258
|
+
<li>⏸ / ▶ on the web page (tab "Now")</li>
|
|
259
|
+
<li>The box itself has no pause button. Taking the tag off and placing it again later has the same effect.</li>
|
|
260
|
+
</ul>
|
|
261
|
+
<table>
|
|
262
|
+
<thead>
|
|
263
|
+
<tr>
|
|
264
|
+
<th>During the pause</th>
|
|
265
|
+
<th>Effect</th>
|
|
266
|
+
</tr>
|
|
267
|
+
</thead>
|
|
268
|
+
<tbody>
|
|
269
|
+
<tr>
|
|
270
|
+
<td>Play</td>
|
|
271
|
+
<td>continues at the same position</td>
|
|
272
|
+
</tr>
|
|
273
|
+
<tr>
|
|
274
|
+
<td>"next"</td>
|
|
275
|
+
<td>1st press: continues at the same position. Only the 2nd press jumps to the next track.</td>
|
|
276
|
+
</tr>
|
|
277
|
+
<tr>
|
|
278
|
+
<td>"back"</td>
|
|
279
|
+
<td>jumps at once: to the start of the track, in the first 10 seconds to the previous track</td>
|
|
280
|
+
</tr>
|
|
281
|
+
<tr>
|
|
282
|
+
<td>hold "back" for 1 s</td>
|
|
283
|
+
<td>The album starts from the beginning.</td>
|
|
284
|
+
</tr>
|
|
285
|
+
<tr>
|
|
286
|
+
<td>take the tag off and place it again</td>
|
|
287
|
+
<td>continues at the saved position</td>
|
|
288
|
+
</tr>
|
|
289
|
+
<tr>
|
|
290
|
+
<td>louder, quieter</td>
|
|
291
|
+
<td>changes the volume only</td>
|
|
292
|
+
</tr>
|
|
293
|
+
</tbody>
|
|
294
|
+
</table>
|
|
295
|
+
<ul>
|
|
296
|
+
<li>With an album that has ended, play/pause changes nothing.</li>
|
|
297
|
+
<li>With the radio, the pause ends the stream. Play, "next" or "back" connect again; the radio goes on live, there is
|
|
298
|
+
no position.</li>
|
|
299
|
+
<li>The box pauses by itself when the connection to the headset breaks (section 5.3).</li>
|
|
300
|
+
</ul>
|
|
301
|
+
<hr />
|
|
302
|
+
<h2 id="5-bluetooth-headset"><span id="s5"></span>5. Bluetooth headset</h2>
|
|
303
|
+
<p>The box plays through a Bluetooth headset as soon as the paired headset is connected. The speaker is silent then.
|
|
304
|
+
Principles:</p>
|
|
305
|
+
<ul>
|
|
306
|
+
<li><strong>Automatic:</strong> If the headset is connected, it plays. Otherwise the speaker plays. There is no menu.</li>
|
|
307
|
+
<li><strong>Never surprisingly loud:</strong> If the connection breaks, the box pauses. It never changes to the speaker by itself.</li>
|
|
308
|
+
<li><strong>Hearing protection:</strong> The headset has a start volume and a maximum volume of its own.</li>
|
|
309
|
+
<li><strong>Exactly one headset:</strong> At most one headset is paired. A new one replaces the old one.</li>
|
|
310
|
+
</ul>
|
|
311
|
+
<h3 id="51-pairing"><span id="s5-1"></span>5.1 Pairing</h3>
|
|
312
|
+
<ol>
|
|
313
|
+
<li>Put the headset into pairing mode. How that is done is in its manual (Sony WH-CH530: hold the middle button for
|
|
314
|
+
about 5 s until it says "Pairing").</li>
|
|
315
|
+
<li>Hold "next" and "back" on the box together for 5 s. After that the buttons can be released.</li>
|
|
316
|
+
<li>The LED blinks blue quickly while the box searches (60 s at most).</li>
|
|
317
|
+
<li>Result:<ul>
|
|
318
|
+
<li>white for 2 s: the headset is paired and connected.</li>
|
|
319
|
+
<li>red, blinking quickly for 3 s: nothing found, or pairing failed. The previous headset stays paired.</li>
|
|
320
|
+
</ul>
|
|
321
|
+
</li>
|
|
322
|
+
</ol>
|
|
323
|
+
<p>Further rules:</p>
|
|
324
|
+
<ul>
|
|
325
|
+
<li>The box searches only for audio devices (headsets, speakers) in pairing mode. If it finds several, it takes the
|
|
326
|
+
one with the strongest signal – as a rule the one right next to the box.</li>
|
|
327
|
+
<li>The box itself is never visible. A foreign phone cannot pair with it.</li>
|
|
328
|
+
<li>The same headset can be paired again, e.g. after a factory reset of the headset.</li>
|
|
329
|
+
<li>The search cannot be cancelled; it ends by itself after 60 s. Playback and buttons go on as usual meanwhile.</li>
|
|
330
|
+
<li>Pairing and unpairing is also possible on the web page: tab "Bluetooth", role <code>admin</code>.</li>
|
|
331
|
+
</ul>
|
|
332
|
+
<h3 id="52-every-day"><span id="s5-2"></span>5.2 Every day</h3>
|
|
333
|
+
<ul>
|
|
334
|
+
<li><strong>Switching the headset on is enough.</strong> The box tries to reach it every 15 s.</li>
|
|
335
|
+
<li>If it connects while an album plays, the album goes on in the headset (about 1 s back), and the speaker goes
|
|
336
|
+
silent.</li>
|
|
337
|
+
<li>The web page shows a headset symbol next to the LED as long as it is connected.</li>
|
|
338
|
+
<li>If a second headset is to be used, it has to be paired anew. The first one does not connect any more after that.</li>
|
|
339
|
+
</ul>
|
|
340
|
+
<h3 id="53-connection-lost"><span id="s5-3"></span>5.3 Connection lost</h3>
|
|
341
|
+
<p>Battery empty, out of range, switched off or unpaired:</p>
|
|
342
|
+
<table>
|
|
343
|
+
<thead>
|
|
344
|
+
<tr>
|
|
345
|
+
<th>Situation</th>
|
|
346
|
+
<th>Behaviour</th>
|
|
347
|
+
</tr>
|
|
348
|
+
</thead>
|
|
349
|
+
<tbody>
|
|
350
|
+
<tr>
|
|
351
|
+
<td>The headset is gone while an album plays</td>
|
|
352
|
+
<td>Pause, the position is saved. The speaker stays silent.</td>
|
|
353
|
+
</tr>
|
|
354
|
+
<tr>
|
|
355
|
+
<td>… the headset comes back within 10 minutes</td>
|
|
356
|
+
<td>It goes on in the headset.</td>
|
|
357
|
+
</tr>
|
|
358
|
+
<tr>
|
|
359
|
+
<td>… the headset comes back later</td>
|
|
360
|
+
<td>The pause stays. Play on the headset resumes.</td>
|
|
361
|
+
</tr>
|
|
362
|
+
<tr>
|
|
363
|
+
<td>… "next" or "back" on the box</td>
|
|
364
|
+
<td>It goes on through the speaker. The buttons act as during a pause (section 4).</td>
|
|
365
|
+
</tr>
|
|
366
|
+
<tr>
|
|
367
|
+
<td>… take the tag off and place it again</td>
|
|
368
|
+
<td>It goes on through the speaker.</td>
|
|
369
|
+
</tr>
|
|
370
|
+
<tr>
|
|
371
|
+
<td>The headset is gone, nothing plays</td>
|
|
372
|
+
<td>The speaker is active again.</td>
|
|
373
|
+
</tr>
|
|
374
|
+
</tbody>
|
|
375
|
+
</table>
|
|
376
|
+
<ul>
|
|
377
|
+
<li>If it was paused before the connection broke, it stays paused after reconnecting as well.</li>
|
|
378
|
+
<li>"louder" and "quieter" on the box change only the volume of the speaker during this pause. They do not resume.</li>
|
|
379
|
+
</ul>
|
|
380
|
+
<h3 id="54-buttons-on-the-headset"><span id="s5-4"></span>5.4 Buttons on the headset</h3>
|
|
381
|
+
<table>
|
|
382
|
+
<thead>
|
|
383
|
+
<tr>
|
|
384
|
+
<th>Button on the headset</th>
|
|
385
|
+
<th>Effect</th>
|
|
386
|
+
</tr>
|
|
387
|
+
</thead>
|
|
388
|
+
<tbody>
|
|
389
|
+
<tr>
|
|
390
|
+
<td>Next, back</td>
|
|
391
|
+
<td>like the buttons of the box</td>
|
|
392
|
+
</tr>
|
|
393
|
+
<tr>
|
|
394
|
+
<td>Play/pause</td>
|
|
395
|
+
<td>pause and resume (section 4)</td>
|
|
396
|
+
</tr>
|
|
397
|
+
<tr>
|
|
398
|
+
<td>Louder, quieter</td>
|
|
399
|
+
<td>volume of the headset, limited to its maximum</td>
|
|
400
|
+
</tr>
|
|
401
|
+
</tbody>
|
|
402
|
+
</table>
|
|
403
|
+
<h3 id="55-volume-of-the-headset"><span id="s5-5"></span>5.5 Volume of the headset</h3>
|
|
404
|
+
<table>
|
|
405
|
+
<thead>
|
|
406
|
+
<tr>
|
|
407
|
+
<th></th>
|
|
408
|
+
<th>Speaker</th>
|
|
409
|
+
<th>Headset</th>
|
|
410
|
+
</tr>
|
|
411
|
+
</thead>
|
|
412
|
+
<tbody>
|
|
413
|
+
<tr>
|
|
414
|
+
<td>Start volume</td>
|
|
415
|
+
<td>50 %, when the box is switched on</td>
|
|
416
|
+
<td>40 %, every time it connects</td>
|
|
417
|
+
</tr>
|
|
418
|
+
<tr>
|
|
419
|
+
<td>Maximum volume</td>
|
|
420
|
+
<td>82 %</td>
|
|
421
|
+
<td>75 %</td>
|
|
422
|
+
</tr>
|
|
423
|
+
<tr>
|
|
424
|
+
<td>The buttons of the box change</td>
|
|
425
|
+
<td>the speaker</td>
|
|
426
|
+
<td>the headset, as long as it is connected</td>
|
|
427
|
+
</tr>
|
|
428
|
+
</tbody>
|
|
429
|
+
</table>
|
|
430
|
+
<ul>
|
|
431
|
+
<li>The headset starts with its start volume every time it connects, never with the volume of last time.</li>
|
|
432
|
+
<li>The values can be changed (section 10).</li>
|
|
433
|
+
<li>The percentages refer to the headset: how loud 75 % is depends on the model. Set the maximum once with the
|
|
434
|
+
headset on the ear.</li>
|
|
435
|
+
</ul>
|
|
436
|
+
<h3 id="56-notes-on-headsets"><span id="s5-6"></span>5.6 Notes on headsets</h3>
|
|
437
|
+
<ul>
|
|
438
|
+
<li><strong>A phone nearby:</strong> Many headsets hold two connections at once (multipoint) and play whatever sent sound last. If
|
|
439
|
+
the headset is also connected to a phone, its sounds can drown out the box. Then disconnect the headset on the
|
|
440
|
+
phone.</li>
|
|
441
|
+
<li><strong>Limit in the app of the headset:</strong> Some headsets limit the volume themselves (Sony: "Max Volume Control" in the
|
|
442
|
+
app "Sound Connect"). That acts in addition to the limit of the box. A factory reset of the headset resets it.</li>
|
|
443
|
+
<li><strong>LE Audio:</strong> The box uses classic Bluetooth. A setting like "LE Audio Priority" in the app of the headset must be
|
|
444
|
+
switched off.</li>
|
|
445
|
+
<li><strong>Battery level:</strong> The web page shows it in the tab "Bluetooth" if the headset reports it.</li>
|
|
446
|
+
</ul>
|
|
447
|
+
<hr />
|
|
448
|
+
<h2 id="6-web-page"><span id="s6"></span>6. Web page</h2>
|
|
449
|
+
<h3 id="61-opening-and-logging-in"><span id="s6-1"></span>6.1 Opening and logging in</h3>
|
|
450
|
+
<ol>
|
|
451
|
+
<li>Phone, tablet or PC must be in the same WLAN as the box.</li>
|
|
452
|
+
<li>Open <code>https://tinyjukebox.local</code> in the browser (a further box has a name of its own: section 13.2).</li>
|
|
453
|
+
<li>The first time, the browser warns about the certificate: the box issues it for itself. Confirm the warning
|
|
454
|
+
("Advanced" → "Proceed to tinyjukebox.local" or similar).</li>
|
|
455
|
+
<li>Choose the language: the page is English the first time. The choice "Deutsch / English" is below the login,
|
|
456
|
+
after the login at the top right, and in the tab "System".</li>
|
|
457
|
+
<li>Log in with user name and password.</li>
|
|
458
|
+
</ol>
|
|
459
|
+
<ul>
|
|
460
|
+
<li>Above the login it says where you are: "Library", "Box" or the box with its name, e.g. Box "antonia". Every box
|
|
461
|
+
has colors of its own; they follow from its name (a box without a name has fixed colors as well). So you also see
|
|
462
|
+
after the login which box you are on.</li>
|
|
463
|
+
<li>The browser remembers the language, for this device and this box. On another device and on the page of another
|
|
464
|
+
box or of the library it is chosen once again.</li>
|
|
465
|
+
<li>The login stays. A new login is needed after 7 days without use, and on an open page on which nothing was done
|
|
466
|
+
for 30 minutes (section 11).</li>
|
|
467
|
+
<li>After 5 wrong passwords every further failed attempt blocks the login from this device for 30 seconds.</li>
|
|
468
|
+
</ul>
|
|
469
|
+
<h3 id="62-roles"><span id="s6-2"></span>6.2 Roles</h3>
|
|
470
|
+
<table>
|
|
471
|
+
<thead>
|
|
472
|
+
<tr>
|
|
473
|
+
<th>Role</th>
|
|
474
|
+
<th>may</th>
|
|
475
|
+
</tr>
|
|
476
|
+
</thead>
|
|
477
|
+
<tbody>
|
|
478
|
+
<tr>
|
|
479
|
+
<td><code>user</code></td>
|
|
480
|
+
<td>look at almost everything and operate the box: pause, track, volume, place tags; scan new tags with the phone in the library; change the own password</td>
|
|
481
|
+
</tr>
|
|
482
|
+
<tr>
|
|
483
|
+
<td><code>admin</code></td>
|
|
484
|
+
<td>in addition change everything: albums, tags, radio stations, covers, pair a headset, volume limits, users</td>
|
|
485
|
+
</tr>
|
|
486
|
+
</tbody>
|
|
487
|
+
</table>
|
|
488
|
+
<p>Only the role <code>admin</code> sees the tabs "Upload" and "Log", all buttons that change something, and these parts of the
|
|
489
|
+
page: in the tab "System" "Check consistency" and the cards "Hardware", "Backup", "Version" and "Users"; in the tab
|
|
490
|
+
"Spotify" the cards "Account" and "Player"; in the library the cards "Add a box", "Add a phone" and "Access for boxes
|
|
491
|
+
and scripts" (tab "Boxes"), "Access to the releases" (tab "Versions") and "The app on phones" (tab "Spotify").</p>
|
|
492
|
+
<h3 id="63-tabs"><span id="s6-3"></span>6.3 Tabs</h3>
|
|
493
|
+
<table>
|
|
494
|
+
<thead>
|
|
495
|
+
<tr>
|
|
496
|
+
<th>Tab</th>
|
|
497
|
+
<th>Content</th>
|
|
498
|
+
</tr>
|
|
499
|
+
</thead>
|
|
500
|
+
<tbody>
|
|
501
|
+
<tr>
|
|
502
|
+
<td>Now</td>
|
|
503
|
+
<td>what is playing: cover, album, track, position, list of tracks. Buttons back, pause/play, next, "Album from the start"; volume with slider and buttons. If an unknown tag is on the box: choose an album and "Link & play".</td>
|
|
504
|
+
</tr>
|
|
505
|
+
<tr>
|
|
506
|
+
<td>Tags</td>
|
|
507
|
+
<td>the tab for everyday use: all tags with the cover of their album or station, as tiles or as a list ("Tiles" / "List"), all of them or only those of albums, of radio stations or of Spotify ("All" / "Albums" / "Radio" / "Spotify"). The page remembers the choice. A click places the tag on the box as if it really stood there; a second click or "Take off tag" takes it off again.</td>
|
|
508
|
+
</tr>
|
|
509
|
+
<tr>
|
|
510
|
+
<td>Tag management</td>
|
|
511
|
+
<td>all tags with cover, name, UID, album or station and progress. Here tags are created, named, linked, unlinked and deleted.</td>
|
|
512
|
+
</tr>
|
|
513
|
+
<tr>
|
|
514
|
+
<td>Albums</td>
|
|
515
|
+
<td>a list of all albums for managing them: cover, title, number of tracks, playing time, tags, the day they were added and the folder. A click on a column heading sorts by it, a second click turns the order round. A click on the title opens the album: title and cover (both can be changed), list of tracks, linked tags, problems. "Look for new folders" takes in albums that were copied to the box directly.</td>
|
|
516
|
+
</tr>
|
|
517
|
+
<tr>
|
|
518
|
+
<td>Radio</td>
|
|
519
|
+
<td>all radio stations: create, rename, change the address, choose a cover, test, delete</td>
|
|
520
|
+
</tr>
|
|
521
|
+
<tr>
|
|
522
|
+
<td>Spotify</td>
|
|
523
|
+
<td>the entries of Spotify: create from a link, rename, change the link, choose a cover, test, delete; on a box also the account and the player (section 9)</td>
|
|
524
|
+
</tr>
|
|
525
|
+
<tr>
|
|
526
|
+
<td>Bluetooth</td>
|
|
527
|
+
<td>the paired headset: name, connected, battery, volume, start value and maximum; "Pair" and "Unpair"</td>
|
|
528
|
+
</tr>
|
|
529
|
+
<tr>
|
|
530
|
+
<td>Statistics</td>
|
|
531
|
+
<td>what was listened to on this box: per tag (a click on a column heading sorts the table by it, a second one turns the order round), per calendar day with the hours between which something was listened to, on speaker or headset, per radio station; skipped tracks; per version of the box software starts, errors and fallbacks, for how many days it was installed and for how many hours the box was switched on with it (total) and played something (active); at the very end the tags that were never placed. The library does the counting: if it cannot be reached, the tab says so. A box without a library counts by itself and reaches as far back as the last 1000 entries of its journal.</td>
|
|
532
|
+
</tr>
|
|
533
|
+
<tr>
|
|
534
|
+
<td>Upload</td>
|
|
535
|
+
<td>create a new album from MP3 files</td>
|
|
536
|
+
</tr>
|
|
537
|
+
<tr>
|
|
538
|
+
<td>System</td>
|
|
539
|
+
<td>state of the box, language of the page, "Check consistency", "Reset progress", hardware (state of buttons, LED and RFID reader, for troubleshooting), backup (section 11.1), library (section 13.2), version (section 13.4), change own password, users, progress per tag</td>
|
|
540
|
+
</tr>
|
|
541
|
+
<tr>
|
|
542
|
+
<td>Log</td>
|
|
543
|
+
<td>the messages of the box, live, with a filter; "Save as file"</td>
|
|
544
|
+
</tr>
|
|
545
|
+
</tbody>
|
|
546
|
+
</table>
|
|
547
|
+
<p>The buttons in the tab "Now" act like the buttons of the box.</p>
|
|
548
|
+
<p><strong>Help:</strong> "Help" at the top opens this manual at the chapter of the tab that is open, in the language of the page;
|
|
549
|
+
an admin finds the administration there too. The box brings the help along – it works without the internet and is
|
|
550
|
+
that of the version the box runs. After a login a hint points to the quick guide, until "Do not show it again" is
|
|
551
|
+
ticked; the browser keeps that.</p>
|
|
552
|
+
<hr />
|
|
553
|
+
<h2 id="7-mp3-albums"><span id="s7"></span>7. MP3 albums</h2>
|
|
554
|
+
<p>An album is a folder of MP3 files on the box; once it is there, it plays without WLAN. It continues where it stopped –
|
|
555
|
+
every tag with its own progress (section 7.4). Bringing albums onto the box, linking tags and changing covers needs the
|
|
556
|
+
role <code>admin</code>; starting an album from the beginning and looking at the progress the role <code>user</code> may do as well.</p>
|
|
557
|
+
<h3 id="71-bringing-a-new-album-onto-the-box"><span id="s7-1"></span>7.1 Bringing a new album onto the box</h3>
|
|
558
|
+
<ol>
|
|
559
|
+
<li>Tab "Upload".</li>
|
|
560
|
+
<li>Enter the title of the album. The folder on the box gets the same name.</li>
|
|
561
|
+
<li>If you like, choose a cover (JPEG, PNG or WebP). It can also be set later.</li>
|
|
562
|
+
<li>Drag MP3 files into the field, or "Choose files" or "Choose folder".</li>
|
|
563
|
+
<li>Check the order. It follows the track number in the files, otherwise the file name (2 before 10), and can be
|
|
564
|
+
changed before the album is created.</li>
|
|
565
|
+
<li>Optionally choose a tag under "Link to tag".</li>
|
|
566
|
+
<li>"Create album".</li>
|
|
567
|
+
</ol>
|
|
568
|
+
<p>Limits: MP3 files only, at most 500 MB per file and 500 files per album; 200 MB must stay free on the box
|
|
569
|
+
afterwards. An upload that was broken off is listed under "Unfinished uploads" and expires after one hour.</p>
|
|
570
|
+
<p>Changing title and cover: tab "Albums", open the album. Overwrite the title at the top – it is saved as soon as the
|
|
571
|
+
field is left. "Change cover" takes a new image (JPEG, PNG or WebP) and replaces the previous one. An album without a
|
|
572
|
+
cover shows the image from its MP3 files, if they contain one.</p>
|
|
573
|
+
<p>Deleting an album: tab "Albums", open the album, "Remove album" – with "Delete the files as well" the MP3 files
|
|
574
|
+
disappear too. This is possible only if no tag is linked to the album and it is not playing.</p>
|
|
575
|
+
<p>If an album shows problems (the LED blinks red): open the album. The problems are listed there, and "Rebuild
|
|
576
|
+
playlist from the MP3 files" writes the list of tracks anew.</p>
|
|
577
|
+
<h3 id="72-linking-a-tag"><span id="s7-2"></span>7.2 Linking a tag</h3>
|
|
578
|
+
<p>A tag plays what it is linked to: an album, a radio station (section 8) or an entry of Spotify (section 9). Linking
|
|
579
|
+
works the same for all three.</p>
|
|
580
|
+
<p>New tag:</p>
|
|
581
|
+
<ol>
|
|
582
|
+
<li>Place the tag on the box. The LED is yellow.</li>
|
|
583
|
+
<li>Tab "Now": under "Unknown tag placed" choose the album, the station or the entry of Spotify.</li>
|
|
584
|
+
<li>"Link & play". It starts at once.</li>
|
|
585
|
+
</ol>
|
|
586
|
+
<p>Known tag:</p>
|
|
587
|
+
<ul>
|
|
588
|
+
<li>Tab "Tag management", column "Album / station": choose another one, or "— not linked —".</li>
|
|
589
|
+
<li>Unlinking is also possible in the tab "Now" ("Unlink" for the tag on the box) and in the album dialog (✕ at
|
|
590
|
+
the tag). The progress is kept.</li>
|
|
591
|
+
<li>Give a tag a name in the tab "Tag management", e.g. "red cat" – that makes it easier to tell the tags apart.</li>
|
|
592
|
+
<li>Deleting a tag: tab "Tag management". Its progress is lost with it.</li>
|
|
593
|
+
</ul>
|
|
594
|
+
<p>Several tags can have the same album; each has its own progress.</p>
|
|
595
|
+
<p>If there is a library, a new tag can also be created without a box: with the phone (section 13.5).</p>
|
|
596
|
+
<h3 id="73-covers"><span id="s7-3"></span>7.3 Covers</h3>
|
|
597
|
+
<p>A tag shows the cover of its album, station or entry of Spotify, in the tabs "Tags", "Tag management" and "Now". A tag
|
|
598
|
+
has no picture of its own: two tags with the same album show the same cover, and a tag that is not linked shows none.</p>
|
|
599
|
+
<ul>
|
|
600
|
+
<li>Cover of an album: tab "Albums", open the album, "Change cover" (section 7.1).</li>
|
|
601
|
+
<li>Cover of a station: tab "Radio", click the image in front of the station (section 8).</li>
|
|
602
|
+
<li>Cover of an entry of Spotify: it comes from Spotify; in the tab "Spotify" click the image in front of the
|
|
603
|
+
entry to choose another one (section 9).</li>
|
|
604
|
+
</ul>
|
|
605
|
+
<h3 id="74-progress"><span id="s7-4"></span>7.4 Progress</h3>
|
|
606
|
+
<ul>
|
|
607
|
+
<li>Tab "System", "Progress per tag": the saved position of every tag.</li>
|
|
608
|
+
<li>"Reset progress" sets all albums to their beginning.</li>
|
|
609
|
+
<li>A single album starts from the beginning by holding "back" for 1 s on the box or with "Album from the start" in
|
|
610
|
+
the tab "Now".</li>
|
|
611
|
+
</ul>
|
|
612
|
+
<hr />
|
|
613
|
+
<h2 id="8-radio"><span id="s8"></span>8. Radio</h2>
|
|
614
|
+
<p>A tag can play an internet radio station instead of an album; it needs WLAN. The station plays as long as the tag is on
|
|
615
|
+
the box; there is no progress. Creating and changing stations needs the role <code>admin</code>; a tag is linked to a station as to
|
|
616
|
+
an album (section 7.2).</p>
|
|
617
|
+
<ol>
|
|
618
|
+
<li>Tab "Radio", "Create a new station": enter name and address.</li>
|
|
619
|
+
<li>"Test" plays the address for one minute, also before it is saved. This is possible only while no tag is on
|
|
620
|
+
the box; if one is placed, the test ends.</li>
|
|
621
|
+
<li>"Create".</li>
|
|
622
|
+
<li>Tab "Tag management": assign the station to the tag.</li>
|
|
623
|
+
</ol>
|
|
624
|
+
<ul>
|
|
625
|
+
<li><strong>Address:</strong> the stream itself (e.g. <code>https://…/stream.mp3</code>) or a playlist that names it (<code>.m3u</code>, <code>.pls</code>,
|
|
626
|
+
<code>.m3u8</code>). It begins with <code>http://</code> or <code>https://</code>.</li>
|
|
627
|
+
<li><strong>Interruption:</strong> If the stream cannot be reached or breaks off, the box connects again after 1, 2, 5, 10 and
|
|
628
|
+
then every 30 seconds. The LED is aqua for that time. The tab "Now" shows "connection interrupted – trying again";
|
|
629
|
+
the reason appears when the mouse pointer rests on it.</li>
|
|
630
|
+
<li><strong>Start:</strong> Until the sound of the station can be heard, the LED flows green → aqua → blue. The box first collects
|
|
631
|
+
two seconds of the stream so that short gaps of the WLAN are not heard.</li>
|
|
632
|
+
<li>If the address of a station that is playing is changed, it starts with the new address.</li>
|
|
633
|
+
<li><strong>Cover:</strong> In the tab "Radio" click the image in front of the station and choose an image (JPEG, PNG or WebP). It
|
|
634
|
+
replaces the previous one and also appears in the tab "Now" and with the tags of the station.</li>
|
|
635
|
+
<li>A station that is linked to tags or is playing cannot be deleted. Unlink first.</li>
|
|
636
|
+
</ul>
|
|
637
|
+
<p>Examples:</p>
|
|
638
|
+
<table>
|
|
639
|
+
<thead>
|
|
640
|
+
<tr>
|
|
641
|
+
<th>Station</th>
|
|
642
|
+
<th>Address</th>
|
|
643
|
+
</tr>
|
|
644
|
+
</thead>
|
|
645
|
+
<tbody>
|
|
646
|
+
<tr>
|
|
647
|
+
<td>88.6</td>
|
|
648
|
+
<td><code>http://radio886.at/streams/radio_88.6/mp3</code></td>
|
|
649
|
+
</tr>
|
|
650
|
+
<tr>
|
|
651
|
+
<td>Ö1</td>
|
|
652
|
+
<td><code>https://orf-live.ors-shoutcast.at/oe1-q2a</code></td>
|
|
653
|
+
</tr>
|
|
654
|
+
<tr>
|
|
655
|
+
<td>Ö3</td>
|
|
656
|
+
<td><code>https://orf-live.ors-shoutcast.at/oe3-q2a</code></td>
|
|
657
|
+
</tr>
|
|
658
|
+
<tr>
|
|
659
|
+
<td>FM4</td>
|
|
660
|
+
<td><code>https://orf-live.ors-shoutcast.at/fm4-q2a</code></td>
|
|
661
|
+
</tr>
|
|
662
|
+
</tbody>
|
|
663
|
+
</table>
|
|
664
|
+
<hr />
|
|
665
|
+
<h2 id="9-spotify"><span id="s9"></span>9. Spotify</h2>
|
|
666
|
+
<p>A tag can play an album, a playlist, an audiobook or a podcast of Spotify. It plays like an album: it continues where it
|
|
667
|
+
stopped, and "next" and "back" work. It needs the internet, a Spotify Premium account for the key, and a Spotify account
|
|
668
|
+
of its own for the box. Setting up the account, the player and the entries needs the role <code>admin</code>; a tag is linked to an
|
|
669
|
+
entry as to an album (section 7.2).</p>
|
|
670
|
+
<p>Once per box, tab "Spotify", cards "Account" and "Player":</p>
|
|
671
|
+
<ol>
|
|
672
|
+
<li>The key: on developer.spotify.com, Dashboard → "Spotify Soloist API Key", logged in with a Premium account. Paste
|
|
673
|
+
it under "Account" and save it. The box fetches the player of Spotify; "Player" then says "Ready".</li>
|
|
674
|
+
<li>"Connect", then choose the box within five minutes in the Spotify app of a phone in the same WLAN – logged in to
|
|
675
|
+
the Spotify account of the box.</li>
|
|
676
|
+
</ol>
|
|
677
|
+
<p>Then for every entry:</p>
|
|
678
|
+
<ol start="3">
|
|
679
|
+
<li>In the Spotify app: "Share" → "Copy link". Tab "Spotify", "Create a new entry": paste the link. Name and cover
|
|
680
|
+
come from Spotify; a podcast is named by hand.</li>
|
|
681
|
+
<li>"Test" plays it for one minute – only while no tag is on the box.</li>
|
|
682
|
+
<li>Tab "Tag management": assign the entry to the tag.</li>
|
|
683
|
+
</ol>
|
|
684
|
+
<ul>
|
|
685
|
+
<li><strong>An account of its own:</strong> One Spotify account plays in one place at a time. The box has an account of its own (a
|
|
686
|
+
family subscription has six), so that a tag on the box stops nobody's music.</li>
|
|
687
|
+
<li><strong>The phone has no influence</strong> while a tag plays: what it changes on the box is undone. Music started elsewhere
|
|
688
|
+
with the account of the box pauses the box; "Play" takes it back.</li>
|
|
689
|
+
<li><strong>Continuing:</strong> Spotify always starts at the first track; the box skips silently to the saved one. With a long
|
|
690
|
+
playlist that takes a few seconds; the LED is aqua meanwhile.</li>
|
|
691
|
+
<li><strong>Spotify speaker:</strong> With "Spotify speaker while no tag is on the box" switched on, the Spotify app of the box's
|
|
692
|
+
account can play on the box while no tag is on it. The buttons of the box steer it, and a tag wins. The volume is
|
|
693
|
+
always the box's.</li>
|
|
694
|
+
<li><strong>The player</strong> of Spotify stops working 90 days after it was built. The box looks for a new one by itself from 30
|
|
695
|
+
days before that; "Update now" asks Spotify at once.</li>
|
|
696
|
+
<li>Key and login stay on the box: they are not in the library and not in a backup.</li>
|
|
697
|
+
</ul>
|
|
698
|
+
<hr />
|
|
699
|
+
<h2 id="10-limiting-the-volume"><span id="s10"></span>10. Limiting the volume</h2>
|
|
700
|
+
<p>Speaker and headset each have a start value and a maximum:</p>
|
|
701
|
+
<table>
|
|
702
|
+
<thead>
|
|
703
|
+
<tr>
|
|
704
|
+
<th></th>
|
|
705
|
+
<th>Start value</th>
|
|
706
|
+
<th>Maximum</th>
|
|
707
|
+
</tr>
|
|
708
|
+
</thead>
|
|
709
|
+
<tbody>
|
|
710
|
+
<tr>
|
|
711
|
+
<td>Speaker</td>
|
|
712
|
+
<td>applies when the box is switched on</td>
|
|
713
|
+
<td>applies always</td>
|
|
714
|
+
</tr>
|
|
715
|
+
<tr>
|
|
716
|
+
<td>Headset</td>
|
|
717
|
+
<td>applies every time it connects</td>
|
|
718
|
+
<td>applies always, also for the buttons on the headset</td>
|
|
719
|
+
</tr>
|
|
720
|
+
</tbody>
|
|
721
|
+
</table>
|
|
722
|
+
<p>Changing them (role <code>admin</code>): tab "Now", "change" below the volume slider – or tab "Bluetooth", "Change start value
|
|
723
|
+
and maximum".</p>
|
|
724
|
+
<ul>
|
|
725
|
+
<li>The rule is: 0 ≤ start value ≤ maximum ≤ 100.</li>
|
|
726
|
+
<li>A lowered maximum lowers a higher current volume at once.</li>
|
|
727
|
+
<li>A new start value takes effect the next time the box is switched on or the headset connects.</li>
|
|
728
|
+
<li>The values are kept, also after switching off.</li>
|
|
729
|
+
<li>The role <code>user</code> sees the values but cannot change them. So nobody changes the hearing protection in passing.</li>
|
|
730
|
+
<li>The box can limit the buttons on the headset only for headsets that align their volume with the box ("Absolute
|
|
731
|
+
Volume"). The volume that the box itself sets is always limited.</li>
|
|
732
|
+
</ul>
|
|
733
|
+
<hr />
|
|
734
|
+
<h2 id="11-users-and-passwords"><span id="s11"></span>11. Users and passwords</h2>
|
|
735
|
+
<ul>
|
|
736
|
+
<li><strong>Change own password</strong> (every user): tab "System", "Change own password" – with the current password. A new
|
|
737
|
+
login is needed on all other devices afterwards.</li>
|
|
738
|
+
<li><strong>Managing users</strong> (role <code>admin</code>): tab "System", "Users" – create a user (role <code>user</code> or <code>admin</code>), set a
|
|
739
|
+
password, delete.<ul>
|
|
740
|
+
<li>A new password logs the user out on every other device.</li>
|
|
741
|
+
<li>The own user cannot be deleted. So there is always an admin.</li>
|
|
742
|
+
<li>The role of an existing user cannot be changed on the web page: delete the user and create it again.</li>
|
|
743
|
+
</ul>
|
|
744
|
+
</li>
|
|
745
|
+
<li>Passwords have at least 8 characters.</li>
|
|
746
|
+
<li><strong>Logged out by itself:</strong> besides the 7 days without use (section 6.1), an open page on which nothing was done
|
|
747
|
+
for 30 minutes logs out and says so on the login page. Moving the mouse, a tap or a key counts as doing
|
|
748
|
+
something; an upload that runs counts too. The time can be changed or switched off in the config of the box or of
|
|
749
|
+
the library (<a href="https://tgd1975.github.io/tinyjukebox/reference/configuration/">configuration.md</a>, section 5).</li>
|
|
750
|
+
<li>Password forgotten: an admin sets a new one. If no admin knows the password any more, only access to the box
|
|
751
|
+
itself helps (<a href="https://tgd1975.github.io/tinyjukebox/reference/operations/">operations.md</a>, section 4).</li>
|
|
752
|
+
</ul>
|
|
753
|
+
<h3 id="111-backup"><span id="s11-1"></span>11.1 Backup</h3>
|
|
754
|
+
<p>A backup is a file with the data of the box: tags, links, progress, volumes and the covers of albums and stations.
|
|
755
|
+
Only the role <code>admin</code> can make one.</p>
|
|
756
|
+
<ul>
|
|
757
|
+
<li>Tab "System", "Backup": <strong>"Download backup"</strong> saves the file on the device you are sitting at. It is small.</li>
|
|
758
|
+
<li><strong>"Download backup with MP3s"</strong> takes the albums along as well. The file is then as large as all albums
|
|
759
|
+
together, and the download takes that long.</li>
|
|
760
|
+
<li>Users, passwords and keys are never in a backup.</li>
|
|
761
|
+
<li>A box that works with a library needs no backup of its own: everything is in the library, and the library backs
|
|
762
|
+
itself up (section 13.6).</li>
|
|
763
|
+
</ul>
|
|
764
|
+
<h3 id="112-back-up-regularly"><span id="s11-2"></span>11.2 Back up regularly</h3>
|
|
765
|
+
<p>A box that works without a library – and the library (section 13.6) – makes backups by itself: tab "System", card
|
|
766
|
+
"Backup", "Back up regularly". There are two schedules, independent of each other: one for the backups without MP3s,
|
|
767
|
+
one for those with MP3s.</p>
|
|
768
|
+
<table>
|
|
769
|
+
<thead>
|
|
770
|
+
<tr>
|
|
771
|
+
<th>Setting</th>
|
|
772
|
+
<th>Meaning</th>
|
|
773
|
+
</tr>
|
|
774
|
+
</thead>
|
|
775
|
+
<tbody>
|
|
776
|
+
<tr>
|
|
777
|
+
<td>regularly</td>
|
|
778
|
+
<td>Backups of this kind are made by themselves.</td>
|
|
779
|
+
</tr>
|
|
780
|
+
<tr>
|
|
781
|
+
<td>every … at …</td>
|
|
782
|
+
<td>how often – a number of days, weeks or months – and at what time of day. With months: on the same day of the month as the last backup.</td>
|
|
783
|
+
</tr>
|
|
784
|
+
<tr>
|
|
785
|
+
<td>… backups are kept</td>
|
|
786
|
+
<td>Older backups of this kind are deleted.</td>
|
|
787
|
+
</tr>
|
|
788
|
+
<tr>
|
|
789
|
+
<td>Folder</td>
|
|
790
|
+
<td>where these backups are put. Empty: the given folder, on a box <code>backups</code> beside the albums.</td>
|
|
791
|
+
</tr>
|
|
792
|
+
</tbody>
|
|
793
|
+
</table>
|
|
794
|
+
<ul>
|
|
795
|
+
<li>An example: without MP3s every week, 52 kept – a year of small backups; with MP3s every month, 2 kept – the
|
|
796
|
+
current one and the one before, each as large as all albums.</li>
|
|
797
|
+
<li>"Save" takes over the settings of both schedules. "Back up now" and "Back up now with MP3s" make a backup at once;
|
|
798
|
+
it goes into the folder of its kind and counts for its number.</li>
|
|
799
|
+
<li>The table below shows the backups of both folders with their kind. Each can be downloaded and deleted.</li>
|
|
800
|
+
<li>Under each schedule it says where its backups are, when the last one was made and when the next one is due – or
|
|
801
|
+
why the last one failed.</li>
|
|
802
|
+
<li>If a folder is changed, the previous backups stay in the old folder.</li>
|
|
803
|
+
<li>A box that works with a library does not show this part: the library makes the backups. The settings are kept
|
|
804
|
+
and count again if the box is unlinked from the library.</li>
|
|
805
|
+
<li>On a box the backups lie on its SD card, like the data itself. Against a broken card only a backup helps that was
|
|
806
|
+
downloaded, or a folder on another drive.</li>
|
|
807
|
+
</ul>
|
|
808
|
+
<h3 id="113-putting-a-backup-back"><span id="s11-3"></span>11.3 Putting a backup back</h3>
|
|
809
|
+
<p>A backup replaces the data of the box – or of the library – by those of the day it was made. Only the role <code>admin</code>
|
|
810
|
+
can do it: tab "System", card "Backup", "Put a backup back".</p>
|
|
811
|
+
<ol>
|
|
812
|
+
<li><strong>"Choose backup …"</strong> and choose the file on the device you are sitting at. With a backup that was made by a
|
|
813
|
+
schedule: "Put back" next to it in the table.</li>
|
|
814
|
+
<li>The backup is sent and read to its end; with MP3s this takes as long as a download. A file that is no backup, is
|
|
815
|
+
cut off or belongs to the library and not to a box is refused – nothing is changed then.</li>
|
|
816
|
+
<li>The page asks once: "This replaces all data by those of …". With MP3s all albums are deleted and replaced.
|
|
817
|
+
Cancel, and nothing is changed.</li>
|
|
818
|
+
<li>After "OK" the box (or the library) stops, puts the data in place and starts again. The page loads anew; log in
|
|
819
|
+
again.</li>
|
|
820
|
+
</ol>
|
|
821
|
+
<ul>
|
|
822
|
+
<li>No backup is made before. If the data of now may be needed again: cancel and download a backup first.</li>
|
|
823
|
+
<li>Users, passwords, keys and where the backups go stay as they are.</li>
|
|
824
|
+
<li>A backup without MP3s leaves the albums as they are. If the data names an album whose folder is gone, the card
|
|
825
|
+
says so afterwards and names it.</li>
|
|
826
|
+
<li>A box that works with a library gets the state of the library again at its next synchronization. Put a backup back
|
|
827
|
+
on the library instead (section 13.6).</li>
|
|
828
|
+
</ul>
|
|
829
|
+
<hr />
|
|
830
|
+
<h2 id="12-if-something-does-not-work"><span id="s12"></span>12. If something does not work</h2>
|
|
831
|
+
<table>
|
|
832
|
+
<thead>
|
|
833
|
+
<tr>
|
|
834
|
+
<th>Observation</th>
|
|
835
|
+
<th>Cause and remedy</th>
|
|
836
|
+
</tr>
|
|
837
|
+
</thead>
|
|
838
|
+
<tbody>
|
|
839
|
+
<tr>
|
|
840
|
+
<td>LED off</td>
|
|
841
|
+
<td>no power: check power bank and cable</td>
|
|
842
|
+
</tr>
|
|
843
|
+
<tr>
|
|
844
|
+
<td>LED stays red</td>
|
|
845
|
+
<td>The box does not start. Switch it off and on again. If it stays that way: administrator.</td>
|
|
846
|
+
</tr>
|
|
847
|
+
<tr>
|
|
848
|
+
<td>LED green, the tag is not recognized</td>
|
|
849
|
+
<td>Place the tag in the middle. Try another tag. If the box recognizes no tag any more: switch it off and on again.</td>
|
|
850
|
+
</tr>
|
|
851
|
+
<tr>
|
|
852
|
+
<td>LED yellow</td>
|
|
853
|
+
<td>The tag is not linked: section 7.2</td>
|
|
854
|
+
</tr>
|
|
855
|
+
<tr>
|
|
856
|
+
<td>LED yellow/red in turn</td>
|
|
857
|
+
<td>The album of the tag was deleted: link it again (section 7.2)</td>
|
|
858
|
+
</tr>
|
|
859
|
+
<tr>
|
|
860
|
+
<td>LED red, blinking</td>
|
|
861
|
+
<td>The album is broken: tab "Albums", open the album (section 7.1). A tag of Spotify: Spotify cannot play on this box – tab "Spotify", cards "Account" and "Player" (section 9).</td>
|
|
862
|
+
</tr>
|
|
863
|
+
<tr>
|
|
864
|
+
<td>LED aqua, no sound (radio, Spotify)</td>
|
|
865
|
+
<td>The station or Spotify cannot be reached: check the WLAN (sections 8 and 9)</td>
|
|
866
|
+
</tr>
|
|
867
|
+
<tr>
|
|
868
|
+
<td>LED green → aqua → blue, it takes long</td>
|
|
869
|
+
<td>The box fetches the album from the library. The first track takes some seconds, depending on the WLAN. If the LED starts blinking red: the library cannot be reached, and the album has never been on this box.</td>
|
|
870
|
+
</tr>
|
|
871
|
+
<tr>
|
|
872
|
+
<td>LED red, white, magenta, yellow in turn</td>
|
|
873
|
+
<td>section 13.4</td>
|
|
874
|
+
</tr>
|
|
875
|
+
<tr>
|
|
876
|
+
<td>LED white/blue, no sound</td>
|
|
877
|
+
<td>Pause. Play, "next", or take the tag off and place it again (section 4)</td>
|
|
878
|
+
</tr>
|
|
879
|
+
<tr>
|
|
880
|
+
<td>LED blue, no sound</td>
|
|
881
|
+
<td>Is a headset connected? Then only it plays. Check the volume.</td>
|
|
882
|
+
</tr>
|
|
883
|
+
<tr>
|
|
884
|
+
<td>The headset does not connect</td>
|
|
885
|
+
<td>Switch the headset off and on, wait 15 s. Connected to a phone? Disconnect it there. Otherwise pair again (section 5.1).</td>
|
|
886
|
+
</tr>
|
|
887
|
+
<tr>
|
|
888
|
+
<td>Pairing: the LED blinks red</td>
|
|
889
|
+
<td>The headset was not in pairing mode or too far away: repeat.</td>
|
|
890
|
+
</tr>
|
|
891
|
+
<tr>
|
|
892
|
+
<td>The sound in the headset is overlaid by other sounds</td>
|
|
893
|
+
<td>The headset is also connected to a phone (section 5.6).</td>
|
|
894
|
+
</tr>
|
|
895
|
+
<tr>
|
|
896
|
+
<td>The web page does not open</td>
|
|
897
|
+
<td>Device in the same WLAN? Box switched on (LED)? <code>https://</code> in front?</td>
|
|
898
|
+
</tr>
|
|
899
|
+
<tr>
|
|
900
|
+
<td>Login refused</td>
|
|
901
|
+
<td>Check the password. After several failed attempts wait 30 seconds.</td>
|
|
902
|
+
</tr>
|
|
903
|
+
<tr>
|
|
904
|
+
<td>The album starts from the beginning instead of the old position</td>
|
|
905
|
+
<td>The album had been listened to the end, or the tag was linked to another album, or the playlist was shortened.</td>
|
|
906
|
+
</tr>
|
|
907
|
+
</tbody>
|
|
908
|
+
</table>
|
|
909
|
+
<p>Troubleshooting for administrators: <a href="admin.html">administration</a>, section 9.</p>
|
|
910
|
+
<hr />
|
|
911
|
+
<h2 id="13-library"><span id="s13"></span>13. Library</h2>
|
|
912
|
+
<p>The library is a program in the home network, for example on the NAS. It holds all albums, tags, radio stations
|
|
913
|
+
and covers. Every box fetches from there what it lacks – and without the library it plays what it has already.
|
|
914
|
+
A box without a library works as before.</p>
|
|
915
|
+
<h3 id="131-what-changes-for-the-box"><span id="s13-1"></span>13.1 What changes for the box</h3>
|
|
916
|
+
<ul>
|
|
917
|
+
<li><strong>All boxes know the same tags.</strong> A tag that was linked on a box or in the library plays on every box.</li>
|
|
918
|
+
<li><strong>Albums come when they are needed.</strong> If a tag is placed on a box that does not have the album yet, the box
|
|
919
|
+
fetches it. The LED changes green → aqua → blue meanwhile, and the box plays as soon as the first track is there.</li>
|
|
920
|
+
<li><strong>The progress belongs to the box.</strong> The same tag continues at another position in the nursery than in the
|
|
921
|
+
kitchen.</li>
|
|
922
|
+
<li><strong>Nothing is lost without WLAN.</strong> What is changed on a box applies there at once and reaches the library as soon
|
|
923
|
+
as the box reaches it again. If both change the same tag, the state of the library applies.</li>
|
|
924
|
+
<li><strong>The space on the SD card takes care of itself.</strong> If it gets short, the box deletes the files of the album that
|
|
925
|
+
was not listened to for the longest time. The library still has it, and the box fetches it again when the tag
|
|
926
|
+
is placed.</li>
|
|
927
|
+
</ul>
|
|
928
|
+
<h3 id="132-connecting-a-box-to-the-library"><span id="s13-2"></span>13.2 Connecting a box to the library</h3>
|
|
929
|
+
<p>Role <code>admin</code>, tab "System", section "Library":</p>
|
|
930
|
+
<ol>
|
|
931
|
+
<li>Enter the address of the library, e.g. <code>https://nas:8866</code>.</li>
|
|
932
|
+
<li>The first time, enter the bootstrap password. It was set when the library was installed.</li>
|
|
933
|
+
<li>"Save", then switch the box off and on.</li>
|
|
934
|
+
</ol>
|
|
935
|
+
<p>After that the section shows "connected", and the box appears on the page of the library. What the box had before
|
|
936
|
+
moves into the library; albums that exist there already are recognized and not created twice.
|
|
937
|
+
"Not confirmed yet" counts the changes that the library has not taken over yet. "This box" shows the name
|
|
938
|
+
of the box; "Rename" next to it gives it another one, e.g. "Nursery". The library shows it under this name.</p>
|
|
939
|
+
<p><strong>A new box:</strong> the page of the library shows a line for it – tab "Boxes", section "Add a box", "Copy". Write
|
|
940
|
+
Raspberry Pi OS Lite (64-bit) to the SD card of the new box with the Raspberry Pi Imager. In the Imager, give the box a
|
|
941
|
+
hostname of its own, e.g. <code>kitchen</code>; the page of the box is then <code>https://kitchen.local</code>. Log in over SSH and run the
|
|
942
|
+
line there. It asks for the password of the user <code>admin</code> of the page of the new box and for the bootstrap password,
|
|
943
|
+
sets everything up and restarts the box once. Afterwards the box is connected and appears in the tab "Boxes" by
|
|
944
|
+
itself. A box without a library is set up the same way, but with a different line, from GitHub
|
|
945
|
+
(<code>curl -fsSL https://github.com/tgd1975/tinyjukebox/releases/latest/download/install.sh | sudo bash</code>).</p>
|
|
946
|
+
<p><strong>Unlinking:</strong> "Unlink from the library" in the same section. The box keeps everything on its SD card – tags,
|
|
947
|
+
albums, stations, progress – and works on its own afterwards. The library is not asked; it may be switched off or
|
|
948
|
+
not exist any more. Before that the page says what is lost: changes that the library has not taken over yet never
|
|
949
|
+
reach it, and albums that are not completely on the SD card cannot be fetched any more. With "Cancel" you wait until
|
|
950
|
+
the box has delivered and fetched. The library keeps showing the box until it is removed there (tab "Boxes").
|
|
951
|
+
Linking again works like the first time, with the address and the bootstrap password.</p>
|
|
952
|
+
<h3 id="133-the-page-of-the-library"><span id="s13-3"></span>13.3 The page of the library</h3>
|
|
953
|
+
<p>The page of the library looks like the one of a box, without "Now" and "Bluetooth". It has users of its own: who
|
|
954
|
+
can log in to a box cannot do so there automatically; an admin of the library creates the users in its tab
|
|
955
|
+
"System". Albums, tags, stations and covers are managed there as in sections 7 to 9.</p>
|
|
956
|
+
<p>In the tab "Albums" an album is marked "broken" if one of its MP3 files is damaged: because the library cannot read
|
|
957
|
+
the file or because a box found errors in it while playing. The album dialog names the files. If the file is
|
|
958
|
+
replaced, the mark disappears. If the file is fine and the report of a box was wrong, an administrator removes the
|
|
959
|
+
report there with "Discard reports".</p>
|
|
960
|
+
<p>Only the library has these tabs; its tab "Statistics" covers all boxes:</p>
|
|
961
|
+
<table>
|
|
962
|
+
<thead>
|
|
963
|
+
<tr>
|
|
964
|
+
<th>Tab</th>
|
|
965
|
+
<th>Content</th>
|
|
966
|
+
</tr>
|
|
967
|
+
</thead>
|
|
968
|
+
<tbody>
|
|
969
|
+
<tr>
|
|
970
|
+
<td>Boxes</td>
|
|
971
|
+
<td>all boxes with version, last contact and address – for a box a link to its page. Rename, remove (e.g. after a lost SD card), take over the progress of an old box to a newly set up one. Albums that are being uploaded from a box. For administrators: change the bootstrap password, create a token for scripts, check the files of albums and covers.</td>
|
|
972
|
+
</tr>
|
|
973
|
+
<tr>
|
|
974
|
+
<td>Versions</td>
|
|
975
|
+
<td>the versions of the box software. Old versions that are not in the archive any more and that no box runs are left out, as long as "hide old versions that are not in the archive" is ticked; the page says how many. <code>use</code>: boxes install them by themselves. <code>manual</code>: by hand only. <code>dontuse</code>: every box leaves it at once. "Runs on" names the boxes a version runs on and the library itself, "Prepared on" the boxes that have fetched it already and try it the next time they are switched on. Below the table it is set how many versions the library keeps at most (5 at first); what a box still needs always stays. "Access to the releases" says where new versions come from; the token with which the library may fetch them is saved there. On GitHub a fine-grained token for this one repository with the right "Contents: Read-only" is enough.</td>
|
|
976
|
+
</tr>
|
|
977
|
+
<tr>
|
|
978
|
+
<td>Statistics</td>
|
|
979
|
+
<td>the same as the tab "Statistics" of a box (section 6.3). With several boxes "All boxes" or one of them is chosen at the top. "All boxes" sums per tag, radio station, skipped track and version and names for every tag on which box it played for how long; a table of the boxes shows listening time and when a tag was placed last, a click on a box chooses it. The days are never summed: every box has its own row with its own hours.</td>
|
|
980
|
+
</tr>
|
|
981
|
+
<tr>
|
|
982
|
+
<td>Log</td>
|
|
983
|
+
<td>the messages of the library, live, also as a file – or what a box delivered of its log: its warnings and errors and how the start of a radio station went, for 30 days. Filters for level, part, version, code, time and text; "Copy" and "Save as file". A box that cannot start is marked in the choice and in the tab "Boxes"; its log shows at the top why. Administrators only.</td>
|
|
984
|
+
</tr>
|
|
985
|
+
</tbody>
|
|
986
|
+
</table>
|
|
987
|
+
<h3 id="134-version-of-the-box"><span id="s13-4"></span>13.4 Version of the box</h3>
|
|
988
|
+
<p>A box that is set up for it fetches new versions from the library by itself and tries them the next time it is
|
|
989
|
+
switched on. If the new version does not work, the previous one runs again after a few seconds. Tab "System",
|
|
990
|
+
section "Version" (role <code>admin</code>):</p>
|
|
991
|
+
<table>
|
|
992
|
+
<thead>
|
|
993
|
+
<tr>
|
|
994
|
+
<th>Button</th>
|
|
995
|
+
<th>Effect</th>
|
|
996
|
+
</tr>
|
|
997
|
+
</thead>
|
|
998
|
+
<tbody>
|
|
999
|
+
<tr>
|
|
1000
|
+
<td>Look for a new version</td>
|
|
1001
|
+
<td>shows what is installed and what the library offers</td>
|
|
1002
|
+
</tr>
|
|
1003
|
+
<tr>
|
|
1004
|
+
<td>Update now</td>
|
|
1005
|
+
<td>fetches the newest version and restarts the box</td>
|
|
1006
|
+
</tr>
|
|
1007
|
+
<tr>
|
|
1008
|
+
<td>Updates: off, by hand only, automatic</td>
|
|
1009
|
+
<td>whether the box installs new versions by itself. "Off": it does not even look. On a box without a library "by hand only" is called "ask".</td>
|
|
1010
|
+
</tr>
|
|
1011
|
+
<tr>
|
|
1012
|
+
<td>Back to the previous version</td>
|
|
1013
|
+
<td>at once, even if something is playing. No box installs the version that was left by itself any more.</td>
|
|
1014
|
+
</tr>
|
|
1015
|
+
<tr>
|
|
1016
|
+
<td>Start emergency mode</td>
|
|
1017
|
+
<td>for the case that no other version runs: the box plays nothing, installs the newest version it has not gone back from and starts it. With updates "off" or "by hand only" it waits for an administrator.</td>
|
|
1018
|
+
</tr>
|
|
1019
|
+
<tr>
|
|
1020
|
+
<td>Keep as emergency version</td>
|
|
1021
|
+
<td>the running, proven version becomes the emergency version, with which the box asks for versions in emergency mode</td>
|
|
1022
|
+
</tr>
|
|
1023
|
+
</tbody>
|
|
1024
|
+
</table>
|
|
1025
|
+
<p><strong>Emergency mode.</strong> If neither version of the box runs, the box switches to emergency mode by itself. It plays
|
|
1026
|
+
nothing and shows no page; every 10 minutes it looks for a version it can install. An administrator ends it on the
|
|
1027
|
+
console: <code>tinyjukebox-slot update --now</code> installs a version and starts it, <code>tinyjukebox-slot use a|b</code> switches to one
|
|
1028
|
+
of the two versions. <code>tinyjukebox-slot status</code> says why the box is in emergency mode.</p>
|
|
1029
|
+
<p><strong>Data left out.</strong> If the box finds a damaged entry, or one that a newer version wrote and this version does not
|
|
1030
|
+
know, it works without it and lists it in the section "Version" under "Data left out". Nothing of it is deleted. In
|
|
1031
|
+
the library the tab "Boxes" shows such a box with a note.</p>
|
|
1032
|
+
<p>If the LED changes between red, white, magenta and yellow, the library is too old for the version of the box. The
|
|
1033
|
+
box plays nothing then. Remedy: update the library, "Back to the previous version" on the box, or unlink the box
|
|
1034
|
+
from the library (section 13.2).</p>
|
|
1035
|
+
<p><strong>A box without a library</strong> fetches new versions itself: once a day it looks at GitHub whether there is a new
|
|
1036
|
+
release. "Source" in the section "Version" says where the versions come from. As long as a box is linked to a
|
|
1037
|
+
library, nothing comes from GitHub.</p>
|
|
1038
|
+
<ul>
|
|
1039
|
+
<li>The box does not install a new release at once, but after a waiting time of three days: if a correction follows
|
|
1040
|
+
in that time, it downloads only that one. Under "New" the section shows the version and the day on which it is
|
|
1041
|
+
installed by itself. "Install now" does not wait.</li>
|
|
1042
|
+
<li>The installation runs in the background; the new version starts the next time the box is switched on.</li>
|
|
1043
|
+
<li>With "Updates: ask" the box downloads nothing by itself. It shows administrators "Version … is available" at the
|
|
1044
|
+
top of every page until somebody answers: "Install", or "Skip" – then it asks again only for the next release.
|
|
1045
|
+
"What is new" shows what has changed. With "off" the box does not ask GitHub at all.</li>
|
|
1046
|
+
<li>With its request GitHub learns the address of the household and nothing else: no name, no version, nothing of
|
|
1047
|
+
what was listened to.</li>
|
|
1048
|
+
</ul>
|
|
1049
|
+
<h3 id="135-scanning-new-tags-with-the-phone"><span id="s13-5"></span>13.5 Scanning new tags with the phone</h3>
|
|
1050
|
+
<p>An Android phone with NFC can read a tag. This is how a new tag gets into the library without being placed on a
|
|
1051
|
+
box.</p>
|
|
1052
|
+
<ol>
|
|
1053
|
+
<li>On the phone, open the page of the library in <strong>Chrome</strong> and log in.</li>
|
|
1054
|
+
<li>Tab "Tag management", at the bottom at "Create a new tag": "Scan tag". The first time Chrome asks whether the page
|
|
1055
|
+
may use NFC.</li>
|
|
1056
|
+
<li>Hold the tag to the back of the phone. The page shows the tag with its UID; a new one is marked "new" and
|
|
1057
|
+
is added to the library already.</li>
|
|
1058
|
+
<li>As <code>admin</code>, enter the name right there, choose the album or the station. This is also
|
|
1059
|
+
possible later in the table above, on any device.</li>
|
|
1060
|
+
<li>Simply hold further tags to the phone one after the other. "Stop scanning" ends it.</li>
|
|
1061
|
+
</ol>
|
|
1062
|
+
<p>If the phone or its browser cannot read tags, the page says why when "Scan tag" is tapped. It does not work
|
|
1063
|
+
on an iPhone.</p>
|
|
1064
|
+
<p>If the page reports that Chrome does not allow it to use NFC, the question of Chrome was answered with "Block", or
|
|
1065
|
+
NFC is switched off for websites in Chrome. To allow it: tap the symbol to the left of the address, then
|
|
1066
|
+
"Permissions" and "NFC devices". If the entry is missing there: Chrome menu, "Settings", "Site settings",
|
|
1067
|
+
"NFC devices" – the switch must be on, and the page of the library must not be listed under "Blocked".</p>
|
|
1068
|
+
<ul>
|
|
1069
|
+
<li>The boxes know the new tag shortly afterwards.</li>
|
|
1070
|
+
<li>Nothing changes by itself on other open pages; the new tag is in the tab "Tag management" as soon as it is opened.</li>
|
|
1071
|
+
<li>Every logged-in user may scan, only the role <code>admin</code> may link.</li>
|
|
1072
|
+
<li>The tag is only read. Nothing is ever written to a tag.</li>
|
|
1073
|
+
<li>Only Chrome on an Android phone and the app (section 13.7) can read tags. The button is missing on the PC. The
|
|
1074
|
+
phone must be unlocked and the page in the foreground.</li>
|
|
1075
|
+
</ul>
|
|
1076
|
+
<h3 id="136-backups-of-the-library"><span id="s13-6"></span>13.6 Backups of the library</h3>
|
|
1077
|
+
<p>The library has the same card "Backup" in the tab "System" as a box (section 11.1). Its backup contains the
|
|
1078
|
+
catalog, the progress and settings of all boxes, the statistics and the covers of albums and stations, and the
|
|
1079
|
+
albums if wanted.</p>
|
|
1080
|
+
<p>In addition the library backs itself up, under "Back up regularly" (section 11.2):</p>
|
|
1081
|
+
<ul>
|
|
1082
|
+
<li>The folders are folders on the NAS, e.g. <code>/volume1/tinyjukebox/backups</code>. Empty: the given folder <code>backups</code> in the
|
|
1083
|
+
shared folder <code>tinyjukebox</code>. The library must be allowed to write to the folder.</li>
|
|
1084
|
+
<li>Every backup with MP3s takes as much space again as all albums.</li>
|
|
1085
|
+
<li>A backup is put back as on a box (section 11.3). The boxes take over the catalog of the backup at their next
|
|
1086
|
+
synchronization.</li>
|
|
1087
|
+
</ul>
|
|
1088
|
+
<h3 id="137-the-app-a-phone-as-a-box"><span id="s13-7"></span>13.7 The app: a phone as a box</h3>
|
|
1089
|
+
<p>The app for Android phones and tablets makes a phone a box: hold a tag to its back and the album plays, from where it
|
|
1090
|
+
stopped – on this phone. It brings the page of the library along as well ("Expert").</p>
|
|
1091
|
+
<p><strong>Installing.</strong> On the page of the library, tab "Boxes", section "Add a phone": open the link to the app on the phone,
|
|
1092
|
+
or point the camera of the phone at its QR code. The browser warns once about the certificate of the library, and
|
|
1093
|
+
Android asks once whether the browser may install apps. A new version is installed the same way, over the old one.</p>
|
|
1094
|
+
<p><strong>Pairing.</strong> The app first shows "Pair with the library". On the page, tab "Boxes", "Add a phone": "Pair" (as
|
|
1095
|
+
<code>admin</code>). A QR code appears, valid once and for 10 minutes. In the app: "Scan QR code" and point the camera at it.
|
|
1096
|
+
The phone must be in the home network. Afterwards it is in the table of the boxes, as a phone, named after its model –
|
|
1097
|
+
"Rename" gives it a name ("Anna's phone").</p>
|
|
1098
|
+
<p><strong>Listening (simple mode).</strong> The screen is the box:</p>
|
|
1099
|
+
<ul>
|
|
1100
|
+
<li>Hold a tag to the back of the phone: its album plays, from where it stopped on this phone. Take the tag away: stop.
|
|
1101
|
+
Each phone has its own progress, as each box has.</li>
|
|
1102
|
+
<li>Below are the tags as tiles: tap one instead of a tag; tap it again to stop.</li>
|
|
1103
|
+
<li>The band at the top shows the light of the box (section 3): green ready, blue playing, white/blue pause, green →
|
|
1104
|
+
aqua → blue the album is being loaded, yellow tag without an album.</li>
|
|
1105
|
+
<li>Buttons: back (hold: album from the beginning), play/pause, next – also on a headset and the lock screen, but
|
|
1106
|
+
holding "back" works only in the app itself.</li>
|
|
1107
|
+
<li>The screen stays on and goes dark after 30 seconds; a touch brings it back. If the screen goes off anyway, the music
|
|
1108
|
+
plays on; switched on again, the app looks for the tag for 2 seconds and stops if it is gone.</li>
|
|
1109
|
+
<li>Albums are loaded the first time they are played and stay on the phone (at most 4 GB at first). At the
|
|
1110
|
+
grandparents', what was played at home plays without the library.</li>
|
|
1111
|
+
<li>Volume: the keys of the phone. On the page of the library, at the phone in the tab "Boxes", "Volume" sets the most
|
|
1112
|
+
the app plays with, for speaker and headphones.</li>
|
|
1113
|
+
<li>A tag of Spotify plays in the Spotify app of the phone, from where it stopped. This needs the app registered at
|
|
1114
|
+
Spotify once and the Spotify app on the phone, logged in with an account entered there; the tab "Spotify" of the
|
|
1115
|
+
library says how. Otherwise the app says that the tag plays on a box.</li>
|
|
1116
|
+
</ul>
|
|
1117
|
+
<p><strong>Expert.</strong> The button "Expert" asks for the login of the page and then shows the page of the library, as in the
|
|
1118
|
+
browser; "Scan tag" in "Tag management" uses the NFC of the phone. "App settings" shows the name, the albums on the
|
|
1119
|
+
phone and their limit, the versions, and "Unpair". "Log out" – also after 30 minutes without a touch – and "Simple
|
|
1120
|
+
mode" lead back to the box, so a child does not stay on the page.</p>
|
|
1121
|
+
<p><strong>Tips.</strong> To keep a child in the app, pin it with the screen pinning of Android (settings of the phone, "Security").
|
|
1122
|
+
A lost phone: remove it on the page, tab "Boxes" – its key is invalid then. Deleting the data of the app or
|
|
1123
|
+
installing it anew makes a new phone; "Take over an old box" brings back its progress.</p>
|
|
1124
|
+
</main>
|
|
1125
|
+
</body>
|
|
1126
|
+
</html>
|