Navigation

    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
    8519
    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 acris

      Bonjour,

      Je souhaite intégrer la fonctionnalité Battery Monitor dans Recalbox 4.1, pour un projet de console portable retro gaming sur base d'un Pi Zero W. J'ai déjà réussi à récupérer l'image de la 4.1 et modifier les fichiers de boot pour le Pi Zero W. D'ailleurs ça a l'air prometteur 😄

      Voila ce que ça rendrait : alt text
      Mon soucis c'est que la première étape de l'installation c'est la compilation du projet pngview...

      Sachant que Recalbox n'intègre pas le "make" ou "apt-get", j'ai pensé à deux solutions :

      1. Installer une VM Ubuntu pour faire du cross platform et réussir à compiler comme si j'étais surle Pi. Il n'y aurait qu'à placer le projet déjà compilé sur la carte SD de Recalbox.

      2. Passer par le Recalbox-docker-build et rajouter ce qu'il faut pour réussir à compiler depuis le Pi une fois la distribution installée.

      Pour l'instant aucune des deux solutions n'a aboutis 😞

      1. Je n'y arrive tout simplement pas. J’enchaîne erreur de compilation sur erreur de compilation. J'ai crée un topic sur HFR pour obtenir de l'aide (voir ICI). Peut-être que quelqu'un de l'équipe de dev saurait me répondre ?

      2. Ici je bloque dès le début car j'ai une erreur sur la branche "rb-4.1.X" pour "rpi1", qui est la suivante : libusb-compat is in the dependency chain of qtsixa that has added it to its _DEPENDENCIES variable without selecting it or depending on it from Config.in. Stop. C'est déjà lié à une issue toujours ouverte, mais il n'y a pas d'indication pour résoudre le soucis à part de passer par la branch master mais qui du coup est la 4.0 (c'est bien ça ?)

      Alors oui, j'insiste sur la 4.1, même si elle est toujours en cours de développement. Pour la simple raison que j'aimerais que mon projet soit prêt quand la version sortira en release. Car en dehors de l'ajout de l'indicateur de batterie, j'ai prévu un script bash qui va configurer automatiquement les fichiers de conf Recalbox nécessaires (mapping gpio, écran, audio...) pour que la console portable puisse marcher du premier coup sans avoir besoin du clavier ou du réseau.

      Si le point 2) peux être résolu, je pourrais du coup modifier les fichiers de conf avant la création de l'image ? Si oui, ce serait encore plus frendly-user ! Et me permettrait à moi et n'importe qui, d'avoir déjà une image Recalbox compatible avec la console portable.

      ps : Après si vous voulez intégrer le moniteur de batterie dans la 4.1 dites le moi, et je ne m'embête pas plus 😉

      Merci de votre aide !

      @substring @digitalumberjack @rockaddicted

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

        @wizardpc pourquoi veux-tu pngview ? Il y a un core pour afficher des images ... c'est géré directement par retroarch

        le pb de qtsixa : c'est résolu de notre côté, mais le code sur github n'est pas à jour pour ca. L'issue que tu as linkée n'a rien à voir 😉 Pour résoudre le pb de qtsixa, il faut que son Config.in et son .mk indiquent les mêmes dépendances, c'est tout.

        Dans tous les cas, la méthode pour procéder, c'est toujours de créer un package pour un soft que tu veux ajouter. A la lecture du Makefile de pngview https://github.com/AndrewFromMelbourne/raspidmx/blob/master/pngview/Makefile y'a du boulot parce qu'il ne passera pas en tant que tel. Battery Monitor aussi devra être retouché, mais bcp plus simple (pas besoin de le compiler lui).

        Ton projet de console portable, c'est juste pour toi ou tu comptes le commercer ? Faire un recalbox préconfiguré pour un matériel spécifique n'est pas vraiment notre pilosophie, surtout s'il restreint l'utilisation de recalbox dans son cadre normal et général.

        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é

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

          @Substring : Je suis bête et (pas) méchant, sur le github du battery indicator il demande d'utiliser pngview. S'il y a moyen de le faire fonctionner avec autre chose pourquoi pas. Mais du coup je ne sais pas comment procéder ??

          Tu pourras me dire ici quand le code aura été poussé sur github ? Pour le problème de qtsixa 🙂

          La partie package j'ai pas tout compris... Je sais pas si je saurais faire ça sans aide. Ni même ce qui est faisable ?

          C'est pour moi dans un premier temps, le commercer non, le diffuser oui surement ! Le but n'est pas vraiment de faire un recalbox pré-configurer en dur, c'est pour ça que j'aimerais éviter le build.. Pour l'instant j'en suis à 1) J'installe Recalbox 2) Je branche la carte SD sur le PC et je lance un script 3) Je remet la sd dans le pi 4) La console est prête 🙂

          La pré-configuration est assez limité, c'est pour activer et mapper les GPIOs au boot, activer le PWM pour avoir le son, réglage de l'écran et du mode vidéo, activation du wifi... Tout ça peux se faire manuellement, mais vu que je compte faire un tuto détaillé pour la réalisation de la console (partie hardware), je pensais fournir un script qui permet de configurer ce qu'il faut aussi (partie software).

          1 Reply Last reply Reply Quote 0
          • 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
                                            • First post
                                              Last post

                                            Want to support us ?

                                            102
                                            Online

                                            87.8k
                                            Users

                                            25.8k
                                            Topics

                                            178.7k
                                            Posts

                                            Copyright © 2021 recalbox.com