Sería útil si pudiera proporcionar un poco más de información sobre la funcionalidad esperada. Parece que tienes una Mac en tu casa. ¿Permanece encendida todo el tiempo?
Un par de ideas me vienen a la mente, pero la forma en que las juntes dependerá de lo que específicamente quieras que suceda.
Comprobación de ubicación
Si tienes tu iPhone contigo y se conecta automáticamente a tu Wi-Fi, esa es probablemente la mejor manera de verificar si estás en casa.
Primero, tenga en cuenta la dirección MAC de Wi-Fi de su iPhone, que encontrará en Configuración → General → Acerca de → Dirección de Wi-Fi .
Puede usar el comando arp -a
en la Terminal (o un script) para imprimir la lista de direcciones conocidas de Mac en la red local, luego usar grep
para verificar si la dirección de su iPhone está allí:
arp -a | grep -i IPHONE_MAC_HERE
Eso imprimirá la entrada ARP si una coincide con la dirección de tu iPhone, y no imprime nada si no la hay.
Es importante tener en cuenta que esto solo puede funcionar de manera confiable si su iPhone está configurado para sincronizarse a través de Wi-Fi con su Mac. arp -a
solo enumera las direcciones con las que se ha comunicado recientemente, no sabe si su iPhone está ahí a menos que se comunique con su Mac. Debido a que la sincronización de Wi-Fi hace que el iPhone envíe un mensaje de identificación cuando se une a una red (para ver si alguna de las computadoras con las que se sincroniza está en línea), se agregará a la tabla ARP de su Mac cuando regrese a casa, pero puede que no. si no tiene configurada la sincronización de Wi-Fi.
Reproducción de secuencias de comandos de iTunes
Si no usa algo como Controlplane (mencionado en respuesta de kraymer ), AppleScript es la mejor manera para controlar la reproducción de iTunes.
Es bastante sencillo:
tell application "iTunes"
play playlist "Music"
end tell
Comenzará a jugar tu biblioteca principal. Cambia "Música" a cualquiera de los nombres de tus listas de reproducción si tienes una específica que deseas reproducir. También puedes agregar set shuffle of playlist "Music" to yes
en la línea antes de la línea play
si quieres mezclar.
También puede iniciar la reproducción dentro de un script de shell:
osascript -e 'tell application "iTunes" to play playlist "Music"'
Script de ejemplo
#!/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"'
Esta es una versión bastante simplista, pero debería ser un buen punto de partida para hacer algo más cercano a lo que quieres. Cuando ejecute el script, comprobará la dirección del iPhone (asegúrese de colocar la correcta en el script) cada treinta segundos hasta que lo detecte, luego reproducirá iTunes.
Mejoras sugeridas
- Es un acuerdo de un solo disparo, una vez que detecta el iPhone, reproduce la música y deja de verificar. Querrá averiguar qué lógica quiere detrás de ella (es decir, si se inicia una vez por día de la semana, para que se reproduzca cuando llegue a casa desde el trabajo, o si desea que se reproduzca cada vez que ingrese a la casa).
- Ejecutarlo mediante la funcionalidad
launchd
de OS X (que permite varias programaciones y repeticiones de scripts) puede ser una buena idea. Hay muchos recursos sobre esto, tanto en Ask Different como en otros.
- Si lo hace de esta manera, es posible que no necesite la funcionalidad de bucle,
launchd
podría ser responsable de ejecutarlo en un intervalo para verificar.
- Algún tipo de mecanismo para evitar la comprobación innecesaria una vez que haya regresado a casa y la música se haya reproducido. Podría ser simplemente un largo descanso una vez que reproduzca la música, o algo un poco más inteligente, según el momento en que desee que se verifique.