Archives de catégorie : Logiciels libres

Intégration d’une clé USB accélérateur Google Coral sur ZoneMinder

J’ai investi dans une clé USB accélérateur Google Coral Edge TPU pour moins d’une centaine d’euros sur un célèbre site de vente en ligne. Cette clé est destinée à booster mon système personnel de vidéosurveillance aujourd’hui basé sur ZoneMinder.

Clé Google Coral branchée sur mon serveur basse consommation Lenovo ThinkCenter M92p

Jusqu’à présent dans le monde des processeurs on connaissait les CPU et les GPU, il existe maintenant aussi les TPU. TPU pour Tensor Processing Unit est une unité de calcul spécifique pour pouvoir exploiter la bibliothèque opensource TensorFlow qui est utilisée dans le monde de l’IA pour l’apprentissage automatique, les réseaux de neurones et les calculs numériques généraux sur CPU, GPU, cluster de GPU et TPU donc. Pour la petite histoire tensor, ou tenseur en français, est le nom générique pour les structures de données utilisées pour l’apprentissage automatique. Le tout est développé par Google au sein de la division dédiée à l’IA Google AI. TensorFlow n’est pas le seul moteur d’IA, pour s’en convaincre cette page recense les principaux moteurs, mais tous ne bénéficient d’une puce dédiée. L’avantage du TPU de Google est qu’il se base sur des bibliothèques libres qui ont favorisé son développement et l’ont popularisé, couplé à un coût abordable qui permet de booster un PC quelconque à moindre frais. En terme de performance, il faut savoir qu’un TPU peut être 15 à 20 fois plus performant qu’un CPU ou GPU pour des tâches d’apprentissage automatique (cf. réf).

L’installation est prévue pour les distributions Debian et Debian like comme Ubuntu comme on peut le voir sur la page officielle et il n’y a pas plus d’indications pour les autres distributions notamment celles basée sur RPM comme ma Mageia. Trois bibliothèques sont nécessaires à l’utilisation de la clé, TensorFlow évoquée plus haut, libedgetpu pour piloter les périphériques Coral et PyCoral, une bibliothèque API Python pour exploiter TensorFlow sur des périphériques Coral. A défaut de packages précompilés pour ma distribution, je suis parti dans la compilation des bibliothèques. Encore une fois je me suis fait assister par ChatGPT, mais alors qu’il m’a été d’un grand secours pour rédiger des scripts pour adresser une caméra IP dont l’adresse change régulièrement, il m’a totalement perdu. Il m’a envoyé sur un tas de chemins de traverse, souvent contradictoires entre eux, sur la base d’informations obsolètes, incomplètes voire fausses, sans prendre en compte forcément le travail déjà réalisé, il pouvait dire tout et son contraire en deux questions, pour prendre un exemple une fois il va me dire qu’il faut une version de Bazel supérieure à 8 et deux questions plus loin il faut une version inférieure à 7 ! Il y a souvent aucune logique dans l’enchaînement des réponses alors que j’avais l’impression de rester sur mon cheminement logique. Au final j’ai perdu un temps considérable à exploiter chacune des pistes, finalement j’ai arrêté les frais, pris du recul et j’y suis allé au feeling à l’ancienne, j’ai réussi à compiler TensorFlow et libedgetpu plus ou moins laborieusement car il est nécessaire de faire coïncider les versions pour que ça fonctionne et j’ai trouvé sur le net des packages fonctionnels pour PyCoral compatible avec Python 3.10 de ma distribution que quelqu’un a bien voulu partager. Tout cela est expliqué sur cette page.

Continuer la lecture de Intégration d’une clé USB accélérateur Google Coral sur ZoneMinder

L’IA devenue outil du quotidien

Je me rends compte que j’ai quasiment laissé tomber les moteurs de recherche, dont le premier d’entre eux et mon premier réflexe est maintenant d’abord de consulter chatgpt. Pourquoi chatgpt ? Simplement parce que je trouve encore les autres bien moins performants.

Je le consulte pour les petites problématiques du quotidien et du bricoleur du dimanche que je suis, quand je regarde mon historique de consultation, ça va aussi bien de la recherche d’une référence d’une pièce auto et la manière de l’installer, rattraper une anchoïade, installer un programmateur dans un tableau électrique, faire un joint d’étanchéité sous l’eau ou trouver le mode d’emploi d’un réfrigérateur ! Et dans le domaine informatique, ça couvre aussi bien des scripts bash pour divers usage et des problèmes variés rencontrés sur divers logiciels.

Tout n’est surtout pas à prendre au pied de la lettre, il y a parfois des erreurs grossières, des informations datées voire obsolètes, il lui arrive également de tourner en rond et de radoter sans avancer, mais le plus souvent il me donne les bonnes pistes et par itération successive, j’arrive très souvent à mes fins pour résoudre mon problème initial.

S’il fallait illustrer mes propos par un exemple concret, dans des précédents posts (ici, et ici encore) j’avais évoqué que j’avais déployé chez moi un système de vidéosurveillance basé sur zoneminder. J’avais acheté un ensemble de caméras adhoc dont certaines à bas coût d’une vingtaine d’euros dont les caractéristiques semblaient intéressantes pour l’usage que je voulais en faire.

Caméras low cost ieGeek ie60 et Annke Crater Pro

A vrai dire je n’ai jamais pu installer ces caméras bas coût car l’adresse du flux vidéo change régulièrement ce qui les rend inutilisables pour les logiciels comme zoneminder ou frigate qui ne gèrent que les adresses fixes, contraignant à utiliser l’application propriétaire Android fournie avec.

J’ai buté des mois sur ce problème en tentant vainement diverses solutions et en mettant au point sans succès très laborieusement un script python. Dernièrement j’ai fait appel à chatgpt et en 2h de temps tout était en place. Chatgpt m’a aidé à créer un script qui récupère à intervalle régulier l’adresse du stream vidéo, adresse qu’il enregistre ensuite dans le fichier de configuration de mediamtx, serveur de flux vidéo qui rediffuse le flux avec une adresse fixe accessible de zoneminder ou frigate.
Je ne suis pas sûr que j’y serais arrivé seul, ou alors au bout de je ne sais combien d’heure de vaines programmations. Je me rends compte que chatgpt a évolué également, car je lui avais posé la même question il y a plusieurs mois, il a été incapable d’y répondre et ne m’avait pas donné à l’époque de pistes sérieuses pour avancer.

Il en reste pas moins que ceux qui sont intéressés par ce sujet spécifique peuvent toujours consulter cette page de mon site Funix pour retrouver ces scripts python.

Corriger un fichier GPS Garmin .FIT

Il arrive que quand je télécharge la trace de ma montre GPS garmin sur Garmin Connect je me retrouve avec des points aberrants qui parasitent la trace. Exemple avec cette trace de randonnée dans un lit de rivière avec une série de baignades dans des bassins à la Réunion objet de ce post Instagram.

Cette trace a généré des points aberrants comme la trace rouge à l’horizontale.

Or Garmin Connect ne permet que de tronquer une activité au début ou à la fin mais ne permet pas de supprimer des points ou des tronçons de points.

Continuer la lecture de Corriger un fichier GPS Garmin .FIT

Upgrade de GPU sur mon PC de montage vidéo

Dans un précédent post évoquant le passage à la version 25.04.0 de kdenlive, j’ai été confronté à un problème d’obsolescence de ma carte vidéo pour pouvoir utiliser le plugin de segmentation des objets. Il faut dire que mon ACER Predator G3-605 a dépassé les 10 ans maintenant ce qui est un age plus qu’honorable pour un PC et pourtant je continue à l’utiliser et faire tout ce que j’ai à faire, y compris le montage vidéo ou le transcodage sans que ça me pose de problèmes particuliers.

Acer Predator et ses différents périphériques avec mon mini serveur Lenovo et la box SFR

Affolé par le prix du neuf que ce soit avec un PC prêt à l’emploi ou en pièces détachées, je regarde les PC d’occasion mais je crains de tomber sur un modèle bruyant alors que le mien brille par son silence (hors calcul intensif). Je décide de changer juste la carte graphique toujours du côté de l’occasion. Ma carte mère a un slot PCI-E génération 3, on est passé maintenant aux générations 4 et 5. Même si les GPU prévus pour la génération 4 sont rétrocompatibles avec la génération antérieure avec la restriction que toutes leurs performances ne pourront être exploitées totalement, je préfère rester avec un GPU de génération 3 pour ne pas prendre de risque. Souhaitant rester dans le monde Nvidia, je jette mon dévolu sur une GeForce RTX 2070 qui est une des dernières cartes PCI-E gen 3 sortie en 2018. Ce site me donne une augmentation potentielle de puissance estimée à 235% par rapport à ma vieille GeForce GTX 760 de 2013 tout de même !

Au fil de mes recherches, je trouve sur ebay une carte RTX 2070 avec une alimentation compatible pour 226€ frais de port compris et ça tombe bien car je n’ai qu’un alimentation de 500W et la puissance minimum conseillée est de 650W.

Continuer la lecture de Upgrade de GPU sur mon PC de montage vidéo

kdenlive 25.04.0 et l’objet masque

Je viens d’installer la dernière version de kdenlive 25.04.0 dont un rapide changelog peut être consulté ici. Elle intègre une évolution pour créer des masques d’objet basés sur Segment Anything Model 2 (SAM 2) qui permet de segmenter une image et une vidéo en plusieurs objets distincts, d’où également le terme segmentation d’objet utilisé par kdenlive. Ces masques peuvent ensuite être utilisés dans la vidéo pour supprimer le fond de la vidéo ou pour appliquer un effet particulier à un objet comme on peut le voir dans la documentation.

Sauf que l’installation de SAM2 ne s’est pas passée comme prévue, car j’ai buté sur cette erreur.

j’ai créé un bug sur le tracker officiel KDE qu’on peut consulter ici visiblement ça viendrait de l’emplacement de l’option -r dans la commande pip.

Continuer la lecture de kdenlive 25.04.0 et l’objet masque

Une histoire de répéteur

Pour mon système de vidéosurveillance personnel j’ai une caméra extérieure connectée en WIFI à Zoneminder de type Annke WPT500 I51CP.

Le signal WIFI étant insuffisant j’ai installé un répéteur générique bas de gamme de ce type sur un célèbre site de vente en ligne. Je pensais naïvement que ce genre de matériel se contentait d’amplifier le signal et puis basta et là j’ai découvert que les répéteurs bas de gamme ont un fonctionnement bien particulier. En effet, ils clonent le réseau wifi sur 1 ou 2 fréquences (2,4 et 5Ghz) souvent avec des noms différents, font serveur DHCP et utilisent une classe d’adresse particulière pour les appareils qui s’y connectent, ils agissent comme un routeur. Résultat des courses, bien que les appareils concernés se connectent bien à internet, pas moyen de récupérer le flux RTSP de la caméra sur mon réseau local, et bien évidemment aucun moyen de pouvoir modifier cette fichue classe d’adresse.

Pour m’en sortir j’ai investi dans un répéteur de marque un TP-Link RE305 qui a l’avantage d’être entièrement configurable, j’ai pu indiquer les mêmes informations pour que les appareils connectés soient directement connectés à mon réseau local. J’ai veillé également à configurer les adresses du serveur DHCP pour qu’elles ne débordent pas sur celles de mon routeur.

Accessoirement ce répéteur est compatible Mesh ce qui n’est pas le cas des répéteurs bas de gamme. Un réseau WIFI Mesh ou maillé est constitué de plusieurs nœuds et permet de diffuser le signal WIFI sur une grande surface sur un même réseau unifié et homogène, pratique pour diffuser le signal de partout dans une maison. Le maillage créé s’adapte automatiquement aux flux de données pour garantir la stabilité et le débit maximal contrairement à un répéteur qui va mécaniquement diminuer la bande passante pour augmenter le signal. Les appareils se connectent automatiquement vers le nœud avec le meilleur signal sans déconnexion.

Pour ma part j’ai seulement deux nœuds WIFI, mon routeur TP-Link Archer C6 qui diffuse le signal WIFI initial et donc le répéteur de la même marque en mode Mesh. Du coup en activant le mode Mesh, ma caméra est facilement connectée et je peux visualiser mon flux RTSP.

Personnalisez une Garmin Instinct 2 avec le SDK ConnectIQ

Dans la lignée de mes posts pour personnaliser l’affichage d’une montre GPS Garmin Instinct 2 édition Surf avec le SDK ConnectIQ , ici et , j’ai finalisé une dernière version qui ressemble à ça :

J’ai rajouté une icône avec une indication du signal GPS et c’est là que je me rends compte qu’en mode watchface le GPS est désactivé pour ménager la batterie de la montre. Le GPS n’est actif que quand une activité est lancée et donc l’icône devient active. De même que quand je lui demande la position pour notamment calculer le lever et le coucher du soleil, il va prendra la dernière position connue et non pas la position courante. C’est ennuyeux et il faut penser à lancer une activité dès qu’on se déplace de manière significative pour que l’affichage reste cohérent.

Le code est disponible sur mon compte github, j’ai souhaité également partagé l’application sur le store Garmin, sauf qu’elle n’est pas disponible au sein de l’union européenne. Pour la rendre disponible, en tant que créateur je dois remplir un formulaire Digital Services Act pour être conforme à la réglementation européenne qui m’oblige à envoyer une copie d’une pièce d’identité. Dans le contexte actuel je n’ai guère envie de transmettre une pièce d’identité à une société américaine et mon application ne sera donc pas disponible en Europe.

Il me reste à corriger un léger bug pour l’affichage du rythme cardiaque quand je passe de pulsations supérieures à 100 à moins de 100, le dernier chiffre de la centaine reste affiché quelques secondes. J’ai beau jouer sur la zone à rafraîchir toutes les secondes avec dc.setClip, mais rien n’y fait, je continue à chercher.

Sinon j’ai étoffé ma page pour personnaliser sa montre GPS Garmin avec l’utilisation du mode debug sous VSCode.

Et tant qu’à faire j’ai découvert que maintenant le couteau suisse de conversion des formats de fichier GPS GPSBabel avait maintenant une interface graphique.

Mises à jour de mon site FUNIX: Nouveautés en tech

J’ai mis à jour mon site FUNIX, les modifications sont les suivantes :

  • pages divers
    • page ma configuration, passage à Mageia Cauldron pour un de mes PC et rajout d’une photo actualisée de ma baie de brassage. On y voit mon switch TP-Link spécifique pour mes caméras de vidéosurveillance avec prises ethernet RJ45 POE.
  • page piloter une montre GPS garmin, passage à VSCode 1.97.2 pour programmer sa montre avec le SDK ConnectIQ, passage à gps babel 1.10.0 et sa nouvelle interface graphique
  • page trucs et astuces, rajout d’astuces
  • pages multimédia
  • pages montage vidéo
  • pages réseau et système
  • pages LAMP
    • page Apache+PHP+MariaDB, passage à MariaDB 1.4.5, apache 2.4.63, PHP 8.4.4 et phpMyAdmin 5.2.2, rajout d’un paragraphe pour rendre accessible un serveur LAMP d’internet et installation d’un certificat avec Let’s Encrypt
  • pages sécurisation

Installer un certificat Let’s Encrypt sur un serveur LAMP

Dans la suite de mon post pour pouvoir visualiser les caméras de vidéosurveillance avec zmNinja sur un mobile, je me basais sur un serveur LAMP (Linux+Apache+MariaDB+PHP) personnel accessible sur internet avec une adresse fixe fournie par No-IP. Or jusqu’à présent j’utilisais un certificat autosigné pour chiffrer la connexion avec SSL et ça me générait une exception avec le navigateur qu’il faut accepter.

Il se trouve que certains navigateurs refusent qu’on puisse accepter le risque et exige un certificat reconnu par une autorité qualifiée. Je suis donc passé par Let’s Encrypt pour bénéficier d’un certificat valide.

Continuer la lecture de Installer un certificat Let’s Encrypt sur un serveur LAMP

Piloter zoneminder d’un mobile avec zmNinja

Il est possible d’accéder au système de vidéosurveillance zoneminder à partir d’un mobile dès lors que vous avez activé votre serveur httpd pour être visible sur internet. Pour cela j’ai ouvert une route sur ma box SFR et mon routeur en activant une connexion chiffrée SSL sur mon serveur LAMP. Je me suis abonné à No-IP qui me permet d’avoir une adresse fixe sur internet qui pointe sur l’adresse IP dynamique que m’attribue SFR. Bien sûr j’ai défini les règles qui vont bien avec shorewall.

L’affichage sur le mobile n’est pas formidable et pas très convivial comme on peut le voir ci-dessous:

Il se trouve qu’il existe une application adhoc qui s’appelle zmNinja. Alors certes cela coûte la modique somme de 4,69€ mais ça vaut le coup d’investir pour si peu pour avoir une visualisation confortable sur mobile.

Continuer la lecture de Piloter zoneminder d’un mobile avec zmNinja