Sarebbe utile se tu potessi fornire un po 'più di informazioni sulla tua funzionalità prevista. Sembra che tu abbia un Mac in casa tua: rimane sempre?
Un paio di idee ti vengono in mente, ma il modo in cui le metti insieme dipenderà da cosa specificamente vuoi che accada.
Controllo della posizione
Se hai il tuo iPhone con te e si connette automaticamente al Wi-Fi, probabilmente è il modo migliore per verificare se sei a casa.
Per prima cosa, nota l'indirizzo MAC Wi-Fi del tuo iPhone, che troverai in Impostazioni → Generale → Informazioni su → Indirizzo Wi-Fi .
Puoi usare il comando arp -a
in Terminale (o uno script) per stampare l'elenco dei Mac degli indirizzi conosciuti sulla rete locale, quindi usare grep
per verificare se l'indirizzo del tuo iPhone è lì dentro:
arp -a | grep -i IPHONE_MAC_HERE
Questo stamperà la voce ARP se corrisponde all'indirizzo del tuo iPhone e non stamperà nulla se non lo è.
È importante notare che questo può funzionare in modo affidabile solo se l'iPhone è impostato per la sincronizzazione tramite Wi-Fi con il tuo Mac. arp -a
elenca soltanto gli indirizzi con cui ha recentemente comunicato: non sa che il tuo iPhone è presente a meno che non comunichi con il tuo Mac. Poiché la sincronizzazione Wi-Fi fa sì che l'iPhone invii un messaggio di identificazione quando si collega a una rete (per vedere se tutti i computer con cui si sincronizza sono online), verrà aggiunto alla tabella ARP del tuo Mac quando torni a casa, ma potrebbe non se non hai impostato la sincronizzazione Wi-Fi.
Esecuzione script di riproduzione di iTunes
Se non usi qualcosa come Controlplane (menzionato nella risposta di kraymer ), AppleScript è il modo migliore per controllare la riproduzione di iTunes.
È piuttosto semplice:
tell application "iTunes"
play playlist "Music"
end tell
Avvierà la riproduzione della tua libreria principale. Cambia "Music" in uno qualsiasi dei nomi della playlist se ne hai uno specifico che vuoi riprodurre. Puoi anche aggiungere set shuffle of playlist "Music" to yes
sulla riga prima della riga play
se desideri mischiare su.
Puoi anche avviare la riproduzione all'interno di uno script di shell:
osascript -e 'tell application "iTunes" to play playlist "Music"'
Script di esempio
#!/bin/bash
iPhoneMAC='78:a3:e4:4C:8f:a9' # From Settings > General > About > Wi-Fi Address
# Check if the iPhone is in the ARP table
arp -a | grep -i $iPhoneMAC > /dev/null # Silence output
# Repeat check every 30 seconds, if the iPhone address isn't detected
while [[ $? == 1 ]]; do
sleep 30
arp -a | grep -i $iPhoneMAC > /dev/null
done
# Once the iPhone is detected, play music
osascript -e 'tell application "iTunes" to play playlist "Music"'
Questa è una versione piuttosto semplicistica, ma dovrebbe essere un buon punto di partenza per fare qualcosa di più vicino a ciò che desideri. Quando esegui lo script, controlla l'indirizzo dell'iPhone (assicurati di inserire quello corretto nello script) ogni trenta secondi finché non lo rileva, quindi riprodurrà iTunes.
Miglioramenti suggeriti
- È un affare one-shot, una volta rilevato l'iPhone, riproduce la musica e interrompe il controllo. Avrai voglia di capire quale logica vuoi dietro (cioè dovrebbe avviarsi una volta al giorno della settimana, quindi suona quando torni a casa dal lavoro, o la vuoi giocare ogni volta che entri in casa).
- Eseguirlo tramite la funzionalità
launchd
di OS X (che consente varie pianificazioni e ripetizioni di script) può essere una buona idea. Ci sono molte risorse su questo intorno, sia su Ask Different che altrove.
- Se lo fai in questo modo, potresti non aver bisogno della funzionalità di loop,
launchd
potrebbe essere responsabile per eseguirlo a intervalli da controllare.
- Una sorta di meccanismo per evitare controlli non necessari una volta che sei tornato a casa e la musica ha suonato. Potrebbe essere un lungo sonno una volta che suona la musica, o qualcosa di un po 'più intelligente, basato su quando vuoi che controlli.