[WIP] Indicateur de batterie
-
Que du bonheur merci d'avoir essayé et merci d'avoir réussi !!!
-
Aujourd'hui j'ai réussi à toucher au but !
- J'ai réinstallé Recalbox 4.1 pour le Pi Zero W
- J'ai copié le projet "raspidmx" en gardant seulement les dossiers "common" et "pngview" déjà compilé
- J'ai modifié le code ainsi que le fichier de config pour avoir toujours la batterie à 100% et ainsi tester sans attendre le micro contrôleur...
- J'ai crée un script pour qu'il lance le "main.py" au boot. En me basant sur le "S99custom" déjà présent dans le dossier "init.d".
- Voilà le résultat une fois sur Recalbox !!!
Donc ça fonctionne
Il reste encore quelques points :
- L'image est en centrée en haut :
- Dans le code c'est fixé en dur à 650px horizontalement et 5 px verticalement. (Voir readme de pngview)
- Il faudrait rendre ça dynamique en calculant à partir de la résolution de l'écran. Y a surement une commande sous raspberry pi qui donne la résolution d'affichage ?
- Le code utilise des "sudo" :
- Or sous Recalbox il n'y en a pas
- A supprimer dans le code du coup
- L'image disparait au retour d'un jeu :
- Peut-être que la façon de lancer la commande python n'est pas la bonne ?
- Ou alors en rentrant dans l'émulateur il essaye de killer le process "pngview" sauf que ça plante avec le "sudo" (j'ai pas testé en l'enlevant).
- Globalement :
- Ou placer les projets "pngview" et "gbzbatterymonitor" sur le Pi ?
- Comment savoir si le Wifi est activé, puis connecté ou non ? avec une commande
- Comment savoir si le bluetooth est activé, puis appairé ou non ? toujours avec une commande
- @rockaddicted @Substring Qu'est-ce que je/vous/on fait maintenant ?
-
Bonjour
Finalement j'ai repris en main le projet d'origine.
- Nettoyage du code
- Mise à niveau de la syntaxe python
- Optimisation du code :
- Plusieurs "if" était codé bizarrement
- Des boucles étaient inutiles
- Code mort
- Nouveaux paramètres dans le config.py
- Nouvelles fonctionnalités :
- Possibilité de choisir le coin de l'écran où l'on veut placer l'icône ainsi que le décalage (en pixel) à appliquer par rapport au bord
- Positionnement dynamique de l'icône en prenant en compte la résolution utilisée !
- Logs plus précises
- Possibilité de forcer la batterie à 100% pour tester l'affichage
- Compatibilité avec Recalbox :
- Suppression des sudo
- Modification du retour de "ps aux | grep pngview", sous Recalbox l'id est en première position et pas en deuxième (comme sous Ubuntu par exemple)
Je vais essayer dans la semaine de rajouter :
- La possibilité de choisir le set d'icônes à utiliser (si quelqu'un veut/sait en faire dites le moi)
- Ajout des icônes Wifi et Bluetooth
- Sortir un fichier CSV exploitable du monitor.py (sert à calibrer le config.py par rapport à sa batterie)
Voilà !
-
Ya plus qu à voir en action dis donc. Bravo
-
Beau boulot ! Tu vas faire un fork sur Github ?
-
C'est déjà fait Il est ici => https://github.com/WizardPC/gbzbatterymonitor !
-
Est-ce qu'il y a une commande bash pour connaitre l'état du bluetooth ? Activé ou non puis appairé ou non ? Pour le wifi j'ai trouvé
Ou alors une variable/données accessible quelque part dans Recalbox ? Pour savoir si le Wifi/Bluetooth est ON ou OFF.
-
@wizardpc Toi je sens que tu vas rajouter 2 autres icônes, non ? ^^
-
@wizardpc
peut être systemctl status bluetooth ? -
@kjbstar said in [WIP] Indicateur de batterie:
@wizardpc Toi je sens que tu vas rajouter 2 autres icônes, non ? ^^
Oui ^^ Pour le wifi c'est presque bon ! Il juste que je trouve une image pour tester et gérer les deux process pngview indépendamment, pour ne pas modifier l'image de la batterie par celle du wifi (ou inversement) dès qu'il y a un changement.
Pour le bluetooth aucune d'idée de comment avoir les informations...
-
@acris said in [WIP] Indicateur de batterie:
@wizardpc
peut être systemctl status bluetooth ? -
@acris Merci
Avec la commande "systemctl is-active bluetooth" ça me renvois directement "active" ou "inactive" donc pour l'image c'est déjà ça !
A tester la commande "hcitool con" pour voir les connexions actives
-
Bien le bonjour !
Je viens vous faire part de l'avancement
Après avoir bien galéré (T_T), j'ai enfin réussi à faire fonctionner la transition d'icône, batterie 100% > 75% > 50%... J'étais bloqué avec solution d'origine car le "pid" remonté n'était pas celui de "pngview", je ne sais pas exactement à quoi il correspondait du coup, peut être le shell exécutant la commande ??*
Bref ! J'ai fini par abandonner ça et passer par un "subprocess.Popen" qui lui à directement l'attribut "pid" de retourné.
J'en ai profité pour rajouter une variable "DEBUGMODE" qui permet de changer le niveau de batterie à chaque fois qu'il va vérifier son pourcentage restant ça sera le même principe pour Wifi et BT.
Du coup dans ce qu'il reste à faire :
- Gérer l'affichage des icônes wifi et bluetooth
- Nouvelle variable dans le path pour choisir le thème des icônes (j'anticipe ^^)
- Tester avec une vraie batterie ! J'ai reçu le MCP3008 mais pas le reste...
- Tester les alertes vidéos
Le fork a été mis à jour. S'il y a des experts Python je veux bien avoir des retours ! Surtout sur l'utilisation du subprocess.
-
C'est encore moi !
Pour ma part je pense presque avoir fini, à part la position des icônes bluetooth et wifi en fonction du coin choisi. Peut-être refaire des icônes pour avoir un thème complet de base, j'ai juste piqué sur Google image pour l'instant
Problèmes : Les commandes pour le bluetooth et wifi "hcitool", "systemctl" et "nmcli" ne sont pas présentes sur Recalbox J'ai essayé de chercher d'autres solutions, mais c'est ce qui me semblait le plus simple.
Est-ce qu'elles pourraient être ajoutées en 4.1 ? Sans ça il faudrait une alternative ou alors se cantonner à l'icône de batterie..
-
@wizardpc hcitool est sur la 4.1 ca c'est sûr. Pour les 2 autres, je doute fortement (pas de recalbox sous la main pour vérifier)
Ton truc pourrait etre rigolo pour afficher l'etat de batterie des periphs bluetooth
-
@Substring : En effet "hcitool" est présent, j'avais du mal l'écrire ^^ Pour les autres j'ai vérifié ils n'y sont pas, est-ce que c'est possible de les rajouter de votre côté ? Ou je dois trouver une alternative ?
La batterie des périphériques... à voir si c'est faisable ! Mais je pense que le périphérique doit directement renvoyé la valeur pour que ça marche.
-
@wizardpc c'est une sysclass à lire, donc tout simplement un fichier. Le pads ps3 renvoient 100/75/50/25 faut voir pour les autres
-
@Substring : Tu le lis comment ça ?
Tu aurais un exemple de code ?
-
-
@wizardpc Bonjour et encore bravo, en effet c'est du très bon job :).
En revanche, sur le schéma sur Github sous la partie "Hardware part" , on voit la RPI connecté au MPC3008; et ce dernier connecté directement à une batterie. Je ne vois pas le module de charge entre les deux ou en dérivation. Par exemple dans mon cas, je possède un Powerboost 1000C relié à la batterie, servant de step-up et de mise en sécurité pour la batterie en cas de sous ou surtension.
Si on s'appuie sur ce schéma, peut on directement connecté la batterie avec les résistances au MPC3008 ? je préfère m'en assurer car la mauvaise manipulation d'une batterie li-ion peut être catastrophique.
Vous, comment avez vous procédé ? n' hésitez pas à me reprendre si je dis des bêtisesJe vous remercie. Très bonne journée.