Coder Social home page Coder Social logo

thyraz / sonos-kids-controller Goto Github PK

View Code? Open in Web Editor NEW
146.0 24.0 27.0 6.52 MB

Software for self made touchscreen jukeboxes for kids. Supports Spotify streaming and uses Sonos for audio output.

JavaScript 48.53% TypeScript 30.10% HTML 13.54% SCSS 7.56% Shell 0.26%
sonos-kids-controller sonos kids spotify audiobooks raspberry raspberry-pi raspberrypi sonos-controller sonos-controllers

sonos-kids-controller's Introduction

Sonos-Kids-Controller

Content

About Sonos-Kids-Controller
Dependencies
Usage
Configuration
Adding Content
Autostart
Update
Hardware Player
Raspberry Pi optimization
Alternative Installation using Docker






About Sonos-Kids-Controller

This software can be used to create a touch-based Sonos controller for your kids.

It can also be used with Spotify Connect compatible devices instead of Sonos if you use this software instead of the node-sonos-http-api discribed later in this document.

Sonos-Kids-Controller uses TTS (text to speech) when you click on texts in the UI, so your kids don't have to aks you anymore about the name of a specific episode.

The recommended use case is in combination with Spotify Premium, as it's web API allows you to add albums using artist and album name instead of cryptic album-IDs. It's also possible to add multiple albums with a single search query (e.g. all albums from a sepcific artist).

But you can also add albums from the local Sonos library (in case an album isn't available in your favorite streaming service), from Apple Music or from Amazon Music Unlimited by specifiying the corresponding album IDs. See the music services section about how to retrieve these IDs.

The software consists of 2 parts:

  • The server component, running in an node express environment. Handles the album library and serves the client component to the browser
  • The client component, developed in Ionic/Angular, which can be opened in a browser

Dependencies

This software uses node-sonos-http-api to control your Sonos hardware. So you need to have it running somewhere, for example on the same system as this software.
This doesn't have to be the Pi itself, but should be possible too (if it can handle everything performance-wise without any lags).

Usage

Ensure that you have Node.js and npm installed. Also install node-sonos-http-api as described in the readme of the software. If you plan on using Spotify, follow the instructions here.

Then install this software from Github:

sudo npm install -g @ionic/cli

wget https://github.com/Thyraz/Sonos-Kids-Controller/archive/master.zip

unzip master.zip

rm master.zip 

cd Sonos-Kids-Controller-master

npm install

ionic build --prod

Create the configuration file by making a copy of the included example:

cd server/config

cp config-example.json config.json

Edit the config file as discribed in the chapter configuration

Then start the software like this:

npm start

After that open a browser window and navigate to

http://ip.of.the.server:8200

Now the user interface should appear

Configuration

{
    "node-sonos-http-api": {
        "server": "127.0.0.1",
        "port": "5005",
        "rooms": [
            "Livingroom",
            "Kitchen"
        ]
    },
    "spotify": {
        "clientId": "your_id",
        "clientSecret": "your_secret"
    }
}

Point the node-sonos-http-api section to the adress and the port where the service is running. The rooms are the Sonos room names that you want to be allowed as target.

Room selection isn't implemented yet, so only the first room will be used at the moment.

The spotify section is only needed when you want to use Spotify Premium as source. The id and the secret are the same values as entered in the node-sonos-http-api configuration as described here.

Adding Content

There's a hidden button in the root view on the right side of the top navigation bar. If you click there, you should see an overlay lighting up. Click this button quickly 10 times to open the library editor.

Then click the "+" button on the top right to add a new entry.

Local Sonos Library:

  • Enter artist name and album name exactly as it's displayed in the Sonos app.
  • Enter an artwork link for an artwork image (remember, you can open the UI on any browser, so you can use a desktop pc or an mobile phone to add items to the library and use copy and paste for artwork links.) A good source for album artworks is the iTunes Artwork Finder: https://bendodson.com/projects/itunes-artwork-finder/

Spotify Premium:

  • Enter artist and album name to add a single album
  • Add a query instead, to search for multiple albums
  • Album artwork will be automatically retreived from Spotify

Examples for query strings:

artist:Max Kruse album:Urmel

artist:Grüffelo

artist:Benjamin Blümchen album:folge NOT gute-nacht

artist:"Super Wings"

More details on Spotify web API search querys: https://developer.spotify.com/documentation/web-api/reference/search/search/#writing-a-query---guidelines

Apple Music or Amazon Music Unlimited:

Pro Tip: As Amazon and Apple don't provide a full public API to search for content like Spotify does, adding AlbumIDs and artwork links through the UI might be time consuming and complicated. you can also edit the library by editing server/config/data.json (created after you added the first content through the UI). The structure should be self-explaining. Just be sure to shutdown Sonos-Kids-Controller before editing the file, as the software might otherwise overwrite your changes with an in-memory copy of the data. Also a backup of the file might be a good idea, as the software might overwrite the file with an empty library on startup, when you have some syntax errors in your edits, preventing the data from loading.

Autostart

I use pm2 as process manager for node.js projects. So both services (node-sonos-http-api and Sonos-Kids-Controller) are startet on boot time in this case

sudo npm install pm2 -g

Then build a startup script for pm2 (don't run with sudo):

pm2 startup

after that pm2 should show you a command that has to be run as sudo to finish install the startup scripts. Copy and paste it into the terminal and execute it.

then in the directory of node-sonos-http-api:

pm2 start server.js
pm2 save

again in the directory of Sonos-Kids-Controller:

pm2 start server.js
pm2 save

After a reboot, enter pm2 list in the terminal and you should see that the 2 services are running.

Update

Updating to a newer Sonos-Kids-Controller version works similar to the initial installation. Execute these commands, starting from the parent directory of you current Sonos-Kids-Controller-master installation:

wget https://github.com/Thyraz/Sonos-Kids-Controller/archive/master.zip

unzip master.zip

rm master.zip 

cd Sonos-Kids-Controller-master

npm install

ionic build --prod

If you run into out of memory erros during the build process, try to set a memory limit manually:

export NODE_OPTIONS=--max-old-space-size=3072

ionic build --prod

Hardware Player

While you can simply run this software on any server supported by node.js and open it in the browser of your choice (as long as it isn't IE or Edge), the typical use case will be a small box powered by an Raspberry Pi and a capacitive touch screen.

I recommend a 5" touch screen with a resolution of 800x480, as you otherwise might have to edit the layout of the software.

Part List:

Here's a list of what I bought for my player:

Front Cover Cutout:

As first step, choose the position of the cutout for the touchscreen in the wooden front cover. Pay attention how far the HDMI and USB connectors stick out of the touch screen. Because of that you won't be able to center the touchscreen vertically in the front cover.

After that I drilled 4 holes in each edge of the cutout. Then I used a fredsaw to remove the part between the holes. Keep the cutout a little bit smaller than the touchscreen, as working with a fredsaw might not be that precise.

Now the hard part begins:
Tweak the shape of the cutout with a rasp until the touchscreen fits in tightly. This might take a while and I recommend to hold the touchscreen and the cover in front of each other toward a light source from time to time, to see where you need to remove more of the wood.

When the touchscreen fits into the cutout, use sand paper to smooth the surface. I started with grain size 80 and ended with 300. If you want an uniform look, use the finer grained sandpaper also on the front surface of the wood and apply some wood oil everywhere for a consistant looking finish.

Assembly:

Cut off the connector of the power supply, and drill a hole for the cable in the back of the case. Stick the cable through the hole and solder the connector back on.

Assemble the Pi in the bottom part of the raspberry case and use the Powerstrips to attach it inside the box.

If the touchscreen isn't sitting tight enough in the cutout, use short screws to attach it to the front cover. Maybe predrill the holes, so the wood won't crack.

Connect the cables, insert the microSD card and you're done. The wooden front cover should stick firmly if you press it onto the backside. I didn't need any screws to hold it in place. If you need to open it again, push a knive between the front cover and the backside and use it as lever.

Kiosk Mode Installation

Use raspbian light (currently Buster is the latest stable version as I write this readme) as we don't want to install the default desktop environment.

a) because we don't need it
b) because our Ionic/Angular app will stress the Pi enough, so we want to avoid too much running services and RAM usage.

edit the config.txt in the boot partition and add the following lines at the end to configure the display:

max_usb_current = 1 
Hdmi_group = 2 
Hdmi_mode = 87 
Hdmi_cvt 800 480 60 6 0 0 0 

After the initial boot process, start raspi-config and configure:

  • Localisation options and keyboard layout
  • Configure Wifi
  • Enable SSH if you wish to be able to log into the box remotely
  • Disable HDMI overscan in the advanced option
  • Change user password for pi
  • In Boot Options Select 'Desktop/CLI' and then 'Console Autologin' for automatic login of the user pi

Now reboot the Pi. If everything worked, you should be logged into the terminal session without having to enter you password at the end the boot process.

Update all preinstalled packages:

sudo apt-get update
sudo apt-get upgrade

Now we install Openbox as a lightweight window manager:

sudo apt-get install --no-install-recommends xserver-xorg x11-xserver-utils xinit openbox

And Chromium as a browser:

sudo apt-get install --no-install-recommends chromium-browser

You can now install node-sonos-http-api and Sonos-Kids-Controller on the Pi (as described in the previous chapters) if you don't want to run it on a different server. Depending on where the services are running edit the automatic startup of Openbox and Chromium in /etc/xdg/openbox/autostart

# Disable screen saver / power management
xset s off
xset s noblank
xset -dpms

# Start Chromium
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences
chromium-browser --disable-infobars --kiosk 'http://url-to-sonos-kids-controller:8200'

Now Chromium should display our web app when Openbox is started. The last thing to do is to start the X server automatically when the Pi is powered on. As we already have automatic login in the terminal session, we can use .bash_profile for starting X. Append the following line to the file:

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx -- -nocursor

This starts X when the user logged into the first system terminal (which is the one autologin uses).

Restart the pi to see if everything works.

If you see a bubble in Chromium after some time, about Chromium not beeing up to date, use this workaround from StackOverflow and execute the following command:

sudo touch /etc/chromium-browser/customizations/01-disable-update-check;echo CHROMIUM_FLAGS=\"\$\{CHROMIUM_FLAGS\} --check-for-update-interval=31536000\" | sudo tee /etc/chromium-browser/customizations/01-disable-update-check

Raspberry Pi optimization

You may perform the following changes to Rasperry Pi OS AT YOUR OWN RISK.

Disable boot up messages

According to the guide on the site https://florianmuller.com/polish-your-raspberry-pi-clean-boot-splash-screen-video-noconsole-zram you can disable the boot up messages by adding the following text to the file /boot/cmdline.txt (no linefeed, no double space):

 loglevel=0 plymouth.enable=0 vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fastboot noatime nodiratime noram

Log to ramdisk

You may add the folling lines to the file /etc/fstab to write temporary files and log files to ram. Attention: they get lost with every reboot.

tmpfs    /tmp    tmpfs    defaults,noatime,nosuid,size=100m    0 0
tmpfs    /var/tmp    tmpfs    defaults,noatime,nosuid,size=25m    0 0
tmpfs    /var/log    tmpfs    defaults,noatime,nosuid,mode=0755,size=25m    0 0

This will speed up the boot up process and helps to improve the lifetime of the SD card.

Fixed IP-Adress

a fixed IP Adress will speed up the boot process by about 3-5 seconds. Add your details to /etc/dhcpcd.conf. For example:

interface wlan0
static ip_address=192.168.0.4/24    
static routers=192.168.0.254
static domain_name_servers=192.168.0.254 8.8.8.8

Overclocking CPU

You may consider overclock your hardware by add the following lines to __/boot/config.txt. THIS MAY HARM YOUR HARDWARE!

Example for Raspberry 3B:

# Overclock CPU
arm_freq=1200
over_voltage=4
temp_limit=75
core_freq=500

# Overclock GPU
h264_freq=333
avoid_pwm_pll=1
gpu_mem=320
v3d_freq=500

# Overclock RAM
sdram_freq=588
sdram_schmoo=0x02000020
over_voltage_sdram_p=6
over_voltage_sdram_i=4
over_voltage_sdram_c=4

Overclocking sd card

If you have a suitable SD Card you may consider overclock the SD card reader by add the following lines to __/boot/config.txt. THIS MAY HARM YOUR HARDWARE!

dtparam=sd_overclock=100

Docker

There is now also an easy way to setup this software using Docker. This avoids the compilation on small hardware.

The image is maintained by stepman0
Get it here.

sonos-kids-controller's People

Contributors

dependabot[bot] avatar heikogr avatar jhill84 avatar stepman0 avatar thyraz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sonos-kids-controller's Issues

Build gets stuck at ionic build --prod

Hi @Thyraz,

I updated my docker repo to your latest version 1.6 - thanks for your fixes.

Unfortunately, the build does not suceed. It gets stuck at ionic build --prod. I tried node12, node14 and node16.

Step 7/17 : RUN ionic build --prod
 ---> Running in 157f9be309df
> ng run app:build:production
- Generating browser application bundles (phase: setup)...
(node:18) UnhandledPromiseRejectionWarning: Error: The target entry-point "@ionic-native/splash-screen" has missing dependencies:
 - @ionic-native/core

    at TargetedEntryPointFinder.findEntryPoints (file:///sonos-kids-controller/node_modules/@angular/compiler-cli/bundles/ngcc/index.js:4616:13)
    at file:///sonos-kids-controller/node_modules/@angular/compiler-cli/bundles/ngcc/index.js:5008:33
    at SingleProcessExecutorSync.doExecute (file:///sonos-kids-controller/node_modules/@angular/compiler-cli/bundles/ngcc/index.js:14633:23)
    at file:///sonos-kids-controller/node_modules/@angular/compiler-cli/bundles/ngcc/index.js:14654:35
    at SyncLocker.lock (file:///sonos-kids-controller/node_modules/@angular/compiler-cli/bundles/ngcc/index.js:14884:14)
    at SingleProcessExecutorSync.execute (file:///sonos-kids-controller/node_modules/@angular/compiler-cli/bundles/ngcc/index.js:14654:19)
    at mainNgcc (file:///sonos-kids-controller/node_modules/@angular/compiler-cli/bundles/ngcc/index.js:15985:19)
    at Module.process2 (file:///sonos-kids-controller/node_modules/@angular/compiler-cli/bundles/ngcc/index.js:16050:10)
    at NgccProcessor.processModule (/sonos-kids-controller/node_modules/@ngtools/webpack/src/ngcc_processor.js:167:27)
    at /sonos-kids-controller/node_modules/@ngtools/webpack/src/ivy/host.js:146:18
(Use `node --trace-warnings ...` to show where the warning was created)
(node:18) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:18) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Any hint?

build-log-node14.txt

Project License

Hello @Thyraz, what license is the project provided under if I were to want to fork it and make tweaks? Thanks.

Spotify streaming problem

Hi,

first of all, thank you so much for this great project! I built it for my daughter and it worked well on christmas eve.
However Spotify streaming stopped working on December 25th.

I did not change a single thing. And yet I am having these problems.
Everything seems to be working fine. I'm able to see the audiobooks and albums as usual, but when I start streaming, there's no sound.
The speaker (Sonos One SL) is connected and text-to-speech for the titles works, but not the stream itself.
Other devices still work with this speaker.

Things I've already tried/checked but didn't help:

  • adjusting the volume
  • tried a different speaker (Sonos Play: 1)
  • checked "pm2 list" and both servers are running
  • installed latest update for the speaker
  • created a new Spotify App-ID/-secret
  • disabling TTS
  • rebooting

I'm out of ideas.
Is anyone else having these problems?
What else can i check?

Greetings,
Johannes

Link to enclosure/box

Hi @Thyraz

can you update the link to the box from Amazon (affiliate link would also be okay).
The one from the BOM does not work anymore.
Or maybe the product name to find an alternative seller?

I'd print something but the box you used looks so nice and sleek.

Thanks!

TTS is not working

If've got a setup with two docker containers for sonos api and kids-controller.

TTS is working with the sonos-api for example: http://vm-docker.home.lan:5005/Buero/say/Hallo/de-de

It's enabled in the kids-controller config, but not working.

"node-sonos-http-api": {
    "server": "xxx.xxx.xxx.xxx",
    "port": "5005",
    "rooms": [
        "Buero"
    ],
    "tts": {
        "enabled": true,
        "language": "de-de",
        "volume": "40"
    }
},

Problem during installation / setup

Hello! I am trying to install Sonos Kids Controller.

During the setup when starting the command "ionic build --prod" this error message appears:

An unhandled exception occurred: NGCC failed.
See "/tmp/ng-lyCHfB/angular-errors.log" for further details.
[ERROR] An error occurred while running subprocess ng.

        ng run app:build:production exited with exit code 127.

The error log says:

[Error] Error: NGCC failed.
    at NgccProcessor.process (/home/pi/Sonos-Kids-Controller-master/node_module$
    at compiler.hooks.environment.tap (/home/pi/Sonos-Kids-Controller-master/no$
    at SyncHook.eval [as call] (eval at create (/home/pi/Sonos-Kids-Controller-$
    at SyncHook.lazyCompileHook (/home/pi/Sonos-Kids-Controller-master/node_mod$
    at Object.webpack [as webpackFactory] (/home/pi/Sonos-Kids-Controller-maste$
    at createWebpack (/home/pi/Sonos-Kids-Controller-master/node_modules/@angul$
    at Object.runWebpack (/home/pi/Sonos-Kids-Controller-master/node_modules/@a$
    at SwitchMapSubscriber.rxjs_1.from.pipe.operators_1.switchMap [as project] $
    at SwitchMapSubscriber._next (/home/pi/Sonos-Kids-Controller-master/node_mo$
    at SwitchMapSubscriber.Subscriber.next (/home/pi/Sonos-Kids-Controller-mast$
    at /home/pi/Sonos-Kids-Controller-master/node_modules/@angular-devkit/build$
    at process._tickCallback (internal/process/next_tick.js:68:7)
    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

Can you give me an advice? Thanks a lot in advance.

Text entered by the on screen display is wrong

If I enter some text (e.g. "ABCDEF") with the on screen display it enters it in the wrong direction (result in the text field is "FEDCBA").

When I enter it with the physical keyboard directly everything works as intended.

[FRAGE] 3 sonos with 3 spotify-accounts

Hallo!

Eher eine Frage als eine issue. ;-)
geht es irgendwie, dass ich den kids-controller auf 3 tablets (oder anderen displays, Browsern, Hardwarelösungen) mit 3 Sonos-Geräten (oder spotify-connect-fähigen Geräten) nutzen kann?
Also:
Kind 1 bedient in seinem Zimmer mit Tablet 1, spotify-account 1 den Sonso 1 und hört Pumuckl
Kind 2 bedient in seinem Zimmer mit Tablet 2, spotify-account 2 den Sonso 2 und hört Bibi und Tina
Kind 3 bedient in seinem Zimmer mit Tablet 3, spotify-account 3 den Sonso 3 und hört TKKG

Hoffe es is klar was gemeint ist. Leider steig ich bei den controllern und so grad nicht so ganz durch und kann es aktuell auch nicht testen, da nur 1 Sonos vorhanden.

Der controller und die API laufen auf dem NUC im Docker.

Danke schonmal für eine Antwort! :-)
VG Jens

Box Size

I order the small box : " klein (0,5LIter | 12,7x9,7x4,2cm)" Link
This one was to small. Perhaps it will be nice to add the Box size in the documentation?
Is the "mittel (0,7Liter | 15,8x12x5,8cm)" the right one?
Thank you for the nice project!

Looks like the connection to Spotify is not working

For me, the installation worked almost smoothly, however, no albums are added actually.
Unfortunately, I do not get an error message. I can simply press Add. But nothing happens.

Strangely enough, no requests come to my created Spotify API either.

Does anyone have a hint ?

Bildschirmfoto 2021-01-23 um 16 11 55

Bildschirmfoto 2021-01-23 um 16 20 59

Can't add unique album ID (Spotify)

Great project and documentation. I had a straight-forward install. Thanks!

I have an issue populating the home-screen. All your example query strings are working fine (i.e. "artist:Max Kruse album:Urmel")

But i can't seem to add a specific album directly, using the unique album ID. I am not quite sure if i input the ID correctly. Let's take "Lichterkinder - Weihnachts- und Winterlieder" fo example. The Album-ID would be 0pKBO2kSYKw8WBCLkfHOJn, the URI spotify:album:0pKBO2kSYKw8WBCLkfHOJn.

I tried to put in just the ID, the ID with the prefix "spotify:album:" but i only ever get so see "Eternal undefined" ;)

i tried "id:0pKBO2kSYKw8WBCLkfHOJn" as a search-query with no luck whatsoever.

Any ideas would be appriciated.

Bildschirmfoto 2020-12-21 um 23 26 01

Bildschirmfoto 2020-12-21 um 23 26 22

Feature Request: Anzeige aktuelle Titelnummer - Titelname

Ich würde mir wünschen, wenn in der Playeransicht von Alben / Playlists... die aktuelle Titelnummer sowie der aktuelle Titelname angezeigt wird.

Wenn diese Anzeige nicht dauerhaft erscheinen soll, dann kann dies über die config vom sonos-kids-controller gesteuert werden.

Spotify - Nur 3 Alben werden angezeigt

Hallo, ich habe das Problem das mit bei Spotify nur 3 Alben angezeigt werden sowohl bei dem Super Wings Beispiel als auch wenn ich Die drei ??? als suche habe. Jemand eine Idee wieso das so ist? In der Entwicklerconsole kann ich sehen das ein Fehler bei der Sonos Api kommt mit 401 und no token provided.

Solve: Only get 800x480 resolution

I get only 640x480 instead of 800x480 resolution at Raspberry Pi 3.
Changing the /boot/config.txt not working, try different commands, the last one was:

framebuffer_width=800
framebuffer_height=480
max_usb_current = 1
Hdmi_group = 2
Hdmi_mode = 87
Hdmi_cvt 800 480 60 6

tvservice -s shows the wrong resolution
state 0xa [HDMI DMT (4) RGB full 4:3], 640x480 @ 60.00Hz, progressive

I solve it with :
https://elinux.org/R-Pi_Troubleshooting#Can_only_get_800x480_resolution_in_LXDE_.28Arch_linux.29

  1. sudo nano /boot/cmdline.txt
  2. insert this line
    "dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext3 rootwait"

After reboot
fbset -s shows:

mode "800x480"
    geometry 800 480 800 480 32
    timings 0 0 0 0 0 0 0
    rgba 8/16,8/8,8/0,8/24
endmode

Perhaps this will be a good hint for the documentation?

Playback issues on startup

When using spotify on another client and starting Sonos-Kids-Controller the Box starts resuming the old track - not the selected.

FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory

Hi.

Irgendwas mache ich doch falsch?! So ganz habe ich noch nicht verstanden in welcher Reihenfolge ich die verschiedenen Sachen installieren muss ... erst hatte ich diesen ERROR127 ... nun diesen hier:
"FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory"
Dieser taucht auf, wenn ich die beim Punkt: ionic build --prod bin.

So habe ich die Installation begonnen (mal ohne apt-get update/upgrade und auch mit) dann mit dem Dezemeber Image vo´n RasiOS und mit dem vom August ...

Erst habe ich die Einstellungen im Raspi-Config gemacht , dann NodeJS und NPM installiert, und anschließend mit dem Sonsos-Kids-Controller weiter ... und das ganze nun schon bestimmt 8 Mal ;(

Vielleicht hast Du ja nen Tip, wie ich das nun hinbekomme ... ?!

Danke und Gruß Kai

Playlist

Hello,
how can you add a playlist from Apple Music or Amazon Music, Spotify is quite simple.
greetings Monox

Question: Docker container?

Hi, I just found your project - i have to same situation (kids want to play music but I want to create a selection). Thanks a lot for your work - I will try it out the next days.

What just came to my mind? Have you considered creating a Docker container, this would/could make installation easier?

If not, I could give it a try and provide it...

Regards,

Change page title

Hi

I am currently playing around using the kids controller from an old tablet running in Kiosk mode.

I am using two instances of Sonos controller right now, to contact two Sonos boxes.

On the tablet I am using two tabs, one for each instance. At the moment both are just called "Ionic App".
@Thyraz Would it be possible to add an option in the settings file, where I can set a custom name for the tab? I know when using this on the pi this is not relevant, but I guess on the pi tabs would also be an option...

When I have a final working solution I will share it here...

Link to case not working

Hi,

Really cool project, exactly what I was looking for.

Unfortunately the link to the "case" is broken. Would be great if you can update it. Thx!

Error on npm install (jasmine module missing?)

I just updated to the latest commits and wanted to build my container images.

I get an error message regarding a missing npm package:

=> ERROR [stage-1 4/6] RUN npm install --production                                                                                                                                                      3.8s
------
 > [stage-1 4/6] RUN npm install --production:
#9 3.784 npm notice
#9 3.785 npm notice New minor version of npm available! 7.7.6 -> 7.12.1
#9 3.785 npm notice Changelog: <https://github.com/npm/cli/releases/tag/v7.12.1>
#9 3.785 npm notice Run `npm install -g [email protected]` to update!
#9 3.785 npm notice
#9 3.789 npm ERR! code ERESOLVE
#9 3.793 npm ERR! ERESOLVE unable to resolve dependency tree
#9 3.793 npm ERR!
#9 3.793 npm ERR! While resolving: [email protected]
#9 3.794 npm ERR! Found: [email protected]
#9 3.794 npm ERR! node_modules/jasmine-core
#9 3.794 npm ERR!   dev jasmine-core@"~3.5.0" from the root project
#9 3.794 npm ERR!
#9 3.794 npm ERR! Could not resolve dependency:
#9 3.794 npm ERR! peer jasmine-core@">=3.7.1" from [email protected]
#9 3.794 npm ERR! node_modules/karma-jasmine-html-reporter
#9 3.795 npm ERR!   dev karma-jasmine-html-reporter@"^1.4.2" from the root project
#9 3.795 npm ERR!
#9 3.795 npm ERR! Fix the upstream dependency conflict, or retry
#9 3.795 npm ERR! this command with --force, or --legacy-peer-deps
#9 3.795 npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
#9 3.795 npm ERR!
#9 3.795 npm ERR! See /root/.npm/eresolve-report.txt for a full report.
#9 3.805
#9 3.805 npm ERR! A complete log of this run can be found in:
#9 3.805 npm ERR!     /root/.npm/_logs/2021-05-11T12_17_10_260Z-debug.log
------
executor failed running [/bin/sh -c npm install --production]: exit code: 1

I tried both with node-15 and node-16.

I have no real knowledge about npm - Any hints?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.