# Bluetooth: comment connecter/détecter automatiquement Onyx Studio 4



## subsole (30 Août 2018)

Bonsoir.
Je suis obligé après chaque lancement du Mac de reconnecter l'Onyx Studio 4 (Harman/Cardon) dans les préférences Bluetouth du Mac sous High Sierra, alors que (et heureusement) le clavier et la souris sont détectés normalement.
Alors, comment connecter/détecter automatiquement Onyx Studio 4 ?


----------



## subsole (31 Août 2018)

Une idée ?


----------



## subsole (31 Août 2018)

Je pense que ça doit être possible avec Automator, mais comme je n'y connais pas grand chose 
Il faudrait connecter/cliquer sur le HD Onyx Studio 4 dans la liste bluetooth.
Si vous avez une piste , je suis preneur.


----------



## Membre supprimé 1129907 (1 Septembre 2018)

Je n'ai rien vu dans Automator pour gérer le Bluetooth. A moins de lancer un script ou un applescript en connaissant la commande, cela va être difficile 

Dans les paramètre Bluetooth, vois-tu ton "Onyx Studio 4" en "Non connecté" ?
Je viens de faire un test avec mes écouteurs, ils restent en "Non connecté" car il ne se connecte qu'au dernier appareil connecté : l'iPhone. C'est un peu con ...
Tes enceintes, sont-elle connectée à plusieurs appareils ?


----------



## subsole (1 Septembre 2018)

Oui je vois  l'Onyx Studio 4 en "Non connecté", il faut que je "clic" sur connecter .... pour le connecter.
l' Onyx Studio 4 fonctionne toujours avec même iMac (il a 2 iMac et le problème reste le même  le second), mais lorsque je démarre celui-ci, je suis obligé de choisir _Onyx Studio 4_ dans la liste et de cliquer sur connecter.


----------



## Membre supprimé 1129907 (1 Septembre 2018)

J'ai une bonne nouvelle pour toi 
La base de la solution était ici : https://stackoverflow.com/questions...ooth-device-iphone-via-command-line-on-macosx

Alors, il va falloir donner un peu plus de droits à Automator pour qu'il puisse faire ce boulot 
 > Préférences Système > Sécurité et confidentialité > Accessibilité > coche Automator ici

Ensuite dans automator, choisi "Executer un script AppleScript", met tout ça dedans 
Le "Onyx Studio 4" est à remplacer pas le nom exact que tu as chez toi et le "Connecter" à changer si tu utilises une autre langue pour ton système.


```
on run {input, parameters}
   
    activate application "SystemUIServer"
    tell application "System Events"
        tell process "SystemUIServer"
            -- Working CONNECT Script.  Goes through the following:
            -- Clicks on Bluetooth Menu (OSX Top Menu Bar)
            --    => Clicks on Onyx Studio 4 Item
            --      => Clicks on Connecter Item
            set btMenu to (menu bar item 1 of menu bar 1 where description is "bluetooth")
            tell btMenu
                click
                tell (menu item "Onyx Studio 4" of menu 1)
                    click
                    if exists menu item "Connecter" of menu 1 then
                        click menu item "Connecter" of menu 1
                        return "Connecting..."
                    else
                        click btMenu -- Close main BT drop down if Connect wasn't present
                        return "Connect menu was not found, are you already connected?"
                    end if
                end tell
            end tell
        end tell
    end tell
   
    return input
end run
```

Test ok avec mes écouteurs


----------



## subsole (2 Septembre 2018)

Merci, je testerai demain dans la journée, lorsque j'accèderai au Mac.


----------



## subsole (6 Septembre 2018)

D'abord merci et désolé pour cette réponse tardive.
J'ai testé mais, ça fonctionne une ou deux fois sur dix, je ne sais pas pourquoi.
Je me suis rabattu sur un script concocter par zeltron54 qui fonctionne mieux, puisqu'il fonctionne environ 8/10.
zeltron54  m'a fait une modification que je dois testé.


----------



## Membre supprimé 1129907 (6 Septembre 2018)

Hmmm, peut-être qu’il faut faire une pause au début avant de lancer le script (ex : sleep 60) et ne pas toucher au clavier/souris ?

Peux-tu nous partager l’autre solution ?


----------



## zeltron54 (6 Septembre 2018)

Bonjour ecatomb,
subsole m'avait contacté en message privé et je lui avais donné la même solution que toi (sans l'incorporer dans automator) et à sa demande je lui est conseillé d' ajouter un : delay 5 (même idée que toi).
Par contre je ne connait pas de commande applescript, shell ou javascript pour vérifier si l'appareil est connecté, à part le  (if exists menu item "Connecter" of menu 1) contenu dans le script, mais si je me sert de cela pour vérifier si connecté afin de l'inclure dans un repeat, j'ai une erreur lors du deuxième accés.
Si tu as une idée  !  

Je te met le script que je lui ai donné :

```
activate application "SystemUIServer"
tell application "System Events"
    tell process "SystemUIServer"
    delay 5
        set btMenu to (menu bar item 1 of menu bar 1 whose description contains "bluetooth")
        tell btMenu
            click
            tell (menu item "HD Onyx Studio 4" of menu 1)
                click
                if exists menu item "Connecter" of menu 1 then
                    click menu item "Connecter" of menu 1
                    return "Connecting..."
                else
                    key code 53
                    return
                end if
            end tell
        end tell
    end tell
end tell
```


----------



## Membre supprimé 1129907 (6 Septembre 2018)

J'ai trouvé que "system_profiler SPBluetoothDataType" permettait d'avoir ce genre d'info 

```
system_profiler SPBluetoothDataType 2>/dev/null | grep "Apple Wireless Keyboard:" -A 10 | grep "Connected:"
```

Résultat :

```
user@iMac:~$ system_profiler SPBluetoothDataType 2>/dev/null | grep "mes écouteurs:" -A 10 | grep "Connected:"
              Connected: No
user@iMac:~$ system_profiler SPBluetoothDataType 2>/dev/null | grep "Apple Wireless Keyboard:" -A 10 | grep "Connected:"
              Connected: Yes
```


----------



## Membre supprimé 1129907 (6 Septembre 2018)

Si le delay 5 est mieux, testes le delay 10


----------



## zeltron54 (7 Septembre 2018)

Bonjour subsole,

Suite à la commande donnée par ecatomb, j'ai refais un script simplifié.
ATTENTION dans ce script la commande "delay 15" devra peut-être être adaptée chez toi. En effet lors d'un click sur connecter, le système reste sur cette commande environ 13 secondes (sur mon mac) et tout nouveau click sur connecter provoque une erreur.
Le nouveau script tourne en boucle jusqu'a ce que le périphérique soit connecté. J'ai limité le nombre de tentative de connection à 10 ( repeat 10 Times)
Dans la ligne (set test to do shell script "system_profiler SPBluetoothDataType 2>/dev/null | grep " & "'" & "HD Onyx Studio 4:" & "'" & " -A 10 | grep " & "'" & "Connected:" & "'") le système est sensible à la casse, vérifie que le nom de ton périphérique soit bien exact et suivi des :

J' attend le résultat de tes tests.


```
activate application "SystemUIServer"
tell application "System Events"
    tell process "SystemUIServer"
        delay 10 -- attente 10 secondes avant de lancer le script pour être sur que le bluetooth soit activer au démarrage
        repeat 10 times
            set test to do shell script "system_profiler SPBluetoothDataType 2>/dev/null | grep " & "'" & "HD Onyx Studio 4:" & "'" & " -A 10 | grep " & "'" & "Connected:" & "'"
            set test to test as string
            if test = "              Connected: No" then
                set btMenu to (menu bar item 1 of menu bar 1 whose description contains "bluetooth")
                tell btMenu
                    click
                    tell (menu item "HD Onyx Studio 4" of menu 1)
                        click
                        click menu item "Connecter" of menu 1
                    end tell
                end tell
            else
                exit repeat
            end if
            delay 15 -- attente 15 secondes avant de faire un nouvel essai de connection que le système est terminé
        end repeat
    end tell
end tell
```


----------



## subsole (7 Septembre 2018)

Bonjour les spécialistes.
Je teste et reviens vous dire d'ici demain ou moins.
Merci encore de vous décarcasser comme ça.


----------



## zeltron54 (7 Septembre 2018)

@subsole 
Après plusieurs test :
1 - sur un mac moins rapide et qui exécute quelques script au démarrage, il m'a fallut augmenter le délay 15 secondes à 30 secondes.
2 - le test de connexion  qui renvoi des espaces suivi de connected: No, pose un problème sur un autre mac le nombre d'espaces est différent d' ou erreur. il m'a fallut modifier le script en supprimant ces espaces. ce qui donne:


```
activate application "SystemUIServer"
tell application "System Events"
    tell process "SystemUIServer"
        delay 10 -- attente 10 secondes avant de lancer le script pour être sur que le bluetooth soit activer au démarrage
        repeat 10 times
            set test to do shell script "system_profiler SPBluetoothDataType 2>/dev/null | grep " & "'" & "HD Onyx Studio 4:" & "'" & " -A 10 | grep " & "'" & "Connected:" & "'"
            set test to do shell script "echo " & test
            if test = "Connected: No" then
                set btMenu to (menu bar item 1 of menu bar 1 whose description contains "bluetooth")
                tell btMenu
                    click
                    tell (menu item "HD Onyx Studio 4" of menu 1)
                        click
                        click menu item "Connecter" of menu 1
                    end tell
                end tell
            else
                exit repeat
            end if
            delay 30 -- attente 30 secondes avant de faire un nouvel essai de connexion que le système est terminé
        end repeat
    end tell
end tell
```


----------



## subsole (11 Septembre 2018)

Bonjour 
Effectivement, le Mac donnait une erreur (que je n'ai plus en tête , c'est pas bô), et je suis revenu à ton premier script (celui du MP), qui fonctionne à 90% avec un delay de 2 secondes.
Je testerai ton dernier script, dès que possible, en ce moment je suis un peu dans le jus.


----------



## subsole (1 Octobre 2018)

Bonsoir zeltron54
J'ai eu enfin l'accès au Mac et surtout le temps de bien tester ton script, c'est parfait.
C'est du 100%  reconnu et détecté,  bravo à toi ! 
Mille mercis, pour ta patience et le temps que tu m'as accordé.


----------



## zeltron54 (1 Octobre 2018)

Content pour toi.


----------



## subsole (2 Octobre 2018)

Merci également à ecatomb que je n'ai pas cité dans mon dernier message.
Je me couvre de cendres!
Merci les gars.


----------



## subsole (6 Janvier 2019)

Bonjour
J'ai l'intention remettre cet iMac à jour avec Mojave.
Penses-tu quel ce script fonctionnera ?
Je préfère tenir que courir.


----------



## nicomarcos (6 Janvier 2019)

Il m'étais arrivé le même problème, quand j'étais sous OS Sierra ça fonctionnait très bien.
Quand je suis passé sous High Sierra, comme toi il fallait reconnecter manuellement.
Une piste : HFS→APFS, franchement je sais pas , il faudrait demander "aux experts", parce-que
étant revenu à OS Sierra plus de problème.
A creuser peut-être ?
Si ça peut aider...


----------



## zeltron54 (6 Janvier 2019)

Bonjour,

Je suis sur Mojave (voir dans ma signature), et je viens de tester le script. Je n'ai pas rencontré de problème, le script continu de fonctionner chez moi.
Il faudra peut être l'autoriser dans les préférences système > sécurité et confidentialité.
Les contrôles sécurité apple deviennent C...t . Mais bon !

Tiens moi au courant du fonctionnement.


----------



## subsole (8 Janvier 2019)

Bonjour
Pour ce qui este la sécurité, c'est déjà le cas avec High Sierra, il faut autoriser le script.
Si ça tourne chez toi, j'espère qu'il en sera de même ici. 
Je te tiens au courant aussitôt que j'ai accès à la machine.


----------



## Tony Volaille (28 Mai 2022)

Bonsoir,
Etant nouvel utilisateur MacOS, j'ai rencontré le même problème que vous, j'ai donc suivi la méthode décrite mais celle-ci ne fonctionne pas.
J'ai procédé comme suit :

Création d'une application Automator
Sélection de la méthode "Exécuter un script AppleScript"
Copie du script fourni avec le changement du nom de mon enceinte
J'ai ensuite donné toutes les autorisations nécessaires et j'ai enregistrer l'application comme devant se lancer au démarrage mais rien n'y fait.
Auriez vous une idée de solution ? Merci d'avance


----------

