web-dev-qa-db-fra.com

IOException lors de la demande de clé: réponse de clé de périphérique non valide

J'utilise un Pi 3 avec google IOT pour faire fonctionner certains relais qui contrôlent les vannes d'un système d'irrigation. Le système utilise Internet pour obtenir des prévisions météorologiques afin de déterminer la quantité d'eau à utiliser et utilise NanoHTTPD pour fournir une interface utilisateur.

Cela fonctionne bien, mais parfois je reçois une erreur qui arrête le tout. À partir des fichiers journaux:

05-04 05:26:14.677 737-1077/com.google.Android.gms.persistent W/Conscrypt: Could not set socket write timeout:
05-04 05:26:14.678 737-1077/com.google.Android.gms.persistent W/Conscrypt:    Java.lang.reflect.Method.invoke(Native Method)
       com.google.Android.gms.org.conscrypt.Platform.setSocketWriteTimeout(:com.google.Android.gms@11973330:13)
05-04 05:26:14.798 737-1077/com.google.Android.gms.persistent W/Conscrypt: Could not set socket write timeout:
05-04 05:26:14.799 737-1077/com.google.Android.gms.persistent W/Conscrypt:    Java.lang.reflect.Method.invoke(Native Method)
       com.google.Android.gms.org.conscrypt.Platform.setSocketWriteTimeout(:com.google.Android.gms@11973330:13)
05-04 05:26:14.914 737-1077/com.google.Android.gms.persistent W/GLSUser: [AppCertManager] IOException while requesting key: 
    Java.io.IOException: Invalid device key response.
        at fmk.a(:com.google.Android.gms@11973330:12)
        at fmk.a(:com.google.Android.gms@11973330:64)
        at fmi.a(:com.google.Android.gms@11973330:8)
        at fme.a(:com.google.Android.gms@11973330:1)
        at fmd.a(:com.google.Android.gms@11973330:10)
        at com.google.Android.gms.auth.account.be.legacy.AuthCronChimeraService.b(:com.google.Android.gms@11973330:7)
        at ers.call(:com.google.Android.gms@11973330:3)
        at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
        at kfr.run(:com.google.Android.gms@11973330:26)
        at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1162)
        at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:636)
        at kku.run(Unknown Source:7)
        at Java.lang.Thread.run(Thread.Java:764)

J'apprécierais quelques conseils sur la façon d'empêcher cela de se produire.

Merci.

10
pir8ped

Facile. Cela signifie que la clé de la console Google associée au service IOT ne correspond pas à celle stockée localement sur votre Mac/Pi 3.

Exécutez simplement: keytool -list -v -keystore <your keystore> -storepass <your store password> et copiez la clé sous SHA1 ou SHA256 à la console Google.

Vous pouvez créer un keystore si aucun n'est présent par keytool -genkeypair.

Pour d'autres commandes utiles, exécutez keytool -h.

3
Dennis Murage