DéveloppementDéveloppeur

Créer son propre programme pour connaitre l’état de la batterie d’une souris sans-fil Logitech

Bluetooth ou dongle Unify, les souris sans-fil de gamme moyenne et haute chez Logitech peuvent communiquer des deux manières. Le Bluetooth aura l’avantage de remonter nativement le pourcentage de batterie de la souris mais la mini clé USB Logitech ne sait pas le faire. En effet, hormis via un logiciel dédié, ce lien radio 2.4 GHz ne remonte pas l’information.

Il y a certes la possibilité d’installer le logiciel propriétaire Logi Options+ mais c’est une vraie usine à gaz, bien trop lourde pour cette simple information de contrôle. Alors, pour rester en connexion Unify avec le dongle USB, il faut chercher une alternative. A noter tout de même que la technologie Bluetooth Low Energy (BLE) doit consommer un peu moins de batterie que le dongle USB 2.4 GHz : le dongle Unifying garantit un signal très stable avec un taux de rafraîchissement constant mais la transmission radio 2.4 GHz sollicite la batterie de façon légèrement plus soutenue.

Il existe des applications et des scripts sur GitHub, en utilisation libre, mais pour surveiller le pourcentage exact de batterie d’une souris ou d’un clavier sans fil Logitech connectés avec le dongle Unifying, sans installer la suite Logi Options+, on peut développer son propre script / programme.

Développer son script pour surveiller la batterie d’une souris et d’un clavier Logitech

Voici un script Python minimaliste utilisant la bibliothèque « hidapi » pour interroger le récepteur USB Logitech via le protocole HID++ utilisé par la marque.

Prérequis

Il faut installer le paquet Python de gestion des périphériques HID en saisissant la commande suivante dans un terminal ou invite de commandes :

pip install hidapi pystray pillow

logitech script python installer

Script Python

On va créer le script « logitech_tray.pyw » qui va ajouter une icône de surveillance en bas à droite à côté de l’heure (le systray). Windows va l’exécuter silencieusement en arrière-plan.

import threading
import time
import hid
from PIL import Image, ImageDraw
import pystray

VENDOR_ID = 0x046D

def lire_batterie_logitech():
devices = hid.enumerate(VENDOR_ID)
if not devices:
return None

target_path = None
for dev in devices:
if dev.get(‘usage_page’) in (0xFF00, 0xFF01):
target_path = dev[‘path’] break

if not target_path and devices:
target_path = devices[0][‘path’]

if not target_path:
return None

device = hid.device()
try:
device.open_path(target_path)
device.set_nonblocking(True)
requete = [0x10, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x00] device.write(requete)
time.sleep(0.1)
reponse = device.read(64)
if reponse:
return reponse[2] except Exception:
pass
finally:
device.close()
return None

def creer_image_icone():
# Génère une icône circulaire bleue de 64×64 pixels
image = Image.new(‘RGBA’, (64, 64), color=(0, 0, 0, 0))
draw = ImageDraw.Draw(image)
draw.ellipse((4, 4, 60, 60), fill=(0, 120, 215))
return image

def mise_a_jour_boucle(icon):
while True:
niveau = lire_batterie_logitech()
if niveau is not None:
icon.title = f »MX Vertical : {niveau} % »
else:
icon.title = « MX Vertical : non détectée »
time.sleep(300) # Rafraîchissement automatique toutes les 5 minutes

def action_actualiser(icon, item):
niveau = lire_batterie_logitech()
if niveau is not None:
icon.title = f »MX Vertical : {niveau} % »
else:
icon.title = « MX Vertical : non détectée »

def action_quitter(icon, item):
icon.stop()

def main():
image = creer_image_icone()
menu = pystray.Menu(
pystray.MenuItem(« Actualiser », action_actualiser),
pystray.MenuItem(« Quitter », action_quitter)
)
icon = pystray.Icon(« logitech_battery », image, « MX Vertical : lecture… », menu)

# Thread secondaire pour ne pas bloquer l’interface
thread = threading.Thread(target=mise_a_jour_boucle, args=(icon,), daemon=True)
thread.start()

icon.run()

if __name__ == « __main__ »:
main()

# source du script : windows8facile.fr

Démarrage automatique du script

  1. Exécuter la commande (Windows + R) : shell:startup

  2. Y placer un raccourci du script logitech_tray.pyw 

  3. Redémarrer l’ordinateur pour voir le résultat.

script python batterie logitech

Comportement du script

Au survol de l’icône avec la souris, le pourcentage de la souris va être affiché et sera mis à jour toutes les 5 minutes.

Un clic droit sur l’cône permet d’actualiser l’information à la demande ou de fermer le programme.

logitech script python batterie


En savoir plus sur WindowsFacile.fr

Abonnez-vous pour recevoir les derniers articles par e-mail.

Publicité

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page

En savoir plus sur WindowsFacile.fr

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture