Recalbox Forum

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • recalbox.com
    • Gitlab repository
    • Documentation
    • Discord

    [WIP] Indicateur de batterie

    Recalbox Général
    indicateur batterie
    7
    32
    11655
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • wizardpc
      wizardpc last edited by wizardpc

      @substring @rockaddicted

      Suite aux échanges avec rockaddicted sur l'IRC il m'a proposé de compiler "raspidmx" sur une autre distribution (ex : Raspbian), puis de récupérer le binaire pour le mettre sur Recalbox directement.

      Le projet a bien compilé sur Raspbian 🙂

      MAIS, la version de "libpng" est la 12, contre la 16 sur Recalbox. J'ai donc effacé la 12 de raspbian pour y mettre la 16 et relancer la compilation, il y a une erreur pour le "make".

      Etant sur un pi Zero sans hub usb, je me galère bien avec juste le clavier.. Et je ne sais pas pourquoi je n'arrive pas à éditer le "Makefile" avec nano... ça ne veux pas l'ouvrir.

      Voilà où j'en suis, je continuerai à investiguer dès que je trouve du temps libre.

      1 Reply Last reply Reply Quote 0
      • wizardpc
        wizardpc last edited by

        Me revoilà, j'ai réussi à compiler avec la version de libpng16 !!

        Voici les étapes que j'ai suivi :

        1. Installation de Raspbian sur le Pi Zero W
        2. Ajout du miroir "ftp.fr.debian.org/debian" dans le "sources.list"
        3. Suppression de libpng12 avec un "apt-get remove"
        4. Installation de libpng16 à la place avec un "apt-get install"
        5. Vérification de l'include qui sera utilisé avec la commande "libpng-config --cflags"
        6. Lancement du "make" pour le projet "pngview", le fichier "pngview.o" a bien été généré sans erreur !

        Il reste quelques points à finaliser :

        1. La version de libpng sur Recalbox est 1.6.25 contre la 1.6.28 qui a été utilisée sous Raspbian.

        2. J'ai put lancer le script python de l'autre projet, mais aucune valeur n'est remontée pour l'instant car je n'ai pas encore le micro contrôleur "MCP3008". Je suis en attente de réception de ma commande pour tester du coup.

        3. @rockaddicted proposait de monter de version de "libpng" et peut-être d'intégrer directement le "pngview.o" et le projet "gbzbatterymonitor" pour la 4.1. Cela pourrait se traduire par une option activable dans le "recalbox.conf" comme c'est déjà le cas pour le "system.power.switch" ? Par exemple.

        Dans le même sujet, il serait possible un jour, d'afficher les icônes "wifi" et "bluetooth" de la même façon. Je vais regarder si c'est facilement faisable...

        1 Reply Last reply Reply Quote 0
        • godhunter74
          godhunter74 last edited by

          Que du bonheur merci d'avoir essayé et merci d'avoir réussi !!!

          Relier un écran I2C et afficher des informations sur les roms

          1 Reply Last reply Reply Quote 0
          • wizardpc
            wizardpc last edited by wizardpc

            Aujourd'hui j'ai réussi à toucher au but !

            1. J'ai réinstallé Recalbox 4.1 pour le Pi Zero W
            2. J'ai copié le projet "raspidmx" en gardant seulement les dossiers "common" et "pngview" déjà compilé
            3. 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...
            4. 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".
            5. Voilà le résultat une fois sur Recalbox !!!

            alt text

            Donc ça fonctionne 🙂

            Il reste encore quelques points :

            1. 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 ?
            1. Le code utilise des "sudo" :
            • Or sous Recalbox il n'y en a pas
            • A supprimer dans le code du coup
            1. 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).
            1. 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 ? 😛
            1 Reply Last reply Reply Quote 0
            • wizardpc
              wizardpc last edited by

              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à !

              1 Reply Last reply Reply Quote 2
              • acris
                acris last edited by

                Ya plus qu à voir en action dis donc. Bravo 🙂

                1 Reply Last reply Reply Quote 0
                • kjbstar
                  kjbstar last edited by

                  Beau boulot ! Tu vas faire un fork sur Github ? 🙂

                  Recalbox 4.0.2 sur Raspberry Pi 2
                  Recalboy sur Raspberry Pi Zero

                  1 Reply Last reply Reply Quote 0
                  • wizardpc
                    wizardpc last edited by

                    C'est déjà fait 🙂 Il est ici => https://github.com/WizardPC/gbzbatterymonitor !

                    piboy 1 Reply Last reply Reply Quote 1
                    • wizardpc
                      wizardpc last edited by

                      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.

                      kjbstar 1 Reply Last reply Reply Quote 0
                      • kjbstar
                        kjbstar @wizardpc last edited by

                        @wizardpc Toi je sens que tu vas rajouter 2 autres icônes, non ? ^^

                        Recalbox 4.0.2 sur Raspberry Pi 2
                        Recalboy sur Raspberry Pi Zero

                        wizardpc 1 Reply Last reply Reply Quote 0
                        • acris
                          acris last edited by

                          @wizardpc
                          peut être systemctl status bluetooth ?

                          acris 1 Reply Last reply Reply Quote 0
                          • wizardpc
                            wizardpc @kjbstar last edited by

                            @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...

                            1 Reply Last reply Reply Quote 0
                            • acris
                              acris @acris last edited by

                              @acris said in [WIP] Indicateur de batterie:

                              @wizardpc
                              peut être systemctl status bluetooth ?

                              wizardpc 1 Reply Last reply Reply Quote 0
                              • wizardpc
                                wizardpc @acris last edited by

                                @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 😉

                                1 Reply Last reply Reply Quote 0
                                • wizardpc
                                  wizardpc last edited by

                                  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.

                                  piboy 2 Replies Last reply Reply Quote 0
                                  • wizardpc
                                    wizardpc last edited by

                                    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..

                                    @rockaddicted @Substring @acris

                                    Substring 1 Reply Last reply Reply Quote 0
                                    • Substring
                                      Substring @wizardpc last edited by

                                      @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 😉

                                      Former dev - Please reply with @substring so that i am notified when you answer me
                                      Ex dev - Merci de me répondre en utilisant @substring pour que je sois notifé

                                      wizardpc 1 Reply Last reply Reply Quote 0
                                      • wizardpc
                                        wizardpc @Substring last edited by

                                        @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.

                                        Substring 1 Reply Last reply Reply Quote 0
                                        • Substring
                                          Substring @wizardpc last edited by

                                          @wizardpc c'est une sysclass à lire, donc tout simplement un fichier. Le pads ps3 renvoient 100/75/50/25 faut voir pour les autres

                                          Former dev - Please reply with @substring so that i am notified when you answer me
                                          Ex dev - Merci de me répondre en utilisant @substring pour que je sois notifé

                                          wizardpc 1 Reply Last reply Reply Quote 1
                                          • wizardpc
                                            wizardpc @Substring last edited by

                                            @Substring : Tu le lis comment ça ?

                                            Tu aurais un exemple de code ?

                                            Substring 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Want to support us ?

                                            69
                                            Online

                                            99.6k
                                            Users

                                            28.1k
                                            Topics

                                            187.1k
                                            Posts

                                            Copyright © 2021 recalbox.com