Controlar um aplicativo OSX do Arduino

1

Estou tentando controlar um aplicativo no OSX com um Arduino Uno. Especificamente, eu gostaria de iniciar e parar a reprodução de um MP3 no iTunes ou de uma faixa no Spotify, usando um Arduino conectado ao computador da Apple com USB.

Posso imprimir em série no Arduino. Eu posso usar a Tela no Terminal para acessar as informações de série no Arduino. Posso iniciar e parar a reprodução de faixas no iTunes e Spotify usando o Applescript. Eu preciso de alguma maneira de ter palavras-chave na Tela para iniciar e parar no iTunes ou Spotify. Eu procurei por isso de várias maneiras, mas não consigo encontrar outra coisa senão sugestões para escrever um script para fazer a interface entre Screen e Applescripts. É aqui que estou preso.

Todas as sugestões serão muito apreciadas.

Fed
fonte
Bem-vindo ao perguntar diferente. Esta questão, como está escrita, é muito ampla. Tente limitando-o, fornecendo algumas informações básicas sobre o que você já tentou, o que você pesquisou, etc.
Allan

Respostas:

0

Provavelmente, isso é amplo demais para fornecer uma resposta prática, mas aqui está um resumo de como você precisará raciocinar sobre a automação do OS X.

Tente escolher um aplicativo criado para automação: https://www.macosxautomation.com

Se você puder aproveitar essa interface, estará muito mais perto de uma solução. Caso contrário, existem mais três métodos de uso geral para controlar o OS X:

  • script de linha de comando - para que você precise do ssh do arduino no Mac OS como um dispositivo de rede legítimo, assim como do sb no OS X a partir do ubuntu, Windows, iOS ou qualquer outro sistema operacional. Depois que o arduino pode abrir uma conexão de rede com o OS X - você pode usar AppleScript, JavaScript, bash, swift e muitos outros idiomas para enviar mensagens para o iTunes ou outros aplicativos programáveis.
  • Interface USB - a Apple projeta o sistema operacional para ser acessível a pedais, leitores de tela, controle de respiração e joysticks. Se você fosse experiente o suficiente para programar o seu arduino para emular um dispositivo auxiliar, poderia acessar o painel de preferências do sistema Acessibilidade e permitir que o seu arduino controlasse o mouse, o teclado, etc.
  • controle de voz. As alterações do macOS permitem iniciar o trabalho no seu arduino para sintetizar uma voz e conectar o sintetizador de voz à entrada de som (ou apenas usar um microfone) para falar com o sistema operacional. http://www.practicalarduino.com/projects/speech-synthesizer

Novamente - esse pode ser um projeto grande para qualquer pessoa que não tenha experiência, portanto, você deve se concentrar em automatizar sua automação do OS X primeiro. Depois de reproduzir / pausar as coisas no OS X para o OS X - você poderá ver se consegue replicar essas coisas no arduino.

Se você deseja que o arduino envie comandos seriais para um programa no Mac - você precisa primeiro aprender a programar como processar a entrada serial e, em seguida, aprender a ter esse script de programa como um dos métodos acima . Novamente - você precisará se concentrar em pequenas etapas possíveis e depois desenvolvê-las para criar um sistema.

bmike
fonte
Então, a automação pode ser acionada se a tela receber um determinado texto em série?
Fed
Certo. Observe a expectferramenta ou registre o texto da tela em um arquivo e, em seguida, analise o arquivo. Muitas maneiras de esfolar esse gato, @fed.
bmike
Eu sei como usar o AppleScript, e o automator não parece ter uma biblioteca para o Spotify. Então, existe alguma maneira para o AppleScript ouvir a Tela e agir quando uma palavra-chave estiver na Tela?
Fed
0

Deixa comigo. No Terminal, use a tela: screen /dev/cu.usbmodem621 9600

Em seguida, no Applescript, execute o seguinte loop:

definir gatilho para 1

repetir

tell application "Terminal"
    if the contents of front window contains "button 1" and trigger is 1 then
        tell application "Spotify" to playpause
        set trigger to 0
    end if

    if the contents of front window does not contain "button 1" then
        set trigger to 1
    end if

end tell

repetição final

Fed
fonte
Na verdade, isso parece falhar depois de um tempo. Fiz a pergunta em outro lugar, mas se alguém puder ajudar, vá em frente. Obrigado e desculpe pela postagem dupla.
Fed
0

Agora estou tendo saída de tela para log.txt, e o seguinte AppleScript funciona muito bem!

definir gatilho para 1

defina stopString como ""

repita até (stopString = "stop")

defina testTxt como parágrafos de (leia o arquivo POSIX "/Users/fed/log.txt") defina countTxt como (count of testTxt) - 1 configure lastLine para o item countTxt de testTxt
se lastLine contiver "Start MP3" e o trigger for 1, então informe aplicativo "Spotify" para reproduzir pausa, defina o gatilho para 0 final se

Se lastLine não contiver "Start MP3", defina o trigger como 1 final se

se lastLine contiver "Stop Loop", defina stopString como "stop" end se end repeat

Fed
fonte