Provision Mac Mini Server as Last.fm Player

From rukapedia
Revision as of 10:23, 11 July 2010 by Peter (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

I'm provisioning a Mac Mini to act as a Last.fm music player at Casa Mia Café in Charlottetown.

The end result, after all the pieces are in place, is that:

  • previously-registered customer enters café
  • their mobile device (iPhone, Blackberry, etc.) is detected via Bluetooth scanner
  • the devices's Bluetooth device address is used to look up customer's Last.fm username
  • the customer's Last.fm library is added to the rotation of playlists playing inside the café (until the customer leaves the café)

Mac Mini Setup

  • First boot.
  • Walk through Apple setup (language, keyboard, registration, etc.)
  • Download Microsoft Intellitype drivers from here to support my Natural Ergonomic Keyboard 4000.
  • Install Google Chrome as an alternative to Safari.
  • Under System Preferences | Sharing, turn on Screen Sharing (with password) and File Sharing to support remote usage.

Install Last.fm Scrobbler

Set up Bluetooth Scanning

  • Install Xcode (LightBlue won't install without it)
  • Install LightBlue (test using these examples)
  • Install haraldscan
    • Change references to pysqlite2 to sqlite3 in haraldsql.py and haraldscan.py
  • Modify haraldscan to send information, via REST, to a web server for logging (source code to come)
  • Drop a launchd plist file into the /Users/casamia/Library/LaunchAgents directory so that the scanner runs every 60 seconds:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>net.reinvented.haraldscan</string>
	<key>ProgramArguments</key>
	<array>
		<string>/bin/sh</string>
		<string>/Users/casamia/Code/launchd/haraldscan.sh</string>
	</array>
	<key>RunAtLoad</key>
	<false/>
	<key>StartInterval</key>
	<integer>60</integer>
</dict>