Construction des données de controle de luminosité d'une lampe Neewer 660
Dans le cadre des recherches sur le développement d'une application Windows pour contrôler un panneau LED Neewer 660, je réunis dans ce document les informations concernant la construction des données permettant de changer la luminosité de la lampe.
La lampe Neewer 660
La lampe Neewer est une lampe à LED RGB contrôlable par Bluetooth via l'application smartphone Android ou iPhone.
Les données
Après des manipulations de reverse engineering et focalisé sur les données de la luminosité de la lampe, il est apparue un code hexadécimal de 16 caractères:
xxxxxx xx xx xx xx xx
La constante: Les 6 premiers caractères sont fixes tout le long des tests et ont la valeur suivante : 788604
La couleur: Les 2 caractères suivants représentent la valeur hexadécimale de la position, en degrés, du curseur dans le cercle chromatique.
Le flag: S'en suis 2 caractères variants de 01 à 00 (en hexa). Ce flag change d'état lorsque la couleur dépasse la valeur FF pour retourner à 00
La luminosité: S'ajoute 2 caractères représentant la valeur hexadécimale du pourcentage de luminosité souhaité. Par exemple pour 100% => 64, 50% => 32, 25% => 19 et 0% => 0
La saturation: Ensuite 2 caractères dont la valeur hexadécimale représente le pourcentage de saturation de la couleur sélectionnée.
Le checksum: Concernant les 2 derniers caractères rien n'est sûr. Il semble représenter un genre de checksum allant de 0 à 255 avec un modificateur:
Checksum (base 10) = 2 (base 10)+ flag (base 10) + couleur (base 10) + luminosité (base 10) + saturation (base 10)
Puis convertie en hexadécimal.
Resultat: Une fois cet ensemble de caractère concaténé, nous obtenons les données permettant de contrôler la couleur, la saturation et la luminosité de la lampe.
Voici toutes les données recueillient:
Data light control for Neewer 660 RGB LED Lamp
Les tests
Les tests ont été effectués à l'aide d'un raspberry pi 4 avce Bluez installé.
Pour me connecter, il a été nécessaire de procéder à quelque configuration préalable.
Il semble important de modifier le fichier suivant :
sudo nano /etc/bluetooth/main.conf
d'y ajouter cette ligne en fin de document
DisablePlugins=pnat
et de redémarrer votre systeme
sudo reboot now
Une fois le système réveillé, vous pouvez vous connecter à la lampe avec la commande suivante :
gatttool -t random -b XX:XX:XX:XX:XX:XX -I
Notez que le parametre "-t" s'est vu affecter la valeur "random"
gatttool --help
Usage:
gatttool [OPTION?]
...
-t, --addr-type=[public | random] Set LE address type. Default: public
...
Une fois l'interface affichée, vous pouvez vous connecter et envoyer les données de controle.
pi@raspberrypi:~ $ gatttool -t random -b XX:XX:XX:XX:XX:XX -I
[XX:XX:XX:XX:XX:XX][LE]> connect
Attempting to connect to XX:XX:XX:XX:XX:XX
Connection successful
[XX:XX:XX:XX:XX:XX][LE]> char-write-cmd 0x000e 788604d100640037
Top comments (0)