Vue lecture

GitHub - Stirling-Tools/Stirling-PDF: #1 Locally hosted web application that allows you to perform various operations on PDF files

Stirling-PDF is a robust, locally hosted web-based PDF manipulation tool using Docker. It enables you to carry out various operations on PDF files, including splitting, merging, converting, reorganizing, adding images, rotating, compressing, and more. This locally hosted web application has evolved to encompass a comprehensive set of features, addressing all your PDF requirements.


Permalien
  •  

Pulse : monitoring Docker (et Proxmox)

Merci Holaf pour la découverte.

Je n’ai plus de Proxmox depuis des années à la maison, je le teste avec Docker : Ubuntu, Synology et UNRAiD.

Ça fait penser à Beszel mais en plus puissant et complet bien entendu.

Pulse s’utilise en toute logique avec un serveur et des agents. Le tout s’installe en Docker ou en dur.

C’est très musclé et sécurisé, ça permet la découverte de réseaux pour ajouter des nodes Proxmox notamment. Je l’utilise de manière très simple pour ce test :

services:
  pulse:
    image: rcourtman/pulse:latest
    container_name: pulse_serveur
    ports:
      - 7655:7655
    volumes:
      - /mnt/user/appdata/pulse:/data
    restart: always

On peut ensuite définir un compte d’accès

pulse
pulse1
pulse2

Je souhaite ajouter des clients Docker

pulse3

Il faudra pour ça générer un token par client

pulse4
pulse5

Et tout est ensuite expliqué pour l’installer ou le retirer. C’est très bien fait.

pulse6

Mais pour ma machine sous UNRAiD je préfère passer par un container Docker

docker run -d \
  --name pulse-docker-agent \
  -e PULSE_URL="http://192.168.0.195:7655" \
  -e PULSE_TOKEN="a297b11d70d16c15e4eb9241ace555a19bff4279c98ffaa92de5bd9d0bc9bab7" \
  -e PULSE_TARGETS="http://192.168.0.195:7655|a297b11d70d16c15e4eb9241ace555a19bff4279c98ffaa92de5bd9d0bc9bab7" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --restart always \
  ghcr.io/rcourtman/pulse-docker-agent:latest

Et je l’ai tout de suite dans ma liste de clients

pulse7
pulse8
pulse9

Pour un NAS Synology je passe aussi par Docker. En revanche je suis leur recommandation pour ajouter un client sur la machine Ubuntu.

curl -fsSL http://192.168.0.195:7655/install-docker-agent.sh | bash -s -- --url http://192.168.0.195:7655 --token bc6f2c3e562d5c030a1b2b925a6f145050e214359542b3670a79a4a94a971c18

root@StreamBox:/home/aerya# curl -fsSL http://192.168.0.195:7655/install-docker-agent.sh | bash -s -- --url http://192.168.0.195:7655 --token bc6f2c3e562d5c030a1b2b925a6f145050e214359542b3670a79a4a94a971c18

== Pulse Docker Agent Installer ==
[INFO] Primary Pulse URL : http://192.168.0.195:7655
[INFO] Install path      : /usr/local/bin/pulse-docker-agent
[INFO] Log directory     : /var/log/pulse-docker-agent
[INFO] Reporting interval: 30s
[INFO] API token         : provided
[INFO] Docker host ID    : cf13d13b-a0e2-4bc6-b755-2535f80b4932
[INFO] Targets:
[INFO]   • http://192.168.0.195:7655

[INFO] Downloading agent binary
/usr/local/bin/pulse-docker-agent                                                          100%[=======================================================================================================================================================================================================================================>]   6.85M  --.-KB/s    in 0.03s   
[ OK ] Agent binary installed
[ OK ] Cleared any previous stop block for host

== Configuring systemd service ==
[ OK ] Wrote unit file: /etc/systemd/system/pulse-docker-agent.service
[INFO] Starting service
Created symlink /etc/systemd/system/multi-user.target.wants/pulse-docker-agent.service → /etc/systemd/system/pulse-docker-agent.service.

== Installation complete ==
[INFO] Agent service enabled and started
[INFO] Check status          : systemctl status pulse-docker-agent
[INFO] Follow logs           : journalctl -u pulse-docker-agent -f
[INFO] Host visible in Pulse : ~30 seconds

Et j’ai bien mes 3 clients

pulse10
pulse11

Pulse est un outil sécurisé, très simple, très beau, trés complet, très léger. J’adopte !

Loading

  •  

PlaceholdARR : ne téléchargez que ce que vous regardez

Imaginez Plex ou Jellyfin, de belles bibliothèques, bien garnies. Le tout sans rien stocker ou presque. Parce que le média ne se télécharge que lorsqu’on lance sa lecture et sera supprimé de la bibliothèque sous X jours. Et ça peut aussi télécharger en avance X épisodes d’une série en cours de visionnage.

J’en ai franchement rêvé quand Google a mis fin à la fête du slip avec Workspace. TheIndieArmy est en train de le faire avec PlaceholdARR !
On ajoute un média à Radarr/Sonarr SANS Recherche/Téléchargement puis son outil le simule dans le lecteur lié avec affiche etc. Et le téléchargement ne démarre, avec les règles Radar/Sonarr, que lorsqu’on lance la lecture.
On ne doit donc absolument pas modifier une configuration existante, ça s’y intègre parfaitement. Ou alors ça la remplace, carrément.

Alors évidemment y’a rien de magique et je vois quelques points noirs, à tout le moins gris :
– ceux qui sont en ADSL 3.5MBps, « bon courage », allez au resto, vous aurez le film en rentrant avec un peu de bol si vous utilisez du téléchargement classique,
– si pour les contenus VO (EN/US) y’a quasi jamais de problème de sources BitTorrent, pour du MULTi/VF c’est plus compliqué selon le média (moins mainstream, vieux etc) et les indexeurs BitTorrent/Usenet auxquels chacun a accès,
– j’ai pas encore fini de tester (quand je rédige cette phrase) mais j’imagine qu’avec Usenet aux fesses, à fortiori en mode streaming ou un setup Decypharr/RDT, ça peut être très sympa, EDIT : je confirme, ça poutre !!!

– j’ai testé ça avec mon instance existante de Radarr et ça ajoute donc tous les médias « à venir » depuis le calendrier. Ce qui peut être problématique si on partage Plex/Jellyfin avec des bas du front qui cliquent tout le temps sur des films pas encore sortis bien que ça MàJ les noms en « Now You See Me – [Coming Soon (18 days)] »

Avant de détailler l’installation, voici un exemple de fonctionnement avec Radarr et Jellyfin.

Ajouter un film sur Radarr, sans recherche ni monitoring

placeholdarr1
placeholdarr2

PlaceholdARR le capte et le simule dans Jellyfin.

placeholdarr  | 2025-10-25 05:38:53,888 - handlers.py:65 - DEBUG - 🐛 Radarr payload: {'movie': {'id': 1714, 'title': 'The Kids Are All Right', 'year': 2010, 'releaseDate': '2010-10-07', 'folderPath': '/mnt/Bibliothèques/Films/The Kids Are All Right (2010) 39781 tt0842926', 'tmdbId': 39781, 'imdbId': 'tt0842926', 'overview': "Two women, Nic and Jules, brought a son and daughter into the world through artificial insemination. When one of their children reaches age, both kids go behind their mothers' backs to meet with the donor. Life becomes so much more interesting when the father, two mothers and children start to become attached to each other.", 'genres': ['Comedy', 'Drama'], 'images': [{'coverType': 'poster', 'url': '/MediaCover/1714/poster.jpg', 'remoteUrl': 'https://image.tmdb.org/t/p/original/xQ5XqZc82dDCcGjxY7voRKjhaKQ.jpg'}, {'coverType': 'fanart', 'url': '/MediaCover/1714/fanart.jpg', 'remoteUrl': 'https://image.tmdb.org/t/p/original/kokPRmOdEmWZi3SR1dcdvsiq9lF.jpg'}], 'tags': [], 'originalLanguage': {'id': 1, 'name': 'English'}}, 'addMethod': 'manual', 'eventType': 'MovieAdded', 'instanceName': 'Radarr', 'applicationUrl': ''}
placeholdarr  | 
placeholdarr  | 2025-10-25 05:38:53,888 - handlers.py:99 - DEBUG - 🐛 Quality determination: Standard
placeholdarr  | 
placeholdarr  | 2025-10-25 05:38:53,888 - handlers.py:105 - INFO - 🌐 Received webhook event: movieadded
placeholdarr  | 
placeholdarr  | 2025-10-25 05:38:53,889 - handlers.py:600 - DEBUG - 🐛 Delaying 3s before checking hasFile for movie 'The Kids Are All Right'
placeholdarr  | 
placeholdarr  | 2025-10-25 05:38:56,901 - integrations.py:149 - DEBUG - ➡ Copied dummy file as fallback: /mnt/Bibliothèques/Films/The Kids Are All Right (2010) 39781 tt0842926/The Kids Are All Right (2010) (dummy).mp4
placeholdarr  | 
placeholdarr  | 2025-10-25 05:38:56,901 - integrations.py:156 - DEBUG - ➡ Created dummy file: /mnt/Bibliothèques/Films/The Kids Are All Right (2010) 39781 tt0842926/The Kids Are All Right (2010) (dummy).mp4
placeholdarr  | 
placeholdarr  | 2025-10-25 05:38:56,912 - handlers.py:643 - INFO - ➡ Created placeholder file for movie 'The Kids Are All Right'
placeholdarr  | 
placeholdarr  | 2025-10-25 05:38:56,912 - jellyfin_client.py:35 - DEBUG - 🐛 Built Jellyfin URL: https://jelly.domain.tld/Library/Media/Updated
placeholdarr  | 
placeholdarr  | 2025-10-25 05:38:56,943 - jellyfin_client.py:58 - INFO - ➡ Triggered scan for: /mnt/Bibliothèques/Films/The Kids Are All Right (2010) 39781 tt0842926
placeholdarr3
placeholdarr4

Quand on interroge les détails du média

placeholdarr5

Et le dossier correspondant dans la bibliothèque (je demande la création d’un .nfo aux arrs pour simplifier mon setup)

root@StreamBox:/mnt/Bibliothèques/Films# ls -lsh 'The Kids Are All Right (2010) 39781 tt0842926'
total 836K
428K -rw-rw-rw- 1 root root 428K Oct 25 07:38  fanart.jpg
4.0K -rw-r--r-- 1 root root 2.0K Oct 25 07:40  movie.nfo
216K -rw-rw-rw- 1 root root 216K Oct 25 07:38  poster.jpg
184K -rw-r--r-- 1 root root 184K Oct 25 07:38 'The Kids Are All Right (2010) (dummy).mp4'
4.0K -rw-r--r-- 1 root root 1019 Oct 25 07:33 'The Kids Are All Right (2010) (dummy).nfo'

Donc là j’ai bien mon film de listé dans Jellyfin mais c’est un fake.

Quand je lance la lecture, PlaceholdARR donne l’information à Radarr de télécharger le fichier.

placeholdarr  | INFO:     192.168.64.1:54436 - "POST /webhook HTTP/1.1" 200 OK
placeholdarr  | 2025-10-25 05:55:22,387 - handlers.py:65 - DEBUG - 🐛 Tautulli payload: {'event': 'playback.start', 'ItemId': 'c085f366-14ab-3680-d28b-d2f6d0219d69', 'UserId': 'xxx', 'Name': 'Tout va bien ! The Kids Are All Right', 'ItemType': 'Movie', 'SeriesName': '', 'SeasonNumber': '', 'EpisodeNumber': '', 'Provider_tmdb': '39781', 'Provider_tvdb': '', 'Provider_imdb': 'tt0842926', 'Year': '2010', 'NotificationType': 'PlaybackStart'}
placeholdarr  | 
placeholdarr  | 2025-10-25 05:55:22,388 - jellyfin_client.py:35 - DEBUG - 🐛 Built Jellyfin URL: https://jelly.domain.tld/Users/xxx/Items/c085f366-14ab-3680-d28b-d2f6d0219d69
placeholdarr  | 
placeholdarr  | 2025-10-25 05:55:22,534 - handlers.py:99 - DEBUG - 🐛 Quality determination: Standard
placeholdarr  | 
placeholdarr  | 2025-10-25 05:55:22,534 - handlers.py:105 - INFO - 🌐 Received webhook event: playback.start
placeholdarr  | 
placeholdarr  | 2025-10-25 05:55:22,534 - jellyfin_client.py:35 - DEBUG - 🐛 Built Jellyfin URL: https://jelly.domain.tld/Users/xxx/Items/c085f366-14ab-3680-d28b-d2f6d0219d69
placeholdarr  | 
placeholdarr  | 2025-10-25 05:55:22,700 - handlers.py:744 - DEBUG - 🐛 Processing playback for file path: /mnt/Bibliothèques/Films/The Kids Are All Right (2010) 39781 tt0842926/The Kids Are All Right (2010) Bluray-1080p.mkv

C’est là que c’est extra rapide avec mon setup Decypharr/AllDebrid, ça peut l’être autant je pense avec le streaming Usenet mais je n’ai pas testé.
Avec BitTorrent normal ou Usenet, l’attente ne doit pas être très longue non plus, sous condition de sources actives.

Sous Jellyfin j’ai un bogue qui me met que le média est impossible à lire et je dois refraichir pour que ça fonctionne (pas encore testé Plex mais il semble que ce ne soit pas le cas). Je découvre encore le projet et ses options et je pense que mon setup est perfectible.

Quoi qu’il en soit, j’ai bien mon film et peux le lire

placeholdarr7
placeholdarr8

Et côté fichiers

root@StreamBox:/mnt/Bibliothèques/Films# ls -lsh 'The Kids Are All Right (2010) 39781 tt0842926'
total 856K
428K -rw-rw-rw- 1 root root 428K Oct 25 07:38  fanart.jpg
8.0K -rw-r--r-- 1 root root 6.8K Oct 25 07:53  movie.nfo
4.0K -rw-rw-rw- 1 root root  730 Oct 25 07:52  movie.xml
216K -rw-rw-rw- 1 root root 216K Oct 25 07:38  poster.jpg
4.0K lrwxrwxrwx 1 root root  148 Oct 25 07:52 'The Kids Are All Right (2010) Bluray-1080p.mkv' -> /mnt/decypharr/alldebrid/__all__/The.Kids.Are.All.Right.2010.MULTi.1080p.BluRay.x264-FHD/The.Kids.Are.All.Right.2010.MULTi.1080p.BluRay.x264-FHD.mkv
8.0K -rw-rw-rw- 1 root root 4.7K Oct 25 07:53 'The Kids Are All Right (2010) Bluray-1080p.nfo'
184K -rw-r--r-- 1 root root 184K Oct 25 07:38 'The Kids Are All Right (2010) (dummy).mp4'
4.0K -rw-r--r-- 1 root root 2.0K Oct 25 07:53 'The Kids Are All Right (2010) (dummy).nfo'

Le faux film reste en place pour quand le vrai, ici lié à mon installation de Decypharr, sera supprimé dans 10 jours (selon ma config).

Alors dans les faits, ça ne me change rien vu que je ne stocke déjà plus rien en passant par Decypharr. Seulement cette solution peut être très intéressante pour se jouer des limites de stockage de telle ou telle solution tout comme pour pleinement profiter d’un tracker BitTorrent ou d’un indexeur Usenet sans abuser du système à tout télécharger « pour rien » à l’instant T ou à ne quasi rien télécharger/seeder dans le cas de Decypharr/RDT and co.

Passons à l’installation. C’est un 1er retex, sans doute ajustable et le projet étant jeune et en pleine évolution. Il propose un compose et un .env. Ce qu’il faut retenir c’est qu’il faut des volumes en chemins absolus, comme pour tous les setup avec Decypharr etc.
Les explications des options du .env sont ici. Et les fichiers « dummy » sont à prendre aussi dans le code, chez moi ils sont dans /mnt/Bibliothèques/.


Voici mon exemple de configuration :

services:
  placeholdarr:
    image: ghcr.io/theindiearmy/placeholdarr:queue_monitoring-latest
    container_name: placeholdarr
    env_file:
      - .env
    volumes:
      # Update these paths to match your actual placeholder library locations and dummy files
      # Mount your movie placeholder folder (MOVIE_LIBRARY_FOLDER)
      # IMPORTANT: For Plex/Tautulli compatibility, mount the host path to the SAME absolute path inside the container.
      - /mnt/Bibliothèques/:/mnt/Bibliothèques/
      # Example: - /mnt/plex/Movies/placeholders:/mnt/plex/Movies/placeholders
      - /mnt/Bibliothèques/Films:/mnt/Bibliothèques/Films
      # Mount your TV placeholder folder (TV_LIBRARY_FOLDER)
      - /mnt/Bibliothèques/Séries:/mnt/Bibliothèques/Séries
      # Mount your standard dummy file
      - /mnt/Bibliothèques/dummy.mp4:/mnt/Bibliothèques/dummy.mp4
      # Mount your "coming soon" dummy file (optional)
      - /mnt/Bibliothèques/coming_soon_dummy.mp4:/mnt/Bibliothèques/coming_soon_dummy.mp4
      - /home/aerya/docker/placeholdarr/.env:/app/.env
    ports:
      - 8000:8000
    restart: always
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
    labels:
      - com.centurylinklabs.watchtower.enable=true

# Server Configuration
PLACEHOLDARR_HOST=0.0.0.0
PLACEHOLDARR_PORT=8000
PLACEHOLDARR_LOG_LEVEL=DEBUG # Options: DEBUG, INFO, WARNING, ERROR, CRITICAL

# Enable/Disable Media Servers
ENABLE_PLEX=false      # Set to true to enable Plex integration, false to disable
ENABLE_JELLYFIN=true   # Set to true to enable Jellyfin integration, false to disable
ENABLE_EMBY=false      # Set to true to enable Emby integration, false to disable

# Plex Configuration (required if ENABLE_PLEX=true)
PLEX_URL=
PLEX_TOKEN=
PLEX_MOVIE_SECTION_ID=1
PLEX_TV_SECTION_ID=2

# Jellyfin Configuration (required if ENABLE_JELLYFIN=true)
JELLYFIN_URL=https://jelly.domain.tld
JELLYFIN_TOKEN=fea9bxxx702e

# Emby Configuration (required if ENABLE_EMBY=true)
# Emby typically exposes its API under the /emby/ prefix (e.g., http://localhost:8096/emby)
EMBY_URL=
EMBY_TOKEN=

# Migration from Infinite To Placeholdarr
MIGRATION=False # Set to True to enable Migration

# Radarr Configuration
RADARR_URL=http://192.168.0.163:7878/api/v3
RADARR_API_KEY=faacxxx23a
RADARR_4K_URL=     # (optional - leave blank to disable 4K support)
RADARR_4K_API_KEY=

# Sonarr Configuration 
SONARR_URL=
SONARR_API_KEY=
SONARR_4K_URL=       # (optional - leave blank to disable 4K support)
SONARR_4K_API_KEY=

# Library Paths (IMPORTANT: See below for usage patterns)
MOVIE_LIBRARY_FOLDER=/mnt/Bibliothèques/Films      # Replace with your desired placeholder folder path on the host
TV_LIBRARY_FOLDER=/mnt/Bibliothèques/Séries            # Replace with your desired placeholder folder path on the host
MOVIE_LIBRARY_4K_FOLDER=                                     # Optional - replace or leave blank if not using 4K
TV_LIBRARY_4K_FOLDER=                                        # Optional - replace or leave blank if not using 4K

# Dummy file paths (replace with your dummy file locations on the host, matching your volume mounts)
DUMMY_FILE_PATH=/mnt/Bibliothèques/dummy.mp4
COMING_SOON_DUMMY_FILE_PATH=/mnt/Bibliothèques/coming_soon_dummy.mp4
PLACEHOLDER_STRATEGY=hardlink    # Options: hardlink, copy

# Queue Management
TV_PLAY_MODE=episode     # Options: episode, season, series
EPISODES_LOOKAHEAD=3     # Number of episodes to look ahead and download
MAX_MONITOR_TIME=120     # Maximum time to monitor for file in seconds
CHECK_INTERVAL=3         # How often to check queue status in seconds
TITLE_UPDATES=REQUEST        # Options: OFF, REQUEST, ALL (ALL is not recommended while feature is in development)
AVAILABLE_CLEANUP_DELAY=10

# Calendar-based status update settings
CALENDAR_LOOKAHEAD_DAYS=30           # How many days into the future to allow placeholders/"Coming Soon" (integer)
CALENDAR_SYNC_INTERVAL_HOURS=12      # How often to sync calendar and update statuses (hours, integer)
ENABLE_COMING_SOON_PLACEHOLDERS=true # Enable or disable "Coming Soon" placeholders (true/false)
PREFERRED_MOVIE_DATE_TYPE=inCinemas  # Which movie release date to use: inCinemas, digitalRelease, physicalRelease
ENABLE_COMING_SOON_COUNTDOWN=true    # Show countdown in "Coming Soon" status (true/false)
CALENDAR_PLACEHOLDER_MODE=episode    # Options: episode, season. 'episode' = add placeholders as each episode enters lookahead window; 'season' = add all known episodes of a season when any enters window

# Include Specials
INCLUDE_SPECIALS=false

# --- Advanced Webhook Check Options ---
# Set to 'true' to skip all webhook checks and force calendar sync to start (not recommended for most users)
PLACEHOLDARR_SKIP_WEBHOOK_CHECK=false

# Optionally override the webhook URL used for *arr webhook checks (useful for reverse proxies, custom domains, or remote networks)
# Example: PLACEHOLDARR_WEBHOOK_URL=https://my.public.domain/webhook
# Leave blank to use automatic detection
PLACEHOLDARR_WEBHOOK_URL=

Pour moi PlaceholdARR est vraiment une solution d’avenir si on appartient à une bonne communauté Usenet ou BitTorrent. Plus d’abus de DL inutile voire non seedé, plus d’abus de stockage sauf pour de rares exceptions (médias de niche).

Gros projet à suivre !!! Et dans la journée je testerai avec Plex.

Loading

  •  

Husqvarna va sortir 4 nouveaux robots-tondeuses dopés à l’IA en 2026 !

Husqvarna Automower NERA

Printemps 2026 : la guerre des robots-tondeuses aura bel et bien lieu. Husqvarna a déjà composé ses rangs avec quatre modèles milieu et haut-de-gamme. Ces champions, baptisés Automower® NERA (405VE, 410VE, 430V, 450V), montent d’un cran les exigences de sécurité, de fonctionnalités et de précision.

Il y a peu, nous avons testé l’Automower NERA 405XE. Ce modèle datait de 2023, et appartenait à la première gamme de robots-tondeuses sans fil Husqvarna adressée à des particuliers. Nous avons salué la prestation d’un appareil sérieux, dont nous avons cependant critiqué quelques lacunes en matière de fonctionnalités et de navigation, laquelle pouvait observer quelques oublis, comparé aux fers de lance de Mammotion ou de Segway. En somme, le leader mondial d’aménagement des jardins (3,5 millions de clients dans le monde) doit désormais faire face à une féroce concurrence chinoise et américaine.

Husqvarna à l'hôtel Marignan
Nous étions aux premières loges pour la présentation à Paris ce 10 décembre 2025 sur le toit de l’hôtel Marignan ! ©Meilleure-Innovation

Cependant, la marque suédoise, créé en 1689, peut compter sur ses trente ans d’expertise en robots-tondeuses domestiques et professionnelles (tous fabriqués en Angleterre) pour rebondir et préparer une riposte alignée avec les exigences d’un marché en plein essor : terrains vastes et complexes, enjeux écologiques, expérience utilisateur affinée, rapport qualité/prix agressif chez d’autres acteurs montants. Voici, en quelques lignes, la réponse que prépare Husqvarna pour rester dans le top !

Les premières caractéristiques techniques disponibles

Modèle AutomowerSurface max conseillée Pente maxHauteur de coupeMotifs de tonte (systématique)EdgeCutPrix TTC
Automower 405VE900 m² (al : 600 m²)30 %20–55 mmBandes, damiers, trianglesOui2 649 €
Automower 410VE1 500 m² (al : 1 000 m²)30 %20–55 mmBandes, damiers, trianglesOui3 099 €
Automower 430V4 800 m² (al : 3 200 m²)50 %20–60 mmBandes, damiers, trianglesNon4 249 €
Automower 450V7 500 m² (al : 5 000 m²)50 %20–60 mmBandes, damiers, trianglesNon5 449 €
La surface maximum conseillée convient à la tonte systématique. Les valeurs sont réduites pour la tonte aléatoire (entre parenthèses).

Vous reprendrez bien un petit peu d’IA ?

Le paradoxe actuel des robots du secteur électro-ménager est que leur automatisation nécessite souvent une intervention attentive de l’utilisateur qui doit effectuer une configuration avancée pour obtenir une tonte personnalisée, sans erreurs. Husqvarna cherche à alléger la tâche dévolue à l’humain en dotant chaque nouveau robot une technologie de vision IA. Ce regard artificiel a pour mission d’aider les Automowers à percevoir leur environnement en temps réel et d’adapter leur comportement en conséquence. Ils peuvent ainsi éviter la plupart des obstacles que l’on trouve sur les terrains domestiques : jouets, enfants, animaux, tuyau d’arrosage, etc.

©Husqvarna insiste beaucoup sur la sécurité afin de garantir une véritable autonomie à ses utilisateurs.

La vision assistée par intelligence artificielle est complétée par une caméra infrarouge, laquelle pourrait réhabiliter la tonte nocturne. L’appareil saura faire la différence entre un être vivant (hérisson, couleuvre, oiseau, chat, souris, etc.) et un obstacle inanimé. Il adaptera ainsi sa trajectoire, en laissant une marge de 60 cm pour les animaux qu’il croise, et entre 10 et 15 cm pour les objets.

Nota Bene : pour garantir votre confidentialité, les images capturées sont traitées uniquement dans la tondeuse. Elles n’ont donc jamais besoin d’être stockées ou partagées. Seules certaines données transmises seront hébergées en Europe, conformément à la législation en vigueur. 

La technologie EPOS pour les flemmards minutieux

Auteur du tout premier robot sans fil périmétrique en 2020 avec l’Automower® 550 EPOS, Husqvarna veut réaffirmer son statut de pionnier dans la tonte sans fil. C’est pourquoi son dispositif de vision IA sera associé à la technologie sans fil Husqvarna EPOS™, afin d’assurer des cycles de tonte sans interruption, y compris dans les zones où la réception satellite est limitée. Mieux encore : la station de référence ne sera plus obligatoire pour activer un robot-tondeuse Automower !

En 2023, chez Husqvarna, nous réalisions 80% d’installations filaires de robots, contre 20% sans fil. Aujourd’hui, nous sommes proches des 70% d’installations sans fil et nous prévoyons que ce taux atteindra 80% en 2026.

Maxime Tolila, Chef de marché Automower®.

Une fonctionnalité de tonte aléatoire suffira pour un rendu homogène, mais vous pourrez également demander une esthétique plus aboutie avec des motifs tels que des bandes, des damiers ou des triangles. Bien sûr, les cartes seront modifiables à loisir depuis l’application Automower® Connect (iOS et Android) en ajoutant des zones d’exclusion temporaires ou définitives.

Automower NERA sur grand terrain (motifs quadrillés)
Pour acquérir la maison et les 7500 m2 de terrain, il y aura un supplément… ©Husqvarna

Cela dit, “sans station de référence” ne veut pas dire “sans contraintes”. Husqvarna précise que l’EPOS via le Cloud implique une connexion internet constante (via 4G/Wi-Fi selon la configuration) pour fonctionner correctement. Et surtout, la précision annoncée n’est pas identique : Husqvarna indique typiquement < 5 cm via Cloud, contre < 2 cm avec une station de référence locale — et recommande cette solution (ou un câble périphérique) si l’on recherche une finition de bordure EdgeCut la plus nette possible.

Surfaces, pentes et usages : quel modèle pour quel jardin ?

Husqvarna segmente très clairement sa gamme 2026 : deux modèles pour les jardins moyens, et deux pour les grandes propriétés. Les capacités annoncées ci-dessous sont données en tonte systématique (c’est important, car la capacité peut être plus faible en tonte aléatoire).

Automower 405VE et 410VE : jardins jusqu’à 900 / 1 500 m²

Pensés pour les terrains “classiques” de taille moyenne, les 405VE et 410VE misent sur une expérience plus confortable au quotidien : en plus de la vision IA pour éviter les obstacles, ils intègrent la fonction EdgeCut, utile pour réduire le temps passé à reprendre les bordures au coupe-bordures. Ils acceptent des pentes jusqu’à 30 %, avec une hauteur de coupe réglable de 20 à 55 mm, et une connectivité complète (4G, Wi-Fi, Bluetooth).

huqvarna Automower 410VE vu de près
Pour celui-ci, on retrouve la même DA que pour l’Automower NERA 405XE, mais en blanc cassé ©Meilleure-Innovation

Nota Bene : en tonte aléatoire, la capacité annoncée baisse (ex. valeurs parfois listées par des revendeurs), ce qui peut compter si l’on vise une tonte quotidienne sur une grande surface.

Automower 430V et 450V : grands terrains jusqu’à 4 800 / 7 500 m²

Les 430V et 450V montent clairement d’un cran : on vise ici des jardins plus vastes, parfois plus exigeants, avec des pentes annoncées jusqu’à 50 % et une hauteur de coupe de 20 à 60 mm. On retrouve la vision IA (dont vision nocturne infrarouge), la gestion avancée des zones, et la connectivité 4G / Wi-Fi / Bluetooth.

Automower 430V et 450V dans l'herbe au repos
Un modèle aplati avec une meilleure largeur de coupe ! ©Husqvarna

Sur le papier, ce sont les modèles à privilégier dès que la surface grimpe, ou dès qu’on veut une marge de sécurité sur la capacité de tonte.

Rendez-vous en février 2026 : Husqvarna prévoit la disponibilité des nouveaux Automower 405VE, 410VE, 430V et 450V, avec une arrivée en magasin attendue aux tarifs annoncés. D’ici là, on gardera un œil sur les premières prises en main, notamment sur la vision IA (évitage réel des obstacles) et sur le comportement EPOS via Cloud selon la couverture réseau du jardin !

  •  

Le très toxique Syndicat de la Famille

L'ex Manif pour tous propage la haine dans l'espace public

Dix ans après les grandes manifestations contre le mariage pour tous, en 2023, le mouvement La Manif pour tous s’est mué en une nouvelle structure : le Syndicat de la Famille. Cette année, à la rentrée, ce collectif qui diffuse des contenus homophobes et transphobes a pu coller des affiches, parfois sauvages, dans plusieurs villes de France sans être inquiété.

Le nom à changé, la haine est toujours là - © Reflets

C’est à l’occasion du dixième anniversaire de La Manif pour Tous que ce mouvement réactionnaire et catholique intégriste a officialisé sa transformation. La présidente, Ludovine de La Rochère, déclarait alors : « La famille n’est ni de droite ni de gauche. Son syndicat ne l’est pas non plus. » La haine semble pourtant toujours trouver des slogans «soraliens» pour se frayer un chemin dans le débat public.

Ludovine de La Rochère est issue d’une famille catholique traditionaliste, proche du parti d'extrême droite Les Patriotes. Pour brouiller encore davantage les pistes, elle a appelé sa nouvelle structure un « syndicat », traditionnellement associé aux organisations de gauche. Ce syndicat est officiellement né le 24 mars 2023, exactement dix ans après la mobilisation parisienne contre la loi Taubira. Malgré son nom, Le Syndicat de la Famille n’a rien d’une organisation syndicale au sens classique du terme : il ne représente ni salariés ni professions. Il s’agit d’un mouvement d’influence politique, hostile au mariage pour tous, à la GPA et aux droits des personnes LGBT.

Une campagne d’affichage dite « anti-wokiste »

Le Syndicat de la Famille revendique une présence « partout en France » à travers ses antennes régionales, généralement composées de petits groupes de militants qui mènent des actions dans l’espace public et collent des affiches.

Affiches du SDF lors de la journée internationale des droits des femmes en 2024. Dans un contexte de haine et propagande anti-LGBT. 
Affiches du SDF lors de la journée internationale des droits des femmes en 2024. Dans un contexte de haine et propagande anti-LGBT....
  •  

Guide complet : Lire vos films et séries depuis un NAS UGREEN via l’application Théâtre ou en DLNA

Le NAS UGREEN ne se limite pas au stockage de fichiers : c’est aussi un excellent serveur multimédia pour centraliser et lire vos films, séries ou vidéos personnelles. Grâce à son système Ugos, vous pouvez transformer votre NAS en véritable centre de divertissement accessible depuis votre PC, votre smartphone ou votre box Android.

Dans cet article, on va voir deux méthodes pour accéder à vos vidéos :

  1. Avec l’application Théâtre de UGREEN, qui propose une interface moderne et une gestion intelligente de votre vidéothèque.
  2. En DLNA, un protocole universel reconnu par la plupart des lecteurs multimédias comme VLC ou Nova Player.

Ces deux approches sont complémentaires : Théâtre pour une expérience riche et intuitive, DLNA pour un accès universel et rapide depuis n’importe quel appareil.

Pourquoi centraliser ses vidéos sur un NAS UGREEN ?

Un NAS UGREEN est bien plus qu’un simple disque réseau.
Il vous permet de :

  • Regrouper tous vos fichiers multimédias en un seul endroit.
  • Accéder à vos films et séries depuis tous vos appareils connectés.
  • Éviter les transferts de fichiers encombrants.
  • Profiter d’une lecture fluide et instantanée, sans configuration complexe.

C’est la solution idéale pour ceux qui veulent se constituer une médiathèque personnelle accessible à la maison, que ce soit depuis le salon, un ordinateur ou un smartphone.

UGREEN propose une gamme variée de modèles de NAS, adaptés à des usages — de la simple lecture de vidéos HD à la diffusion 4K ou ultra-performante. Voici quelques exemples marquants :

  • UGREEN NAS DXP2800 : modèle 2 baies, compact et accessible, souvent conseillé pour un usage domestique de base.
  • UGREEN DXP4800 Plus : modèle 4 baies plus performant, avec des connectiques haut débit et une capacité suffisante pour une médiathèque conséquente.
  • UGREEN DXP6800 Pro : version 6 baies, idéale pour un stockage important ou des usages mixtes (vidéo + backups).
  • UGREEN DXP8800 Plus : un modèle 8 baies pour les gros volumes, parfait pour les passionnés ou petits serveurs familiaux.
  • UGREEN DH4300 Plus : un modèle d’entrée de gamme 4 baies, plus économique, déjà suffisant pour une médiathèque simple.
  • UGREEN DH2300 Plus : un modèle d’entrée de gamme 2 baies, plus économique, déjà suffisant pour une médiathèque simple.

Cette gamme (2 à 8 baies) permet de choisir un NAS UGREEN adapté à vos besoins, avec la marge nécessaire pour faire évoluer votre stockage au fil du temps. Les modèles les plus puissants sont particulièrement pertinents si vous prévoyez de diffuser en 4K, d’utiliser plusieurs flux simultanément ou d’ajouter des fonctions serveur en parallèle.

Préparer vos dossiers multimédias sur le NAS

Quelque soit la méthode que vous allez privilégier, pour consommer vos médias, vous devez prendre un instant pour bien organiser vos fichiers.

Depuis le gestionnaire de fichiers Ugos, créez un dossier principal “Vidéos” contenant vos sous-dossiers “Films”, “Séries”, “Vidéos personnelles”, …

Type de contenuNom du dossierExemple de chemin
Films/Vidéos/Films/Vidéos/Films
Séries/Vidéos/Séries/Vidéos/Séries
Vidéos personnelles/Vidéos/Vidéos perso/Vidéos/Vidéos perso

Voici pas à pas comment créer ce dossier partagé, dans Fichiers puis Dossier partagé, cliquez sur Créer un dossier partagé

J’appelle mon dossier partagé principal « Vidéos« , mais adaptez le comme vous le voulez.

Laissez les paramètres par défaut si vous êtes le seul utilisateur du NAS, sinon pensez à ajouter d’autres membres de votre famille pour partager votre médiathèque.

Le partage étant créé, rentrez dedans en double-cliquant dessus.

Créez maintenant des dossiers pour ranger vos vidéos par types comme Films, Séries, Concerts, Reportages, Vidéos perso, …

Transférez ensuite vos fichiers vidéos depuis votre PC ou disque externe.

Vous pouvez téléverser des fichiers ou des dossiers complets.

Pour notre exemple je dépose un film au format MKV.

Méthode 1 : Lire vos vidéos avec l’application Théâtre de UGREEN

Présentation de l’application Théâtre

L’application Théâtre (ou Theater en anglais) est développée par UGREEN pour simplifier la gestion et la lecture de vos vidéos.
Elle analyse automatiquement vos fichiers, télécharge les affiches et les métadonnées, et organise tout dans une interface élégante et intuitive.

Disponible sur Ugos (le système du NAS UGREEN), mais aussi sur PC, smartphones et box Android, elle offre une expérience unifiée sur tous vos appareils.

Installer et configurer Théâtre sur le NAS UGREEN

  1. Connectez-vous à l’interface Ugos depuis votre navigateur ou l’application Ugos.
  2. Ouvrez le portail d’applications UGREEN (App Center).
  3. Recherchez “Théâtre” et cliquez sur Installer.
  1. Sélectionnez le volume d’installation puis Installer. De base vous avez certainement créer 1 seul volume.
  1. Une fois installée, ouvrez l’application.
  1. Une fois dans l’application devez créer des Médiathèques. Chaque médiathèque va pointer sur l’un des dossiers créé précédemment. Au démarrage de l’application vous êtes directement dans le menu création de la première Médiathèque. Commençons par créer la Médiathèque Films. Nommez la médiathèque et cliquez sue Ajouter un dossier.

Allez simplement pointer vers le dossier qui contient vos films.

Puis Nouvelle médiathèque

Une fois la première médiathèque créée, vous pouvez créer d’autres médiathèque pour vos séries, montages vidéos, …. Pour cela cliquez sur la petite roue crantée.

je la nomme ici Séries et je pointe vers mon dossier Vidéos / Séries.

Les 2 médiathèques Films et Séries sont maintenant créées.

Aussitôt les Médiathèques créées, Théâtre se charge d’analyser vos fichiers et de l’enrichir automatiquement avec les affiches et les informations divers (titre, année, acteurs et actrices , réalisateurs, synopsis…). Inutile de déployer des Plex et pleins d’outils tiers, l’application est fait pour cela.

L’interface est claire et bien pensée : vous naviguez dans vos films comme sur Netflix, mais avec vos propres fichiers. Je lance mon films en exemple directement depuis l’application UGREEN installée sur le PC, mais c’est le même principe avec l’application UGREEN installée sur la Box ou le smartphone.

Vous pouvez constater la richesse de l’interface UGOS !

Lire vos vidéos sur PC, Box ou smartphone

Comme je viens de l’aborder l’un des gros avantages de Théâtre est sa compatibilité multi-appareils.
Vous pouvez accéder à votre vidéothèque depuis :

  • Votre PC : via l’application Ugreen pour Windows.
  • Votre smartphone ou tablette : application Ugreen sur Android et iOS.
  • Votre Box Android (ex. Freebox Pop) : en installant l’application Ugreen depuis le Google Play Store.

Il suffit de cliquer sur un film ou une série pour lancer la lecture, avec reprise automatique là où vous vous êtes arrêté.
C’est propre, fluide, et surtout sans aucune configuration technique.

Votre médiathèque est disponible de n’importe où, que vous soyez chez vous ou en déplacement. Contrairement à Synology ou vous avez une application par usage, l’application UGOS vous permet d’avoir sous la main vos films, vos photos, vos musiques, vos fichiers.

Méthode 2 : Lire vos vidéos en DLNA pour un accès universel

Qu’est-ce que le DLNA ?

Le DLNA (Digital Living Network Alliance) est un protocole standard qui permet à n’importe quel appareil compatible de voir et lire les fichiers multimédias partagés sur votre réseau local.

L’avantage :

  • Aucune configuration de partage complexe.
  • Compatible avec une multitude d’applications et d’appareils (VLC, Nova Player, TV connectées, Freebox, etc.).
  • Accès rapide, “anonyme” et sûr, limité à votre réseau local.
  • Accessible depuis des appareils n’étant pas sous iOS ou Android et donc sans possibilité d’installer l’application UGREEN

En clair, le DLNA rend votre NAS UGREEN visible automatiquement sur le réseau, comme un “serveur multimédia” accessible depuis vos appareils domestiques.

Activer le service DLNA sur Ugos

  1. Ouvrez l’interface Ugos.
  2. Allez dans Panneau de configuration > Service de fichiers.
  1. Dans Paramètres avancés cochez Activer le service de découverte DLNA et cliquez sur Appliquer.
  1. Depuis le Centre d’applications, installez l’application DLNA. Cette application est indispensable, à l’étape précédente vous avez autorisez le service, l’application sert elle à paramétrer ce service. Rassurez-vous c’est très simple et rapide.
  1. Ouvrez l’application DLNA et cliquez sur Ouvrir
  1. Cliquez sur J’ai compris
  1. Activez le service DLNA puis Ajouter
  1. Sélectionnez les dossiers à « diffuser » sur votre réseau en DLNA / uPNP
  1. Et c’est terminé ! Facile non ?

Votre NAS devient maintenant visible comme “Serveur multimédia UGREEN” depuis vos lecteurs DLNA.

Lire vos vidéos DLNA sur vos appareils

Depuis une Freebox Pop ou autre box Android

  1. Ouvrez le Play Store et installez VLC, Nova Player
  2. Lancez l’application et allez dans Réseau local / UPnP / DLNA.
  1. Voici comment procéder depuis Nova Player.
  1. Voici comment procéder depuis VLC.

VLC et Nova Player détectent automatiquement les formats compatibles et gèrent même les sous-titres intégrés.

Depuis un PC ou un smartphone

  • Sur PC : ouvrez VLC, puis “Réseau local → Universal Plug’n’Play (UPnP)”.
  • Sur mobile : même procédure dans VLC Mobile ou Nova Player.

L’accès est instantané, sans identifiant ni configuration réseau.
C’est une solution ultra simple et universelle pour profiter de vos vidéos sans passer par l’application Ugreen.

Théâtre ou DLNA : que choisir ?

CritèreApplication ThéâtreDLNA
InterfaceModerne et intuitiveBasique (explorateur de dossiers)
Indexation automatiqueOui (jaquettes, infos, tri)Non
CompatibilitéApp Ugreen (PC, mobile, box)VLC, Nova Player, TV connectées
ConfigurationNécessite ajout des dossiersNécessite ajout des dossiers
SécuritéAccès authentifié local et distantAccès local sans mot de passe
Utilisation recommandéePour une expérience “Netflix maison”Pour un accès rapide et universel

En résumé :

  • Utilisez Théâtre pour une expérience visuelle complète et confortable.
  • Utilisez DLNA pour une lecture universelle depuis n’importe quel appareil compatible.

Conseils pratiques pour une lecture fluide

  • Connexion réseau : privilégiez une connexion Ethernet ou Wi-Fi 5 GHz.
  • Formats vidéo : Théâtre et DLNA gèrent la plupart des formats (MP4, MKV, AVI), mais vérifiez côté lecteur.
  • Mise à jour : gardez Ugos et les applis Ugreen à jour pour éviter les erreurs d’accès.
  • Organisation : noms de fichiers courts et dossiers clairs = meilleure détection DLNA.

FAQ : tout savoir sur la lecture multimédia avec un NAS UGREEN

1. Quelle est la différence entre Théâtre et DLNA ?
Théâtre offre une gestion avancée de votre vidéothèque avec jaquettes et tri automatique. DLNA, lui, est un protocole simple qui permet à tout appareil compatible d’accéder à vos vidéos sur le réseau local.

2. Faut-il choisir entre Théâtre et DLNA ?
Non. Vous pouvez utiliser les deux : Théâtre pour sa belle interface, DLNA pour sa compatibilité universelle.

3. Puis-je lire mes vidéos sur une Freebox Pop ?
Oui, via l’application Ugreen, VLC ou Nova Player disponibles sur le Play Store de la Freebox Pop.

4. Mes vidéos n’apparaissent pas en DLNA, que faire ?
Vérifiez que le service DLNA est activé sur Ugos et que vos dossiers vidéos sont inclus dans les partages.

5. Le DLNA est-il sécurisé ?
Oui, il reste limité à votre réseau local. Aucun fichier n’est accessible depuis Internet.

Cet article original intitulé Guide complet : Lire vos films et séries depuis un NAS UGREEN via l’application Théâtre ou en DLNA a été publié la première sur SysKB.

  •  

La question la plus posée en entretien SysAdmin

Thomas propose de répondre à une question populaire et souvent posée en entretien. Si je vous dis ça c'est parce qu'on m'a déjà posé cette question, et malheureusement pour le recruteur j'y étais préparé et il a eu une réponse chirurgicale de ma part 😁

J'aime cette question car on peut descendre aussi profondément que l'on veut : matériel, code touche du clavier quand j'appuie sur la touche ENTRE, DNS racines, etc.

Aujourd'hui, lorsque je fais à mon tour passer un entretien d'embauche technique, je préfère m'attarder sur des problématiques proches de la réalité : des mises en situation. Afin de voir si le candidat comprend la problématique et quel est son angle d'attaque. Cela permet aussi d'éviter le "par cœur" sur des questions devenues trop connues.

Merci à Thomas, qui m'a permis de bluffer un recruteur IT il y a quelques années grâce à cette vidéo.

Vous n'aimez pas le RSS : abonnez-vous par email 📥
Vous devriez me suivre sur Twitter : @xhark

Article original écrit par Mr Xhark publié sur Blogmotion le 22/10/2025 | Pas de commentaire |
Attention : l'intégralité de ce billet est protégée par la licence Creative Commons

Cet article La question la plus posée en entretien SysAdmin provient de : on Blogmotion.
  •  

CanSat: Module GPS

Bonjour à tous,

Nombre d'entre-vous savent que nous sommes impliqué dans le projet CanSat (voir précédents articles sur le sujet CanSat). 

Nous poursuivons les travaux sur Kit CANSAT version 2, l'occasion de s'intéresser à des extensions utiles.
Pour rappel, notre kit utilise un Raspberry-Pi Pico et du code Python sur microcontrôleur (MicroPython).


Documentation Open-Source disponible sur le Wiki de MCHobby.

A propos de CanSat

CanSat est un concours visant a stimuler l'apprentissage des sciences dans le domaine de l'AéroSpatial en réalisant un mini-satellite (la CanSat) pas plus grande qu'une boîte de Soda. Ce satellite est envoyé et éjecté à 3000m d'altitude à l'aide d'une roquette. C'est à partir de ce moment que votre projet capture les données et les envois au sol.

Si vous voulez en apprendre plus sur le concours CanSat, je vous invite à visiter la page d'accueil CANSAT sur EseroBelgium.be .

Module GPS pour CanSat

Dans les divers modules envisagé, il y a le module GPS/GNSS destiné à communiquer la position de la CanSat durant son vol.

Ci-dessous le module en cours de validation.

CANSAT-GPS-V2 par MCHobby

Ainsi, une variante de l'attache parachute (dit CanSat-BUN) pour l'équiper d'un  GPS Ultime. 

Etant donné que ce module est supposé se retrouver sur le dessus de la CanSat (pour exposer l'antenne vers le ciel), le point de connexion est reporté sous la carte. 

Un simple câble Grove permettra de raccorder le GPS sur l'entrée UART de la CANSAT en deux clicks.

CANSAT-GPS-V2 par MCHobby

La carte expose également les deux signaux supplémentaires:

  • 1pps : Pulsation à très précisément 1 Hertz (1 pulsation par seconde)
  • nRest : Reset du module GPS. Placer cette broche au niveau bas réinitialise le module GPS.

A propos du module GPS Ultime

C'est que le breakout GPS/GNSS produit par AdaFruit dispose d'une excellente module GPS/GNSS disposant d'une grande sensibilité et d'une antenne intégrée (dite Patch Antenna).

Même avec son antenne Patch, le démarrage à froid de ce module permet d'obtenir un fix GPS/GNSS relativement rapidement (de l'ordre de la minute).
Tandis que s'il est utilisé avec un pile CR2032, le démarrage à chaud permet de réduire drastiquement le temps du fix GPS/GNSS.

Le GPS-Ultime est capable d'offrir un rafraîchissement des données jusqu'à 10 fois par secondes (10 Hz).

Support MicroPython

Le dépôt cansat-belgium-micropython reprend la bibliothèque lib/adafruit_gps.py résulte d'un précédent portage Arduino vers MicroPython.
Maintenant compatible avec les trames GNSS, la bibliothèque permet de tester les scripts d'exemples test-gps pour CanSat :

cansat-belgium-micropython

Le script simpletest.py permet de collecter les données du GPS et d'en afficher les données. 

========================================
Fix timestamp: 10/18/2025 17:03:51
Latitude: 50.69063 degrees
Longitude: 4.400778 degrees
Fix quality: 1
# satellites: 10
Altitude: 110.0 meters
Speed: 0.36 knots and 0.666468 km/h
Track angle: 159.4 degrees
Horizontal dilution: 1.19
Height geo ID: 47.4 meters
========================================
Fix timestamp: 10/18/2025 17:03:52
Latitude: 50.69063 degrees
Longitude: 4.40078 degrees
Fix quality: 1
# satellites: 10
Altitude: 110.0 meters
Speed: 0.31 knots and 0.573903 km/h
Track angle: 159.4 degrees
Horizontal dilution: 1.19
Height geo ID: 47.4 meters

Il est possible de visualiser les coordonnées dans google maps en saisissant les coordonnées "50.69063 ,  4.400778" (lattitude , longitude) dans la zone de recherche.

Où acheter

  •  

YTuner : une alternative à YCast (vTuner)

Si vous utilisez le projet YCast pour faire fonctionner les webradios sur votre ampli Yamaha, Onkyo, Pionee, Denon/Marantz... cela peut vous intéresser.

Au départ intégré gratuitement, le service vTuner est devenu payant depuis de nombreuses années. YCast permet de remettre en route les webradios sur votre ampli, en interceptant les requêtes pour les renvoyer sur un Raspberry Pi/Synology qui répondra comme le faisaient les serveurs de vTuner.

Après vTuner-Emulator-YCast (version docker), j'ai découvert le projet YTuner. Il ne s'agit pas vraiment d'un fork car tout le code a été réécrit

Toutefois, la version Windows a été abandonnée par l'auteur qui ne veut plus en entendre parler, à cause de faux positif de détection Windows Defender.

De mon côté j'utilise toujours YCast en python sur mon Raspberry Pi et ça tourne comme une horloge ! Mais un jour j'aurai peut-être un problème de dépendance ; qu'un venv pourra peut-être résoudre et si ce n'est pas le cas je me tournerai vers YTuner !

➡ YTuner

Vous n'aimez pas le RSS : abonnez-vous par email 📥
Vous devriez me suivre sur Twitter : @xhark

Article original écrit par Mr Xhark publié sur Blogmotion le 18/10/2025 | 3 commentaires |
Attention : l'intégralité de ce billet est protégée par la licence Creative Commons

Cet article YTuner : une alternative à YCast (vTuner) provient de : on Blogmotion.
  •  

Des vacances au clair de lune (ou comment faire son Geforce Now privé)

Il aura fallu beaucoup trop de temps pour que ça se produise, et je l’aurai travaillé au corps une paire de fois le gaillard, mais voilà, ceci est le premier billet invité de l’unique, l’irremplaçable Pierre-Marie ! Parce que c’était à la fois trop con comme cible de jeu, mais surtout trop rigolo vu le mix de technos abordées, parce qu’on va parler de Pokemon, de Sunshine/Moonlight (le titre ne ment pas), de wakeonlan, de Kubernetes, de Fission. Oui, tout ça en même temps. Vous comprenez mon enthousiasme ?

La puissance des algorithmes de ciblage

Au détour de mon scrolling sur X, je suis tombé sur un post parlant de jeux vidéos (l’algorithme est bien foutu) et sur une injonction à s’inscrire sur PokeMMO.
Pas fan hardcore de Pokémon, j’ai quand même bien poncé les deux premières gen et me suis tenté à la troisième.
Je fais partie des gens qui n’attendent plus grand chose de Game Freak qui, selon moi, ressort en boucle les mêmes jeux sans vraiment d’innovation.
Au contraire, côté développement non officiel, on retrouve des jeux dérivés comme Pokémon Showdown, qui malgré que ce ne soit pas mon style de jeu, attire une grande communauté et qui aurait pu donner des idées à Nintendo pour renouveler la licence.
J’ai, par exemple, plus apprécié le rom hack Pokémon Adventures Red Chapter basé sur l’excellent manga Pokémon La Grande Aventure que le remake Let’s Go Evoli.
Bref, je suis donc allé voir ce qu’était ce PokeMMO, et me suis motivé pour me lancer dessus. Ça tombe bien, je pars 2 semaines en vacances et il faudra bien occuper mes soirées au coin de la clim. (article commencé au mois de Juillet). PokeMMO propose un installer pour Windows, Linux, iOS, Android et même un package pour OS alternatif (j’ai vu pas mal de gens qui installaient ça sur une console portable de type Retroid).
Personnellement, j’ai à ma disposition une PsVita et une Switch, toutes deux libérées et qui me servent lors de mes sessions retrogaming. L’option téléphone/tablette est pour moi rédhibitoire ne possédant pas de manette compatible et aimant beaucoup trop les boutons physiques pour jouer au tactile.
Installer Android sur Switch me semblant trop fastidieux, j’ai décidé de partir sur une autre voie. Étant obligé d’être connecté pour jouer quoi qu’il arrive (le O de MMO, hein), je me penche sur Moonlight, que j’avais déjà testé il y presque 10 ans. Il y a des clients pour Switch et PsVita (et pour beaucoup d’autres OS/appareils) donc ça pourrait correspondre à mes besoins.

Installation de Sunshine/Moonlight

Moonlight, pour vulgariser, c’est un client non-officiel pour le protocole Nvidia Gamestream qui vient se connecter à un ordinateur distant pour le contrôler à distance. Il a la force de supporter les contrôleurs locaux et de transmettre au PC distant à la manière d’un Steam Link. Pour pouvoir streamer vers un client Moonlight, il faut un serveur sur la machine cible. Le logiciel Nvidia GeForce Experience permet cela mais la « nouveauté » par rapport à mon essai d’il y a 10 ans, c’est le serveur Sunshine qui permet de s’affranchir du logiciel de Nvidia.

L’installation de Sunshine se fait via l’installateur dédié à la distribution cible en quelques secondes. Une fois installé, Sushine se configure via une interface web accessible en local. Elle permet de gérer les différents clients (appairage, suppression…), les différentes applications et les options de streaming (encodage, bitrate…).

Le première étape est de créer un couple utilisateur/motdepasse pour protéger l’accès à cette interface.

Interface de configuration de Sunshine: Creation du mot de passe

Par défaut, Sunshine propose deux applications: Bureau et Steam Big Picture (même si Steam n’est pas installé sur le système)

Interface de configuration de Sunshine: Applications

J’installe donc PokeMMO et le configure comme Application dans Sunshine. Je reprends simplement les valeurs trouvées dans le raccourci Bureau qui a été crée lors de l’installation. Il détecte même la miniature automatiquement.

Interface de configuration de Sunshine: Création de l’application PokeMMO

J’installe le client Moonlight sur les deux appareils. Le client détecte automatiquement le PC supportant Sunshine et affiche un code d’appairage à entrer dans Sunshine.

Interface de Moonlight: Détection

Interface de configuration de Moonlight: Appairage

Interface de Sunshine: appairage

L’appairage se déroule sans problème et je peux tester le stream en local.

Interface de Moonlight: Écran d’accueil

Je lance l’application Bureau et ça me permet de confirmer qu’il est bien possible d’ouvrir une session Windows à distance.

Interface de Moonlight: Bureau

Pour le stream distant, il faut juste s’assurer que Upnp est activé sur le routeur et cocher une case dans la configuration de Sunshine.

Interface de configuration de Sunshine: Activation de l’Upnp

(ndr: sinon il faut définir les ports et ouvrir manuellement/créer les redirections de port; l’IP fixe pour le PC de jeu est fortement recommandée dans ce cas)

Fini ?

On aurait pu s’arrêter là, mais bon, je suis pas fan de laisser tourner le PC H24 pendant 2 semaines juste pour l’utiliser quelques heures. Moonlight propose une fonctionnalité bien pratique de Wake On LAN pour démarrer un ordinateur à distance, mais voilà, ça ne fonctionne qu’en réseau local (en même temps c’est dans le nom).
Il faut donc trouver le moyen de le faire fonctionner à distance. J’ai plusieurs dispositifs à ma disposition.
Mon routeur PfSense permet de d’envoyer des paquets WoL mais uniquement via l’interface, pas d’API disponible. Il faudrait se connecter à l’interface via VPN pour lancer la commande. C’est trop lourd et pas assez flexible.
Solution suivante, utiliser le cluster k3s qui tourne à la maison.

Utilisation de k3s

On teste la faisabilité du process en lançant un pod temporaire contenant la commande wakeonlan mais ça ne fonctionne pas car l’appareil ciblé n’est pas sur le LAN du cluster k3s comme l’est le pod.
En cherchant un peu, on trouve qu’il faut configurer le pod pour qu’il tourne dans le réseau hôte, le réseau des nœuds.

kubectl run tmp --rm -it --image nixery.dev/shell/wakeonlan -it --overrides='{"kind":"Pod", "apiVersion":"v1", "spec": {"hostNetwork":\ntrue}}' -- wakeonlan a1:b2:c3:d4:e5:f6

Et ça marche !!

Reste à trouver le moyen de lancer ça simplement, via un appel HTTP par exemple. Je viens justement de déployer un système de micro-services : Fission.
Fission permet de déployer des fonctions de micro-services à la manière d’un système Serverless comme Lambda. Ça me permettrait de recevoir une requête HTTP avec en paramètre l’adresse MAC cible et d’envoyer la requête WoL avec un simple code python.

Installation de Fission

L’installation de Fission est simple si on passe par leur chart Helm. On a juste à surcharger quelques valeurs grâce au fichier values.yml suivant.

## Fission chart configuration
##

## routerServiceType to consider while creating Fission Router service.
## For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP.
##
routerServiceType: ClusterIP

## defaultNamespace represents the namespace in which Fission custom resources will be created by the Fission user.
## This is different from the release namespace.
## Please consider setting `additionalFissionNamespaces` if you want more than one namespace to be used for Fission custom resources.
##
defaultNamespace: fission

# Add Fission helm repo
helm repo add fission-charts https://fission.github.io/fission-charts
# Install CRDs 
kubectl create -k "github.com/fission/fission/crds/v1?ref=v1.21.0"
# Install Fission
helm install fission fission-charts/fission-all -f values.yml -n fission --create-namespace
# Install Fission CLI binary
curl -Lo fission https://github.com/fission/fission/releases/download/v1.21.0/fission-v1.21.0-linux-amd64 && chmod +x fission && sudo mv fission /usr/local/bin/

Configuration de Fission

La documentation fission nous apprend qu’on peut modifier les spécifications des pods. Il y a même un tutoriel pour déployer un exemple.

# On créé un dossier dédié
mkdir wol-fn
cd wol-fn
# On initialise le dossier specs
fission spec init
# On créé l'environnement qui fera touner le code python
fission -n fission env create --spec --name python-wol --image ghcr.io/fission/python-env --builder ghcr.io/fission/python-builder
# On créé le dossier de la fonction
mkdir wol
# On créé un fichier requirements.txt avec le module python dont nous avons besoin
echo "wakeonlan" > wol/requirements.txt
# On créé le fichier contenant le code python à exécuter
touch wol/wol.py

from flask import request
from wakeonlan import send_magic_packet
import re

def main():
    mac = request.args.get('mac')
    if mac is None:
        return "Please send a MAC address"
    else:
        if re.match("[0-9a-f]{2}([-:]?)[0-9a-f]{2}(\\1[0-9a-f]{2}){4}$", mac.lower()):
            send_magic_packet(mac)
            return "Sending magic packet to 255.255.255.255 with broadcast 255.255.255.255 MAC %s port 9" % (mac)
        else:
            return "%s is not a valid MAC format" % (mac)

On créé la spécification pour la fonction qui décrit quel code doit être exécuté et le trigger HTTP qui détermine quelle URL déclenche son exécution.

# On créé la spécification pour la fonction
fission -n fission function create --spec --name wol-fn --env python-wol --src "wol/*" --entrypoint wol.main
# On créé la spécification pour la route.
# Avec les annotations permettant de créer l'ingress rule sur Traefik
fission -n fission route create --spec --name wol-fn-get --method GET --url /wake --function wol-fn --createingress --ingressrule "test.domain.tld=/wake" --ingressannotation "kubernetes.io/ingress.class=traefik" --ingressannotation "traefik.ingress.kubernetes.io/router.entrypoints=websecure" --ingressannotation 'traefik.ingress.kubernetes.io/router.tls="true"' --ingressannotation "traefik.ingress.kubernetes.io/router.tls.certresolver=letsencrypt"

On a maintenant un dossier contenant la fonction et son environnement standard.

wol-fn
├── specs
│   ├── README
│   ├── env-python-wol.yaml
│   ├── fission-deployment-config.yaml
│   ├── function-wol-fn.yaml
│   └── route-wol-fn-get.yaml
└── wol
    ├── requirements.txt
    └── wol.py

On va modifier le fichier env-python-wol.yaml pour ajouter notre configuration spécifique.

---
apiVersion: fission.io/v1
kind: Environment
metadata:
  creationTimestamp: null
  name: python-wol
spec:
  builder:
    command: build
    container:
      name: builder
      resources: {}
    image: ghcr.io/fission/python-builder
    podspec:
      containers:
      - name: builder
        resources: {}
  imagepullsecret: ""
  keeparchive: false
  poolsize: 3
  resources: {}
  runtime:
    container:
      name: python-wol
      resources: {}
    image: ghcr.io/fission/python-env
    podspec:
      containers:
      - name: python-wol
        resources: {}
+     hostNetwork: true
+     dnsPolicy: ClusterFirstWithHostNet
  version: 3

La directive hostNetwork permet comme vu plus haut de faire tourner le pod sur le réseau hôte.
Avec juste cette modification, on a une erreur à l’exécution du code parce que le pod n’arrive pas à aller chercher l’archive contenant le code de la fonction sur le stockage partagé de Fission.

{
    "level": "error",
    "ts": "2025-08-22T15:55:03.884Z",
    "logger": "generic_pool_manager.generic_pool.fetcher_client",
    "caller": "client/client.go:114",
    "msg": "error specializing/fetching/uploading package, retrying",
    "error": "Internal error - error fetching deploy package: failed to download url : Get \"http://storagesvc.fission/v1/archive?id=%2Ffission%2Ffission-functions%2Ffc6798a9-95c3-47cb-8797-28f842162f83\": dial tcp: lookup storagesvc.fission on 9.9.9.9:53: no such host",
    "url": "http://X.X.X.X:8000/specialize",
    "stacktrace": "github.com/fission/fission/pkg/fetcher/client.sendRequest\n\tpkg/fetcher/client/client.go:114\ngithub.com/fission/fission/pkg/fetcher/client.(*client).Specialize\n\tpkg/fetcher/client/client.go:56\ngithub.com/fission/fission/pkg/executor/executortype/poolmgr.(*GenericPool).specializePod\n\tpkg/executor/executortype/poolmgr/gp.go:467\ngithub.com/fission/fission/pkg/executor/executortype/poolmgr.(*GenericPool).getFuncSvc\n\tpkg/executor/executortype/poolmgr/gp.go:553\ngithub.com/fission/fission/pkg/executor/executortype/poolmgr.(*GenericPoolManager).GetFuncSvc\n\tpkg/executor/executortype/poolmgr/gpm.go:242\ngithub.com/fission/fission/pkg/executor.(*Executor).createServiceForFunction\n\tpkg/executor/executor.go:239\ngithub.com/fission/fission/pkg/executor.(*Executor).serveCreateFuncServices.func1\n\tpkg/executor/executor.go:143"
}

On voit qu’il cherche à contacter storagesvc.fission et qu’il n’arrive pas à résoudre ce hostname, ce qui est normal étant donné qu’il s’agit d’un nom interne au cluster et que le pod tourne désormais sur le hostNetwork. La directive dnsPolicy: ClusterFirstWithHostNet permet de forcer d’essayer la résolution en interne au cluster avant de tenter en externe sur le hostNetwork et résout ce problème.

Il ne reste qu’à déployer.

# On vérifie la syntaxe
fission spec validate
# On déploie
fission spec apply --wait
# On test via Fission CLI
fission -n fission function test --name wol-fn --method GET -q "mac=a1:b2:c3:d4:e5:f6"
# On test via HTTP depuis l'extérieur
curl "https://test/domain.tld/wake?mac=a1:b2:c3:d4:e5:f6"

Pour faire simple, ajouter l’URL en raccourci sur le téléphone et en un clic, le PC est démarré. Personnellement, je l’ai intégré dans mon Home Assistant avec un bouton dédié.

Home Assistant Dashboard

Finalisation de la configuration

Celui qu’on adore détester

Il reste deux ou trois détails à régler. Par défaut, depuis Windows 10, quand on arrête le système, il se place en réalité dans un mode de veille prolongée pour permettre un démarrage plus rapide. Hors le *Wake On LAN* ne fonctionne pas sur ce mode de sommeil. Microsoft documente ça très bien ici. Il y est également expliqué comment désactiver ce mode pour pouvoir rétablir un mode d’extinction « normal ».

Je vous les remets à l’identique:

  • Dans Panneau de configuration, ouvrez l’élément Options d’alimentation
  • Sélectionnez le lien Choisir ce que les boutons d’alimentation font
  • Désactivez la case à cocher Activer le démarrage rapide (recommandé)
  • Sélectionnez Enregistrez les paramètres.

Une fois cette modification effectuée, le Wake On LAN est complètement fonctionnel.

La fin

Et donc, puisqu’on a abordé le sujet, comment se passe l’extinction ? Vous vous rappelez ? le but de tout ce foutoir, c’était d’éviter de garder le PC allumé pendant deux semaines. On a parlé du démarrage, mais quid de l’arrêt ?

Le plus simple est de lancer une session Bureau dans Moonlight et d’aller cliquer sur le menu Démarrer puis le bouton Arrêter comme à la maison. Mais on peut aussi déclarer des applications dans Sunshine et il exécutera la commande associée à cette application.

J’ai donc créer une application nommée Shutdown qui lance la commande suivante shutdown /s /f /t 0.

Interface de configuration de Sunshine: Shutdown Application

Quand elle est lancée depuis le client Moonlight, elle éteint le PC distant.

Feedback et Conclusion

Puisque je suis rentré depuis, je peux débriefer ces 2 semaines d’utilisation, ça fonctionne super, le seul défaut que j’ai eu est qu’une fois le Shutdown n’a pas fonctionné et je ne l’ai pas vu tout de suite. Les fois suivantes, j’ai juste eu à bien vérifier le status dans le menu.

Interface de Moonlight: PC démarré

Interface de Moonlight: PC éteint

À part ça, super expérience ! Bien sur je n’ai pas cherché à jouer à des jeux très performants, mais ça a suffi à mes besoins, même en 4G. Je n’ai pas non plus poussé jusqu’à tenter de jouer sur la 4G en voiture, mais je pense que ça aurait pu marcher.
Je continue à l’utiliser, même à la maison, pour jouer dans le canapé plutôt que devant le PC.

Interface de Moonlight: PokeMMO


Alors, avouez que c’est pas mal en termes de bricolages inutiles donc indispensables, il était donc nécessaire de partager ça avec le plus grand nombre ? (enfin au moins les lecteurs de ce blog)

  •  

Le Google Home Speaker 2026 intègrera Gemini (et conserve Google Cast)

Google Home Speaker 2026

Google Home Speaker 2026

Le Google Home Speaker, annoncé pour le printemps 2026 au prix de 99,99 €, pourrait bousculer le monde de la maison connectée grâce à l’intelligence artificielle conversationnelle Gemini. Ce modèle se positionne comme un concurrent direct du HomePod mini en remplaçant le modèle Nest Audio. Il sera possible de faire un essai de six mois à Google Home Premium, permettant d’accéder à Gemini Live, des automatisations complexes et des fonctionnalités de sécurité avancées.

Une intégration matérielle durable et sonore avancée

Le Google Home Speaker est une mini enceinte connectée et intelligente dans la lignée des enceintes Google Nest Audio précédentes. Plus ronde, elle se rapproche du design du HomePod mini, mais sans la zone tactile sur le dessus. Ils seront au même prix.

L’accent a été mis sur la durabilité, l’enceinte étant fabriquée à partir de 39 % de matériaux recyclés, incluant les plastiques, métaux et terres rares. Elle est également enveloppée d’un fil innovant issu d’un processus de tricotage 3D unique, visant à réduire le gaspillage de tissu.

Sur le plan des performances, le haut-parleur délivre un son uniforme à 360°, avec des réglages acoustiques optimisés. L’appareil supporte la création de groupes d’enceintes avec d’autres dispositifs Nest ou Google Cast.

google home speaker home cinema

Il peut être couplé au Google TV Streamer pour créer une expérience immersive home cinéma traitant le son spatial. Mais Google ne dit pas si cette configuration est limitée à 2 enceintes ou peut fonctionner avec 5 Google Home Speaker ?

Pour garantir la confidentialité, l’appareil est équipé du traditionnel interrupteur physique de coupure du microphone sur le socle, complété par un anneau lumineux qui signale visuellement lorsque l’enceinte écoute ou répond. Elle remplace les quatre petites leds auxquelles on était habitué.

google home speaker detail

Google Home Speaker 2026, Gemini et Google Home Premium : l’intelligence au service du foyer

Le Google Home Speaker est doté de Gemini, un assistant vocal plus conversationnel que l’ancien Google Assistant, conçu pour s’attaquer aux tâches quotidiennes de manière fluide. L’achat de l’enceinte comprend six mois d’essai à l’abonnement Google Home Premium Standard (puis ensuite 10 € /mois) qui débloque une version plus performante de Gemini pour la maison.

Cette version Premium permet d’accéder à Gemini Live offrant une aide experte et permettant de parler librement avec l’enceinte, d’interrompre l’assistant et de poser des questions de suivi, comme on le ferait avec une vraie personne.

google home speaker jade
google home speaker berry

Le plan Google Home Premium Standard inclut, en plus de Gemini Live, la capacité de créer des automatisations complexes en décrivant simplement le résultat souhaité (“Aide moi à créer”) et des fonctionnalités de détection de sons (alarme fumée/CO, bris de verre).

Le plan Google Home Premium Advanced (20 €/mois ou 200 €/an) ajoute la recherche rapide dans l’historique vidéo des Nest Cams et la possibilité de demander des résumés quotidiens des événements survenus pendant son absence.

Source : Google

The post Le Google Home Speaker 2026 intègrera Gemini (et conserve Google Cast) first appeared on Multiroom - La musique connectée dans toute la maison.

  •  

X - Certificate and Key management

XCA is an x509 certificate generation tool, handling RSA, DSA and EC keys, certificate signing requests (PKCS#10) and CRLs. It supports a broad range of import and export formats.


Permalien
  •  

Captcha : vous travaillez (gratos) pour Google

Ce n'est pas un secret, mais j'ai trouvé la vidéo de BastiUI particulièrement bien léchée !

Il revient sur l'histoire du captcha, des la complexité du système, des IA qui parviennent à résoudre les défis "humains" et aussi comment Google vous a utilisé pour numériser tout un tas de choses.

Merci Basti !

Vous n'aimez pas le RSS : abonnez-vous par email 📥
Vous devriez me suivre sur Twitter : @xhark

Article original écrit par Mr Xhark publié sur Blogmotion le 11/10/2025 | Pas de commentaire |
Attention : l'intégralité de ce billet est protégée par la licence Creative Commons

Cet article Captcha : vous travaillez (gratos) pour Google provient de : on Blogmotion.
  •  

Linking to text fragments with a bookmarklet – alexwlchan

"""
Oh c'est cool : Un bookmarklet pour générer facilement un lien avec :#:~:text= (pour positionner à un endroit précis d'une page, même s'il n'y a pas d'ancres).
(via https://shaarli.zoemp.be/shaare/qj6faw)

🔵 Installation: Faire un drag-n-drop du gros bouton "Create link to selected text" dans votre barre de raccourcis Firefox.
🔵 Utilisation : Sélectionner le texte qui vous intéresse dans une page, et cliquez sur le raccourcis. Cela va ouvrir une popup avec le lien.

EDIT: On me signale que Firefox est capable de faire ça nativement :
🔵 Activation: Allez dans about:config, et passez le paramètre "dom.text_fragments.create_text_fragment.enabled" à "true"
🔵 Utilisation : Sélectionner le texte qui vous intéresse dans une page, clic-droit > "Copier le lien du surlignage"
"""
(sebsauvage)

Cela permet d'aller chercher des endroits dans la page sans utiliser d'anchor
Permalien
  •  

Note: Firefox, mes extensions obligatoires

Il n’y a plus débat :

  1. le navigateur Internet est le logiciel n°1 (sur ordinateur ou smartphone)
  2. le navigateur Internet à utiliser ne peut être que Firefox (ou une de ses variantes : Fennec, Waterfox, Icecat, …)
  3. il est nécessaire d’ajouter une « trousse d’hygiène » à Firefox pour se promener dans l’espace public et nauséabond d’Internet.

Suite à la récente découverte d’une nouvelle extension, je mets à jour ici ma liste d’extensions initiée il y a 6 ans déjà :

Must

  1. uBlock Origin : “efficient blocker”
  2. I don't care about cookies : “get rid of cookie warnings”
  3. PopUpOFF : “popup and overlay blocker”

Shall

  1. Consent-O-Matic : “automatically fills out cookie popups”

Can

  1. Dark Reader : “eye-care browser extension”
  2. Web Archives : “viewing archived and cached versions of web pages”
  3. Tabliss : “A beautiful, customisable New Tab page”

Bien entendu, aller jeter un œil chez SebSauvage est un bon complément (mais je n’ai pas assez l’expérience avec les autres extensions qui y sont listées)


Permalien
  •  
❌