chebe: (AsciiC)
This is a fun one. I was playing with my Explorer pHAT and noticed that every time I Ctrl-C'd out of a script I'd get a message;

Broadcast message from root@raspberrypi (somewhere):

BCM 4 held low, system shutdown in 5 minutes


Broadcast message from root@raspberrypi:

The system is going down for power-off!


And yes, the pi would turn off. Every single time.

I don't know why the Explorer pHAT seems to pull BCM 4 low upon exit, when none of my other pHATs do. But I do know why that was triggering a shutdown.

I had also installed (though not in use) the Zero LiPo SHIM and the OnOff SHIM. They both install the clean-shutdown library that does just what it says, shuts down your pi when BCM 4 is held low.

It installs the cleanshutd service, but it didn't respond to my attempts to stop it, so I had to disable it.

In /boot/config.txt add;
disable_cleanshutd=1
Save, exit, reboot. Then you can play around with your Explorer pHAT in peace.
chebe: (VintageMoon)
You know what's super annoying? Not knowing the ip-address of the server you're trying to access. I could scan the network and find the right machine. But, I'm lazy. And, the server knows its own ip, it should simply tell me.

This is something I believed my Pirate Radio could manage. When the pHAT BEAT bonnet gets installed it sets itself up with a daemon in /usr/bin. Technically I installed it twice (once for spotipy as well). I don't know if the code differs, but as I installed vlc-radio last, that's the code I will play with.

Think it through. I've just booted up the server. The volume and power buttons do very necessary jobs, so we'll leave them alone. The fast-forward and rewind buttons start playing a station/cycle through stations. Very useful if you can't be bothered finding the ip-address. That leaves Play/Pause, which doesn't do anything until a station has started streaming. And if I have access to the web interface, well I can do that very job there. That's it, I'm sacrificing Play/Pause!

In the end I simply replaced line#204 with a call out to my script;
myip.read_ip()
(making sure to import it at the top of the file. Let's hear it for the wonders of Open Source!)

What script you ask? A simple one, to parse the wlan0 ip from ifconfig, and then a call to text-to-speech to actually read it out loud to me.

You'll probably need to install the text-to-speech stuff;
sudo pip install pyttsx
sudo apt-get install espeak


Then save this as a file named myip.py (or whatever) into /usr/bin

#!/usr/bin/env python

import os, pyttsx, time

def read_ip():
f = os.popen('ifconfig wlan0 | grep "inet\ addr" | cut -d: -f2 | cut -d" " -f1')
your_ip=f.read()

engine=pyttsx.init()
engine.say(your_ip)
engine.runAndWait()

time.sleep(3)
print your_ip

if __name__ == '__main__':
read_ip()


And sure, give it a reboot to make sure the changes are picked up.

Now, when I press play the Pirate Radio reads out its ip-address to me! So handy.
(Note; if you press play with monitor and OTG cable attached, it'll probably crash and reboot. So don't do that.)

Pimoroni Pirate Radio

2017-Mar-26, Sunday 10:44 pm
chebe: (Purple - DanceLikeNooneisWatching)
Hardware
Order the Raspberry Pi Zero W Pirate Radio (get it?) kit.
Assemble. Making sure you put the headers on the correct way around *cough*.

Software
Download the NOOBS installer. Extract archive. Copy contents to microSD card of 8GB+.
Put microSD card in Pi, supply power to boot. (You will need a monitor (micro HDMI), OTG micro-USB adapter to plug in keyboard and mouse.)
When boots into installer connect to wifi. (Have the details handy, you'll need them again later.)
From the network install list select Raspbian Jessie Lite.
Lite boots into console only (you can do away with the mouse now). Default login deatils are; pi/raspberry. You'll need to edit a config file to connect back to wifi;
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
And add;
network={
ssid="YOURSSID"
psk="YOURPASSWORD"
}

Once online, install all your favourites (*cough* vim *cough*). Now is also a good time to set up the Pi as you want it. For instance, change the hostname;
sudo hostnamectl set-hostname new_host_name
You'll also need to update the hosts file;
sudo vim /etc/hosts
And update the line that says;
127.0.0.1 raspberrypi

You can test the speaker with;
aplay /usr/share/sounds/alsa/Front_Center.wav

Spotipy
Okay, so far so good. But, it's supposed to be a radio yeah? Do you have Spotify Premium? Then you can hook it up, with a convenient one-line installer;
curl https://get.pimoroni.com/spotipy | bash
It will install a whole load of things (details here), asking for your input (including Spotify login details), and then reboot.

From another device you can access the web interface at http://192.168.0.2:6680/iris/ (run ifconfig on the Pi and take the ip address from the wlan0 interface). You'll need to go to the Settings tab and Authorize your Spotify account. Ta-da, that's it, rock out.

(But, it seems the installer doesn't actually remember your Spotify details properly, so open /etc/mopidy/mopidy.conf, down the bottom check that the [spotify] section contains your username and password. It had forgotten my username and mangled my password, so definitely check.)

(Also, your session will timeout regularly, just log back in, no worries.)

VLC
But, I was not content with just Spotify. I wanted actual internet radio. So I installed the vlc-radio as well.
Again, just one line installer;
curl https://get.pimoroni.com/vlcradio | bash
You can access the web interface at http://192.168.0.2:8080 (default login details; blank username/raspberry).
If you want to queue up your own internet radio stations save them as playlist.m3u, and scp over to /home/pi/.config/vlc/. Then reboot.

(SSH server is off by default, you can turn it on through sudo raspi-config, more details here.)

Other than warning you that the default volume is very high, that's it. Enjoy!
Page generated 2017-Aug-23, Wednesday 01:58 pm
Powered by Dreamwidth Studios