Archives de catégorie : Logiciels libres

Synchroniser son kDrive avec rclone

J’avais présenté il y a quelques temps l’offre kDrive d’Infomaniak dans ce post. Il se trouve que j’y ai introduit une erreur que je tiens à rectifier ici. Jusqu’à présent j’utilisais leur application maison kDrive dont il existe un appimage pour Linux pour synchroniser mes données. Elle se présente comme cela:

kDrive

Les dernières versions ont apporté des régressions qui m’ont causé un tas de problème de synchronisation, heureusement que j’entretiens 3 sauvegardes au total pour éviter la perte sèche de données. J’y ai passé des heures pour tout remettre en place et mes échanges avec la hotline ont été vain pour comprendre pourquoi ça dysfonctionnait. Lors de mon dernier échange avec la hotline, j’ai appris qu’il était possible de se connecter au kDrive via WebDAV et donc d’utiliser un outil comme rclone, ce que je ne pensais pas possible jusqu’à présent à tort.

Aussitôt dit, aussitôt fait, j’ai mis en place avec des scripts bash deux synchronisations avec rclone qui m’ont permis d’abandonner définitivement l’application kDrive dédiée:

  • une synchronisation asynchrone pour mes photos que je lance ponctuellement de mon PC où elles sont stockées physiquement ;
  • une synchronisation synchrone qui se lance automatiquement via cron toutes les semaines pour mes données de bureautique et les pages de mes sites.
Continuer la lecture de Synchroniser son kDrive avec rclone

Enregistrer le flux vidéo d’une box internet

Pendant longtemps je me suis servi d’un enregistreur AverMedia pour enregistrer le flux TV de ma box internet comme expliqué dans ce post. Il se trouve que mon boîtier AverMedia présentait des signes de faiblesse ces derniers temps avec une mauvaise reconnaissance du disque dur externe et d’autres dysfonctionnements, je me suis décidé à le changer. Plutôt que de partir sur un équivalent actuel avec enregistrement intégré, je suis parti sur quelque chose de plus simple, un dispositif de capture vidéo HDMI qui renvoie le flux via USB pour enregistrement sur un PC, bien moins cher.

J’ai acheté ce modèle pour être précis. Il en reste pas moins qu’il subsiste la problématique du flux HDMI qui est protégé en sortie de la box au format HDCP. En fait il existe des splitters HDMI qui permettent de faire sauter cette protection, celui que j’utilise n’existe plus depuis des années, mais pour mémoire c’est un HDelite HDMI splitter 3D 2 ports qui ressemble à ça :

Je ne peux vous conseiller d’autres splitters, mais il faudra veiller qu’ils soient compatibles avec la version de HDMI renvoyée par la box.

Le schéma du branchement réseau est ci-dessous, le splitter s’intercale entre la box et le boitier de capture vidéo, tout l’enregistrement se fait maintenant sur un PC branché en USB contrairement à mon ancien AverMedia qui disposait d’un enregistrement intégré.

Maintenant sur le PC il existe plusieurs moyens d’enregistrer, beaucoup de personnes sous Linux utilisent OBS Studio qui reconnait très bien ces dispositifs de capture vidéo USB, j’ai opté sur une solution plus simple basée sur ffmpeg.

Je précise tout de suite pour ceux qui auraient quelques craintes sur la légalité de ce dispositif, je vous invite à lire ce post sur l’exception de copie privée.

Continuer la lecture de Enregistrer le flux vidéo d’une box internet

Garmin Instinct 2 Surf Edition watch face

Pour faire suite à mon post sur le SDK pour pouvoir personnaliser une montre Garmin, j’ai travaillé quelque peu le sujet pour aboutir à cette nouvelle version du design.

Pour résumer j’ai rajouté deux jauges en forme d’arc, celle sur la gauche pour la charge batterie et l’autre sur la droite pour le ratio entre le nombre de pas et l’objectif quotidien. J’ai laissé tomber la jauge classique en forme de rectangle pour la batterie. J’ai également rajouté des fonts personnalisés, notamment une font détourée pour les minutes comme pour l’affichage d’origine de cette montre. J’ai encore pas mal galéré pour le rafraîchissement des secondes avec la fonction onPartialUpdate, en fait c’est tout simplement le chargement toutes les secondes de la font personnalisée qui devait le perturber, j’ai renvoyé ce chargement à l’initialisation du programme. Il reste encore un artefact à l’affichage des secondes qui est pas vraiment gênant mais un brin inesthétique, je ne suis également pas encore très satisfait des fonts, j’ai du mal à trouver des fonts étroites pour l’affichage des nombres, ces améliorations feront l’objet d’une troisième version plus tard.

Pour publier l’application créée dans le store Garmin, il faut exporter le projet via la combinaison de touches CTRL+SHIFT+P et la commande Monkey C: Export Project dans la liste déroulante. Cela va générer un fichier .iq qu’on pourra télécharger ensuite sur le store pour mettre à disposition l’application. Concernant mon projet on le trouvera ici.

Continuer la lecture de Garmin Instinct 2 Surf Edition watch face

Diffusion audio multicanal 5.1 et bluetooth

J’envoie régulièrement l’audio de mon ordinateur portable Thinkpad vers ma barre de son en bluetooth. Alors que celle-ci dispose de toutes les fonctionnalités audio surround, dolby, DTX, 5.1, etc, ça me désole d’envoyer simplement en stéréo alors que je pourrais faire mieux.

D’où mes recherches pour pouvoir envoyer un son plus qualitatif. Au fil de mes recherches je découvre qu’il existe principalement 2 technologies de diffusion audio bluetooth:

  • L’A2DP (Advanced Audio Distribution Profile) est celle qu’on retrouve sur tous les périphériques bluetooth actuels. Elle permet une sortie audio stéréo (qu’on retrouve sous le terme sink). Elle utilise en natif le codec audio SBC qui fournit une qualité audio juste acceptable (références ici et ). Aussi d’autres codecs ont fait leur apparition, SBC XQ qui est une version améliorée de SBC, mais également LDAC, Aptx, AAC ou LC3. Cette page, celle là et cette dernière page expliquent très bien les subtilités qui peuvent exister entre eux. Cette technologie est associée à AVRCP (Audio Video Remote Control Profile) qui permet de gérer les commandes.
  • LE Audio associé au Bluetooth Low Energy (BLE) est un mode basse consommation qui utilise le codec LC3 qui à terme devrait équiper tous les périphériques bluetooth. Ce mode permettra la diffusion vers plusieurs périphériques bluetooth et de pouvoir utiliser la diffusion multicanal 5.1 contrairement aux autres codecs précédemment cités qui sont limités au mono et au stéréo.

Or en connectant ma barre de son « Abri de jardin » (je sais, c’est bizarre…) avec blueman, je me rends compte que je n’ai accès qu’au codec standard SBC et à sa version améliorée SBC XQ. Pas moyen d’avoir un codec plus qualitatif.

Ni une, ni deux, je me lance dans l’installation du serveur audio pipewire car pulseaudio installé de base sur ma Mageia 9 ne gère que l’A2DP et ne gère pas le LE Audio.

Continuer la lecture de Diffusion audio multicanal 5.1 et bluetooth

Montre connectée Garmin Instinct 2 Surf Edition et son SDK Connect IQ

Ma montre Garmin Forerunner 735XT m’a définitivement lâché après à peine 4 ans d’utilisation après des déboires diverses, je l’ai échangée contre une autre Garmin Instinct 2 Surf Edition en phase avec mes activités nautiques. Comme la 735XT, il est possible de la programmer et elle dispose d’un SDK pour la personnaliser, j’avais fait un post à ce sujet. Contrairement à la 735XT qui est basée sur Eclipse, elle est basée sur Visual Studio Code.

Tous les détails de l’installation sont données en anglais . Pour résumer on récupérera le SDK à cette adresse. Et on tapera les commandes suivantes pour l’installer et le lancer la première fois.

mkdir connectiq-sdk
unzip connectiq-sdk-manager-linux.zip
cd connectiq-sdk/
cd bin/
./sdkmanager

Il va falloir d’abord se loguer sur son compte Garmin ou le créer à défaut.

Ensuite il y a une fenêtre pour savoir si les mises à jour du SDK doivent être téléchargées automatiquement quand il y a une nouvelle version. Puis vient une fenêtre pour savoir si on effectue également les mises à jour de périphériques automatiquement. A ce moment vous pouvez sélectionner les périphériques concernés, je vous conseille de sélectionner strictement la catégorie de périphérique utile car sinon ça prend de la place inutilement.

Vient ensuite la fenêtre suivante avec un onglet SDK et DEVICES (périphériques), j’ai cliqué sur la dernière version du SDK et seulement les montres (watches and wearables).

Le SDK Connect IQ est basé sur Visual Studio Code qu’on téléchargera ici. On l’installe et on le lance en tapant:

tar tar xvfz code-stable-x64-1731511985.tar.gz
cd VSCode-linux-x64/
bin/code

Il faudra maintenant installer l’extension Monkey C qui inclut un éditeur, un compilateur et un débogueur. Pour cela dans Visual Studio Code, on ira sur View->Extensions et on tapera Monkey C. Puis on clique sur le bouton Install en bleu. Il faudra ensuite relancer Visual Studio Code.

On génère maintenant une clé de développeur qui sera utile pour signer les applications, attention de bien la conserver dans un coin sans quoi, on ne pourra plus éditer les différents projets ! Pour la générer, on tapera la combinaison de touches Ctrl+Shift+P et dans la liste déroulante on choisit Monkey C: Generate a developper key.

Tant qu’à fait avec la même combinaison de touches on téléchargera des exemples de code Monkey C: Open Samples Folder. Ils se sont retrouvés sous .Garmin/ConnectIQ/Sdks/connectiq-sdk-lin-7.3.1-2024-09-23-df7b5816a/samples. J’ai donc fait un lien de ce répertoire vers mon répertoire de travail de Connect IQ.

On peut passer à sa première application Hello Word ! Pour le code, c’est un peu la jungle, il faut naviguer à vue sur la page Connect IQ et pas mal tâtonner, on pourra commencer par la page pour construire sa première application. La page donnant le détail de l’API est un incontournable, pour mon Instinct 2, il y a une page spécifique mais je n’ai pas trouvé de codes spécifiques même dans les exemples téléchargés. Le forum dédié est également une bonne source d’informations et d’aide.

Au final ça m’a pris des heures pour essayer de comprendre comment coder tout ça et aboutir à ce résultat, tout cela à partir du projet originel Hello World. C’est assez galère car il y a globalement assez peu d’exemples commentés.

Une fois que l’application fonctionne sur le simulateur, il faut construire le binaire, on y accède via la combinaison de touches Ctrl+Shift+P et on choisit Monkey C : Build for device. La compilation va générer un fichier .PRG, une fois la montre connectée en USB, on le placera sous GARMIN/APPS. Pour revenir en arrière il suffira de supprimer le dit fichier.

Et voilà ce que ça donne avec la montre en fonctionnement.

Zoneminder, solution de vidéosurveillance sous linux

Dans un précédent article j’avais évoqué que j’avais commencé à m’intéresser au système de vidéosurveillance. Je m’étais attardé sur deux outils, l’un très simple, motionplus et l’autre nettement plus évolué zoneminder. Dans un premier temps rebuté par la complexité de configuration de zoneminder, j’ai testé pendant plusieurs semaines motionplus. Mais finalement il ne m’a pas convaincu, certains points sont totalement rédhibitoires comme une datation à l’américaine qui fait que les évènements sont datés sur 12h sans qu’on sache si c’est le matin ou l’après midi ou alors il n’y a aucune fonctionnalité pour supprimer les évènements, il faut passer par une commande SQL pour pouvoir le faire. Mais le soucis principal est l’absence de détection pour ma caméra extérieure.

J’ai donc recherché d’autres outils de vidéosurveillance plus conviviaux et efficaces et je me suis cassé les dents pour installer Frigate, OS-NVR ou bien encore feniks. Ces outils sont basés sur docker que je connais mal, il me faudra passer par son appropriation pour que je puisse aller plus loin. Cela signifie également un changement d’architecture de mes serveurs et pour l’instant je n’ai pas franchi le pas de la « conteneurisation ».

Par dépit je me suis donc rabattu sur zoneminder et j’ai donc du passer du temps à comprendre ses rouages pour pouvoir le configurer proprement. J’ai donc découvert les zones qui permettent de découper l’image en plusieurs parties avec des configurations de détection différentes d’une zone à l’autre. Sur l’image ci-dessous, seules les zones en rouge sont actives en détection.

J’ai pas mal galéré pour trouver le bon réglage pour ma zone autour du portail qui est plutôt lointain, elle ne détectait rien du tout, même pas l’ouverture du portail. Finalement j’ai repris les réglages de cette page qui ont été un bon point de départ, mais ce n’est pas encore totalement satisfaisant pour détecter des personnes proche du portail. Et je continue à tâtonner en affinant les paramétrages de la zone.

Une autre découverte autour de zoneminder est ZMES, le serveur de notification d’évènement, c’est un outil complémentaire permettant la reconnaissance d’objet par deep learning. Il permet ainsi d’identifier automatiquement les objets comme on peut le voir ci-dessous

Et quand on visualise un évènement, l’objet identifié est surligné

Au final, il me reste à continuer à travailler le paramétrage des zones pour améliorer la détection, je vais sans doute étoffer mon système avec une nouvelle caméra extérieure et une caméra intérieure. En attendant j’ai mis à jour ma page dédiée sur mon site Funix.

Passage à cauldron et kdenlive 24.08.1

je suis passé à la dernière version de kdenlive, ça ne s’est pas fait sans mal car il faut passer à KF6, or pour cela pour ma Mageia il faut que je passe à la version Cauldron, version instable qui préfigure la Mageia 10.

kdenlive 24.08.1

Cela ne s’est pas fait sans mal, j’ai suivi les indications qui sont indiquées sur le wiki mais il y a plein de conflits à gérer en supprimant manuellement les packages de la Mageia 9 et relancer x fois la commande urpmi –auto-update –auto.

J’ai dû faire face à la non compilation du module propriétaire nvidia lié au fichier conftest.sh. Pour le résoudre j’ai édité le fichier /usr/src/nvidia470-470.256.02-1.mga10.nonfree/conftest.sh et j’ai rajouté une ligne comme ceci

-nostdinc -isystem $ISYSTEM \
-Wno-implicit-function-declaration -Wno-strict-prototypes -Wno-incompatible-pointer-types"

Pour compiler on tape ensuite

dkms build -m nvidia470 -v 470.256.02-1.mga10.nonfree
dkms install -m nvidia470 -v 470.256.02-1.mga10.nonfree

On veille à ce qu’il y ait bien nvidia dans le fichier /etc/X11/xorg.conf et on reboot.

Pour en revenir à kdenlive, la page d’installation avec la version 7.28 de mlt et kdenlive 24.08.1 est à jour. Et à ce jour, je n’ai pas pris le temps d’évaluer les nouvelles fonctionnalités.

Systèmes de vidéosurveillance sous Linux

Dans une société qui se sécurise, je ne suis pas en reste et j’ai décidé d’installer 2, 3 caméras judicieusement disposées à des fins de vidéosurveillance et évidemment le tout doit marcher sous Linux. L’idée n’est pas de passer mon temps à les visualiser en temps réel, mais que le système de supervision détecte les mouvements anormaux et me renvoie une alarme.

On trouve sur un célèbre site de vente en ligne des caméras IP plutôt abordables, mon premier choix s’est porté sur la marque Reolink, mais j’ai été incapable de la faire fonctionner sous Linux et même sous windows ! Et rien n’est fait de la part de ce constructeur pour les utilisateurs linux, donc retour à l’envoyeur et je me rabats sur la marque Annke et ce modèle I51DL.

Caméra Annke avec son injecteur PoE

Dans un cas comme un autre ces caméras IP sont alimentées via le câble Ethernet (PoE Power over Ethernet) et cela nécessite un routeur ou un adaptateur particulier comme celui qu’on peut voir sur la photo ci-dessus de ce modèle.

Petit bémol, j’ai dû passer au moins une fois par windows pour l’activer avec le logiciel maison en fixant un mot de passe et l’adresse IP mais ensuite toute la configuration peut se faire d’un navigateur sous Linux en tapant simplement l’adresse IP dans la barre d’URL, comme on peut le voir sur ce screenshot pris sur mon poste Linux/Mageia 9.

Page de configuration de la caméra Annke

La visualisation se fait simplement en tapant dans un shell

ffplay rtsp://admin:password@192.168.2.110

Côté logiciel, pour l’instant j’ai testé deux logiciels, zoneminder et motionplus, les deux permettant d’intégrer un large panel de caméras qu’elles soient distantes IP, Wifi, locales, analogiques ou numériques, de faire de la détection automatique de mouvement, de créer des événements. Ils sont basés également sur un serveur web et MySQL pour gérer les évènements, ils sont accessibles via un navigateur où il possible de les configurer, de visualiser en temps réel les caméras et de gérer les événements.

Zoneminder est considéré comme la référence opensource, mais il est de prime abord plus complexe avec beaucoup plus de fonctionnalités que motionplus plus simple et moins lourd.

Zoneminder

J’ai créé une page dédiée sur mon site Funix où vous trouverez davantage de détails sur l’installation et leur utilisation. Cette page est appelée à s’étoffer au fur et à mesure de l’installation, de la montée en gamme et en perfectionnement de mon propre système.

Tutoriel Kdenlive

Une icône fixe a fait son apparition sur le bandeau à droite de mon blog, un lien s’y cache qui pointe vers mon tutoriel de Kdenlive, l’excellent logiciel de montage vidéo libre qui tourne sous linux et windows.

Kdenlive 24.05.2

Je l’ai revu de fond en comble, en mettant à jour les copies d’écran vers la dernière version 24.05.2 et en adaptant certaines descriptions. Il me reste à reprendre également le guide pdf téléchargeable.

Je vous invite à le consulter et à découvrir ce merveilleux logiciel.

Réseau local

J’ai récemment revu en profondeur mon réseau local qui jusqu’à présent avait l’architecture décrite dans ce post. Pour résumer en un simple schéma, cela donne quelque chose comme cela :

Internet arrive via la fibre sur une Box SFR qui est branchée sur un routeur TP-Link Archer C6 qui dessert mon réseau local (mentionné Réseau 1 sur le schéma ci-dessus) constitué de :

  • Un Lenovo ThinkCenter M92p utilisé comme serveur évoqué dans ce post. Il se nomme sur mon réseau ultra et tourne sous Mageia 9. Sur la photo ci-dessous on peut le voir sur la tranche à côté de la box SFR connectée en fibre optique et le routeur TP-link Archer C6 qui vient compléter les misérables fonctionnalités de la box et qui permet une bonne séparation des réseaux, le tout ondulé.
  • Un PC ACER Predator G3-605 processeur Intel Core i7-4790 16Go de RAM DD3, disque SSD de 256Go, 1+4To de disques SATA appelé predator,  il est doté de Mageia 9. C’est ma station de montage vidéo avec kdenlive il est équipé d’un scanner Epson Perfection V30, c’est également mon PC de stockage multimédia avec une capacité totale de 22To avec son extension de disques Terramaster (17To sur 5 disques)
Poste de travail Predator sur la droite, serveur Lenovo Thinkcenter M92P à côté de la Box modem SFR
Continuer la lecture de Réseau local