Govee Smart WiFi

Bonjour,

est-ce que ce plugin permet de contrôler les led Govee Smart WiFi ? Ca marche très bien avec leur appli et google mais j’aimerai aussi l’intégrer dans jeedom.

Merci

xavier

le plugin n’est pas compatible mais cela pourrait être facile de le rendre.
Pour cela, il faudrait installer sur un android version plutôt <=8 packet capture de manière à espionner les trames entre l’appli mobile et les leds.
Si ce que je viens d’écrire t’est complètement inconnu, vaut mieux ne pas poursuivre.
Tu cherches packet capture sur ce forum pour te faire une idée. Il y a aussi httpCanary qui fait le job.

1 « J'aime »

ok si je comprends. Je suis sur IOS et j’utilise Charles en général pour faire ca. Je viens de jeter un oeil et c’est faisable mais ca passe par leur cloud. Je vais regarder s’il n’y a pas possibilité de faire un truc local avant. Merci

si tu débranches internet sur ta box et que ça ne fonctionne plus, c’est full cloud et le plugin ne fait pas.
j’ai trouvé ceci mais en bluetooth :

pas sûr que ce soit pareil.

merci je viens de regarder vite fait et je pense que c’est bluetooth en local et wifi via govee car mon port scan sur la lumiere ne renvoie aucun port ouvert.
Bon ca va rester comme ca pour le moment :slight_smile:

Merci

Bonjour,

Je viens de tomber sur ce topic qui est très intéressant. Vous avez aussi la liste des device compatible avec l’API.

J’ai effectué ma demande de clef API sur l’application et je vais voir ce que ça donne. Je vous ferais un retour à ce moment.

Quelqu’un a réussi a controler du matos Govee ?
j’aimerai juste l’allumer et l’eteindre en même temps que la télé :grin:

je suis également intéressé pour l’allumer en même temps que ma TV.

@titi007 @Ptitsnake est-ce que vous avez regardé les liens que j’ai mis ? La réponse se trouve dedans. J’ai personnellement réussis à allumer et éteindre mon bandeau de LED dans un scénario grâce au bloc « CODE » en php :

$req = 'curl --location --request PUT "https://developer-api.govee.com/v1/devices/control" --header "Govee-API-Key: YOUR-KEY" --header "Content-Type: application/json" --data-raw \'{ "device": "XX:XX:XX:XX:XX:XX:XX:XX", "model": "H6199", "cmd": { "name": "turn", "value": "off" } }\' ';
$scenario->setLog('DEBUG REQUETTE : '.$req);
$output0 = shell_exec($req);
$scenario->setLog('DEBUG RETOUR : '.$output0);
1 « J'aime »

Merci @Floflobel pour ta réponse, j’ai bien tenté d’utilisé la requête que tu as donné via un scénario comme tu l’as indiqué (avec comme déclencheur le status TV à 1). Mais cela ne fonctionne pas.
Au niveau du « device » c’est bien l’adresse MAC du strip Govee que je dois renseigner ? (car tu as affiche 10 champs pour un Mac Adress qui en possède que 8).
J’ai également bien renseigné l’API Key récupéré dans l’application.

Et quand je teste la commande directement sur le Raspberry j’ai l’erreur suivante :

curl --location --request PUT "https://developer-api.govee.com/v1/devices/control" --header "Govee-API-Key: YOUR-KEY" --header "Content-Type: application/json" --data-raw \'{ "device": "XX:XX:XX:XX:XX:XX:XX:XX", "model": "H6199", "cmd": { "name": "turn", "value": "off" } }\'
{"status":400,"errors":"invalid JSON, only supports object and array"}curl: (6) Could not resolve host: device
curl: (3) URL using bad/illegal format or missing URL
curl: (6) Could not resolve host: model
curl: (6) Could not resolve host: H6199,
curl: (6) Could not resolve host: cmd
curl: (3) unmatched brace in URL position 1:
{
 ^
curl: (6) Could not resolve host: name
curl: (6) Could not resolve host: turn,
curl: (6) Could not resolve host: value
curl: (6) Could not resolve host: off
curl: (3) unmatched close brace/bracket in URL position 1:
}
 ^
curl: (3) unmatched close brace/bracket in URL position 1:
}'
 ^

J’ai du loupé un truc mais je ne sais pas bien quoi…

enlever les \ devant

\'

tu me rassures car chez moi non plus, ça ne fonctionne pas …

Je viens de test sans les backslash mais j’ai tout de même cette erreur :
{"status":400,"errors":"Device Not Found"}

J’ai vérifié l’adresse MAC elle est correcte.

pourtant c’est forcément le problème
elle a bien 12 caractères ?
sinon l’apikey

ou l’adresse IP

1 « J'aime »

J’ai vérifié l’adresse mac, l’API.

L’adresse IP ? Elle est utilisée dans la ligne de commande ? Je ne l’ai pas assignée à un paramètre. A quel niveau faut-il l’utiliser ?

laisse tomber l’IP c’est du cloud.
La requête est envoyé sur le serveur et reconnue mais le serveur ne trouve pas l’appareil et retourne cette erreur.
Donc erreur pour dialoguer avec l’appareil.
Il y a donc une erreur quelque part dans la commande :

curl --location --request PUT "https://developer-api.govee.com/v1/devices/control" --header "Govee-API-Key: YOUR-KEY" --header "Content-Type: application/json" --data-raw '{ "device": "XX:XX:XX:XX:XX:XX:XX:XX", "model": "H6199", "cmd": { "name": "turn", "value": "off" } }';

Comme tu as copié une commande qui est OK, seul ce que tu as changé est mis en cause ainsi que le dialogue avec les serveurs :

  • api key à vérifier et ne pas mettre d’espace après le :
  • adresse mac
  • le modèle est le même ?

Pour avancer :
télécharger postman pour avoir une interface http request sympa.
cliquer sur new mettre PUT et l’adresse et configurer le header :


ensuite configurer Body et cliquer sur send :

Comme je n’ai pas l’API key dans la réponse (cliquer sur body en bas) m’indique que mon API key n’est pas bonne, donc la tienne l’est.
Tu peux essayer de mettre une mauvaise adresse mac etc.

Ensuite, lire ici :

L’adresse mac a 12 car et partout dans l’API il y en a 16. Il semble que les 4 premiers caractères de l’adresse « mac » selon Govee sont :
40:83:XX:XX:XX:XX:XX:XX
je ne sais pas d’où vient le 40:83 et plus loin c’est 99:F8:
Dans le lien en question il y a d’autres exemples pour l’intensité et les limites de cet API.

Enfin, ici :

il y a la commande qui peut être envoyée avec postman pour obtenir en retour l’adresse mac.
configurer Postman avec :
GET
adresse : https://developer-api.govee.com/v1/devices
Header : identique à ci-dessus
Body : vide
Tu devrais récupérer l’adresse MAC.

Je pense faire un plugin si tu es d’accord pour que je travaille sur tes périphériques.

1 « J'aime »

Bonjour @bernardfr.caron

J’ai suivi toutes tes indications et j’ai enfin réussi à piloter ma lumière Govee avec l’API.
Alors effectivement le problème venait du device ID qui dans mon cas n’est pas du tout l’adresse MAC du bandeau…

Pour le récupérer j’ai suivi tes indications et j’ai télécharger le logiciel POSTMAN (Il est Top soit dit en passant) et j’ai lancé une commande « GET » pour récupérer cette information :
CMD : Type GET
URL : https://developer-api.govee.com/v1/devices
Headers : ==> j’ai ajouté ces deux champs :
Govee-API-Key : <MON_API_KEY_recue_par_Mail>
Content-Type : application/json

Et j’ai obtenu comme retour :

{
    "data": {
        "devices": [
            {
                "device": "16:XX:12:34:56:78:91:23",
                "model": "H6199",
                "deviceName": "Govee_Salon",
                "controllable": true,
                "retrievable": true,
                "supportCmds": [
                    "turn",
                    "brightness",
                    "color",
                    "colorTem"
                ],
                "properties": {
                    "colorTem": {
                        "range": {
                            "min": 2000,
                            "max": 9000
                        }
                    }
                }
            }
        ]
    },
    "message": "Success",
    "code": 200
}

Donc comme tu peux le constater le « Device ID » récupéré ne ressemble pas du tout à l’adresse MAC indiqué dans l’application…

Ensuite j’ai utilisé les commandes que tu avais données et à partir de là tout fonctionne correctement :

EDIT : Et bien sûr tout fonctionne également en ligne de commande depuis la raspberry en utilisant la commande CURL
ON

root@JeedomPI:~# curl --location --request PUT 'https://developer-api.govee.com/v1/devices/control' --header 'Govee-API-Key:12xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx' --header 'Content-Type:application/json' --data-raw '{"device":"16:12:34:56:78:90:12:34","model":"H6199", "cmd":{"name":"turn","value":"oN"}}';
{"code":200,"message":"Success","data":{}}

OFF :

root@JeedomPI:~# curl --location --request PUT 'https://developer-api.govee.com/v1/devices/control' --header 'Govee-API-Key:12xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx' --header 'Content-Type:application/json' --data-raw '{"device":"16:12:34:56:78:90:12:34","model":"H6199", "cmd":{"name":"turn","value":"off"}}';
{"code":200,"message":"Success","data":{}}

Et la lumière s’est bien allumée et éteinte correctement.
Top maintenant je vais enfin pouvoir utiliser cette requête pour allumer automatiquement le bandeau govee en même temps que ma TV.
EDIT 2 :
C’est bon en reprenant le bloc code et en l’intégrant à un scénario avec comme déclencheur l’état de la TV (1 ou 0) le bandeau s’allume bien en même temps que la TV ==> TOP un grand merci.

Merci de ton aide, et si tu as besoin de faire des tests je suis dispo en MP :wink:

Bonne journée

1 « J'aime »

j’ai bien le bon message mais ça ne fait rien !

{
    "code": 200,
    "message": "Success",
    "data": {}
}

peut être que c’est dû à mon modèle :« H6054 »
j’ai mis ça dans le body :

{"device":"4A:xx:xx:xx:30:30:4A:xx","model":"H6054","cmd": {"name":"turn","value":"on"}}

pourtant la 1ere partie m’a bien donné des infos …
c’est fou, ça fonctionne impec sous homeassistant :thinking:

Rectificatif, ça fonctionne avec postman …
c’est moi qui ne sait pas comment le mettre dans un script :woozy_face:
je vais attendre que @bernardfr.caron nous fasse un plugin. d’ailleurs si tu as besoin de test (en mp)

Bonjour, j’ai bien réussi a faire reconnaitre mon module led tv H6199 GOVEE mais je ne peux pas actionner le mode TV (ambilight), il n’est possible que de mettre on off ou les couleurs.
Est-ce normal ?