Archives de l’auteur : blog

Et si le FSD Tesla se payait à la semaine ?

J’ai demandé à Gemini de cogiter, entre l’abonnement FSD de Tesla à 99 €/mois et une solution à 10 € par semaine. Je vous copie ici la réponse en intégralité car elle correspond à une réflexion que j’ai déjà eue par le passé :


Pour estimer le revenu global que Tesla pourrait générer en France avec son abonnement à la Capacité de Conduite Entièrement Autonome (FSD), nous devons d’abord établir une estimation fiable du parc automobile de la marque dans l’Hexagone au début de 2026.

1. Estimation du Parc Tesla en France (Début 2026)

Sur la base des immatriculations cumulées et des données de ventes récentes :

  • Fin 2023 : On comptait environ 150 000 Tesla en circulation (le cap des 100 000 ayant été franchi mi-2023).
  • Année 2024 : Environ 40 000 nouvelles immatriculations (malgré une baisse par rapport à 2023).
  • Année 2025 : Environ 30 000 à 35 000 immatriculations (Tesla Model Y reste dans le top 3, mais subit la concurrence de la Renault 5 et des nouveaux bonus).
  • Total estimé (Janvier 2026) : Environ 225 000 véhicules.

2. Scénario A : Abonnement à 99 € / mois

L’enjeu majeur est le taux d’adoption (le « take rate »). Aux États-Unis, il est estimé entre 15 % et 20 %. En Europe, les régulations sur l’autonomie sont plus strictes, mais nous pouvons projeter différents niveaux de succès.

Taux d’adoptionVéhicules abonnésRevenu MensuelRevenu Annuel
5% (Prudent)11 2501 113 750 €13,3 M €
15% (Standard)33 7503 341 250 €40,1 M €
30% (Optimiste)67 5006 682 500 €80,2 M €

3. Scénario B : Abonnement à 10 € / semaine

Un abonnement hebdomadaire change la psychologie de l’utilisateur. À 10 € par semaine, le coût revient à environ 43,33 € par mois ($10 \times 52 / 12$).

Ce prix très agressif (plus de deux fois moins cher que le précédent) pourrait faire exploser le taux d’adoption, car il devient comparable à un abonnement Netflix ou Spotify Premium.

Taux d’adoptionVéhicules abonnésRevenu MensuelRevenu Annuel
20% (Prudent)45 0001 950 000 €23,4 M €
40% (Standard)90 0003 900 000 €46,8 M €
60% (Massif)135 0005 850 000 €70,2 M €

Analyse Comparative

  • Rentabilité : Paradoxalement, Tesla pourrait gagner plus d’argent avec l’abonnement à 99 €/mois si au moins 15 % des conducteurs craquent.
  • Volume vs Marge : L’abonnement à 10 €/semaine est une stratégie de volume. Il permet de collecter bien plus de données pour entraîner l’IA (le « Neural Network ») en France, ce qui est l’objectif réel d’Elon Musk pour parfaire le FSD sur les routes européennes.
  • Flexibilité : L’offre hebdomadaire est idéale pour les départs en vacances (10 € pour un aller-retour Paris-Nice est très attractif), ce qui pourrait générer des pics de revenus saisonniers non négligeables.

Pas mal non, pas si stupide après tout ? J’ai ensuite relancé Gemini pour lui demander quel serait le revenu de Tesla si, chaque année, les conducteurs partaient 2 fois en vacance, été et hiver :

Pour ce calcul, nous allons nous baser sur les chiffres de notre estimation précédente (flotte de 225 000 Tesla en France début 2026) en appliquant ton scénario spécifique : un usage ponctuel uniquement pour les vacances.

Les Hypothèses du Calcul

  • Parc Tesla France : 225 000 véhicules.
  • Comportement : Chaque conducteur s’abonne 2 mois par an (1 mois en été, 1 mois en hiver/printemps) pour ses trajets de vacances.
  • Prix : 99 € TTC par mois.
  • Taux d’adoption ponctuel : Comme l’engagement est court et lié à la sécurité/confort des grands trajets, on peut estimer qu’un plus grand nombre de propriétaires franchira le pas par rapport à un abonnement annuel. Nous prendrons une hypothèse de 30 % de la flotte utilisant ce mode « vacances ».

Revenus Annuels (Scénario « Vacances »)

IndicateurValeur
Nombre de véhicules concernés (30% du parc)67 500 véhicules
Revenu par véhicule par an ($99 € \times 2$ mois)198 € / an
Revenu Global Annuel (France)13 365 000 €

Eh oui, 13 365 000 € seulement, une paille, rien du tout, pas gagnant pour la marque ! Je reste profondément convaincu qu’en Europe, une solution à la semaine, 9,99 € par exemple, resterait une solution vraiment juteuse pour Etron Musk, assez pour financer de nouveaux superchargeurs, et là encore Gemini a fait son calcul :

Si l’on suit ton hypothèse où chaque conducteur de Tesla en France utilise le FSD uniquement pour ses deux mois de vacances annuels, voici ce que cela permettrait à « Morron Musk » de construire concrètement.

1. Rappel du Budget Généré

Avec 30 % des conducteurs (67 500 véhicules) payant 99 € pendant 2 mois :

  • Revenu annuel généré : 13 365 000 €.

2. Coût d’un Superchargeur en 2026

D’après les données récentes de Tesla (notamment via Max de Zegher, directeur de la recharge), le coût d’installation a drastiquement chuté grâce à la préfabrication des stations.

  • Coût par borne (Stall) : Environ 38 000 €
  • Coût d’une station moyenne (12 bornes) : Environ 456 000 € (incluant le génie civil et le raccordement au réseau).

3. Ce que Tesla peut construire avec 13,3 M €

Avec ce seul revenu « logiciel » (qui ne coûte quasiment rien à Tesla une fois développé), voici l’impact sur le réseau français :

Type d’infrastructureNombre total de nouvelles unités
Bornes individuelles (V4)351 bornes
Stations complètes (12 bornes)29 stations

Pourquoi c’est stratégique ?

  • Maillage territorial : 29 stations supplémentaires représentent une augmentation d’environ 10 à 15 % du réseau actuel en France en une seule année.
  • Financement par l’usage : Ce sont les conducteurs qui partent en vacances (et qui ont donc besoin de bornes sur la route) qui financent directement l’extension du réseau pour les années suivantes.
  • Effet levier : Contrairement à la vente d’une voiture, ce revenu est récurrent. Chaque année, Musk peut réinvestir ces 13 millions d’euros pour densifier le réseau sans piquer dans la trésorerie principale de l’entreprise.

CONCLUSION :

Je vous vois déjà venir, il a utilisé l’IA pour générer un billet sur le blog, bouhhhh… Gemini est un outil, il sait compiler rapidement les sources, il le fait mieux que je ne l’ai déjà fait, plus détaillé, et comme outil, il est indispensable. De plus, je n’ai berné personne, c’est annoncé du départ qu’il y aurait ce genre de « réflexion », un mot bien peu adapté à une IA et pourtant…

Pour en revenir au neuneu sous Kétamine, les choix faits pour les américons ne pourront pas forcément être les choix en Europe. A 49 € l’abonnement aurait un sens et sans doute une meilleure adoption. A 99 €, avec les bridages réglementaires encore en place, il y a peu de chances qu’un conducteurs de Tesla, aussi géniale soit la voiture, accepte de financer une telle somme pour si peu d’améliorations, ou alors une à deux fois par an. On en revient au calcul des voyages en été/hiver, avec un revenu plus faible pour notre gentil leader Sud Africain.

On en reparle après Février sans doute, date où le FSD aura des chances d’obtenir une validation en Europe, une fois le passage réglementaire aux Pays Bas terminé ?

Teslamate-Mail : l’assistant web qu’il vous faut !

Un p’tit dev perso pour compléter un Teslamate déjà très bien fichu, Teslamate-Mail.

Teslamate c’est l’App qui va venir récupérer toutes les informations transmises par votre Tesla, avec en vrac : altitude, vitesse, recharges, GPS, pression des pneus, etc etc. c’est tellement vaste que parfois son interface est rébarbative pour le non Geek.

Teslamate étant hébergé la plupart du temps sur un serveur type docker, il est facile de venir lui ajouter un serveur Web pour ensuite proposer différents menus.

Teslamate-Mail va pouvoir :

  • Afficher le status de votre véhicule
  • Lister les charges effectuées sur une plage de dates, la puissance consommée sur cette plage, avec possibilité d’export par email, pdf, ou csv : pratique pour calculer vos dépenses, prix de revient, etc.
  • Vous informer par email / MQTT / Telegram, au choix, sur la fin de charge, les kWh envoyés, une batterie faible, etc.

Voici une rapide vidéo des fonctionnalités ajoutées en date du 14 Janvier 2026 :

Teslamate-Mail continue d’évoluer avec l’aide de plusieurs IA performantes, dont Gemini ou Claude, des outils surpuissants pour coder proprement et rapidement. Le développement n’est pour le moment pas disponible publiquement, encore un peu de patience 😉

TESLAMATE : un email envoyé après chaque recharge !

Vous conduisez une Tesla et utilisez Teslamate ?
Vous vous déplacez parfois chez des amis, de la famille et souhaitez payer le plein de la voiture ?
Voici un script qui va envoyer un email à la fin de chaque recharge :

#!/bin/bash
DB_HOST="192.168.1.193" # IP Teslamate

#
# les informations ci-dessous se trouvent dans le fichier .yml du docker Teslamate
DB_USER="teslamate"
DB_PASS="secret_password"
DB_NAME="teslamate"
EMAIL="email@email.com"  # email du destinataire
STATE_FILE="/var/tmp/teslacharge_last_id"
LOG="/var/log/teslacharge.log"

# Log silencieux
exec 1>>"$LOG" 2>&1
echo "$(date) === LANCEMENT ==="

NEW_ID=$(PGPASSWORD="$DB_PASS" psql -h $DB_HOST -U $DB_USER -d $DB_NAME --no-psqlrc --quiet -t -c "SELECT id FROM charging_processes WHERE end_date IS NOT NULL ORDER BY end_date DESC LIMIT 1;" | tr -d ' \n\r')

OLD_ID=$(cat $STATE_FILE 2>/dev/null || echo "0")

ENERGY=$(PGPASSWORD="$DB_PASS" psql -h $DB_HOST -U $DB_USER -d $DB_NAME --no-psqlrc --quiet -t -c "SELECT charge_energy_added FROM charging_processes WHERE id=$NEW_ID;" | tr -d ' \n\r')

echo "$(date) Dernière: ID$NEW_ID $ENERGY kWh (old:$OLD_ID)"

if [[ "$NEW_ID" =~ ^[0-9]+$ && "$NEW_ID" > "$OLD_ID" ]]; then
  SUBJECT="TeslaMate: Charge NOUVELLE $ENERGY kWh"
  BODY="Nouvelle session terminée !

• ID: $NEW_ID
• Energie ajoutée: $ENERGY kWh
• Timestamp: $(date)"

  echo "$BODY" | mail -s "$SUBJECT" -r noreply@monwifi.fr $EMAIL
  echo "$NEW_ID" > "$STATE_FILE"
  echo "$(date) ✅ EMAIL ENVOYÉ ID$NEW_ID $ENERGY kWh"
else
  echo "$(date) ⏭️ Pas nouvelle charge"
fi

Générer une vidéo simple à partir d’images

Parfois il est utile de pouvoir regrouper des images sous forme d’une vidéo MP4 toute simple, juste pour faire un diaporama. Vous allez me dire, Google Photo le fait, oui MAIS ce truc a la mauvaise idée de recadrer, et donc de zapper la moitié de vos captures d’écran par exemple, pas génial donc.

Voici le script generevideo.sh qui va tout solutionner :

#!/bin/sh

# 1. Configuration du nom de sortie
printf "Nom de la vidéo (par défaut 'video.mp4') : "
read input_name
if [ -z "$input_name" ]; then
    OUTPUT="video.mp4"
else
    # On ajoute .mp4 si l'utilisateur l'a oublié
    case "$input_name" in
        *.mp4) OUTPUT="$input_name" ;;
        *)     OUTPUT="$input_name.mp4" ;;
    esac
fi

TEMP_LIST="list_clips.txt"
DUR=3
printf "" > "$TEMP_LIST"

# 2. Découverte et choix du fichier audio
echo "Recherche de fichiers audio..."
i=1
AUDIO_FILES=$(ls *.mp3 2>/dev/null)

if [ -z "$AUDIO_FILES" ]; then
    echo "Aucun fichier .mp3 trouvé dans le dossier."
    AUDIO_INPUT=""
else
    echo "Choisissez la musique (tapez le numéro ou Entrée pour aucune) :"
    for f in $AUDIO_FILES; do
        echo "$i) $f"
        i=$((i + 1))
    done

    printf "Votre choix : "
    read choix

    if [ -n "$choix" ]; then
        AUDIO_INPUT=$(echo "$AUDIO_FILES" | sed -n "${choix}p")
    fi
fi

if [ -n "$AUDIO_INPUT" ]; then
    echo "Musique sélectionnée : $AUDIO_INPUT"
else
    echo "Aucune musique sélectionnée."
fi

# 3. Création de clips individuels (respect total de la taille d'origine)
images=$(ls tmm* 2>/dev/null | sort -V)

for f in $images; do
    if ffmpeg -v error -i "$f" -f null - 2>/dev/null; then
        echo "Traitement de $f..."
        # On force l'arrondi à 2px (parité obligatoire) sans changer la taille réelle
        ffmpeg -y -loop 1 -i "$f" -t "$DUR" \
            -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2:(ow-iw)/2:(oh-ih)/2:black,format=yuv420p" \
            -c:v libx264 -pix_fmt yuv420p -r 25 "part_$f.ts"
        
        echo "file 'part_$f.ts'" >> "$TEMP_LIST"
    fi
done

# 4. Assemblage final
if [ -s "$TEMP_LIST" ]; then
    echo "Fusion finale vers $OUTPUT..."
    if [ -n "$AUDIO_INPUT" ] && [ -f "$AUDIO_INPUT" ]; then
        ffmpeg -y -f concat -safe 0 -i "$TEMP_LIST" -i "$AUDIO_INPUT" \
            -c copy -c:a aac -shortest "$OUTPUT"
    else
        ffmpeg -y -f concat -safe 0 -i "$TEMP_LIST" -c copy "$OUTPUT"
    fi
else
    echo "Erreur : Aucun fichier valide n'a été traité."
    exit 1
fi

# 5. Nettoyage et rapport
rm -f part_tmm* "$TEMP_LIST"
echo "------------------------------"
echo "Fichiers images utilisés :"
echo "$images"
echo "------------------------------"
if [ -n "$AUDIO_INPUT" ]; then
    echo "Audio utilisé : $AUDIO_INPUT"
fi
echo "Vidéo générée : $OUTPUT"
echo "vidéo terminée"

Chaque image s’affichera durant 3 secondes, mais tu peux sans soucis régler ce temps à volonté depuis le script. Tu peux même ajouter un fichier audio au format mp3, le script demandera quel fichier utiliser.
Place le script dans le répertoire de tes images, lance le script avec bash generevideo.sh . Il va demander le nom de la video (video.mp4) par défaut, et le fichier audio à choisir s’il existe.

Vous obtiendrez un list.txt qui listera les images détectées, pratique pour vérifier si besoin.
Ce script a été initialement généré par Gemini, puis modifié.

Envoyez l’heure de coucher du soleil en MQTT

Voici un script Python3 qui permet d’envoyer une trame MQTT formatée json sur le topic de votre choix, contenant l’heure de coucher du soleil. Ici, en vous abonnant à home/sunset, vous recevrez par exemple :

{« sunset_time »: « 17:41:25 », « latitude »: 47.4108, « longitude »: -2.1692, « timestamp »: « 2026-01-11T16:14:45.542727 »}
Notez qu’il est possible de n’avoir que l’heure en modifiant le code comme suit :

# AVANT (JSON)
payload = {
    "sunset_time": sunset_time,
    "latitude": lat,
    "longitude": lon,
    "timestamp": datetime.now().isoformat()
}
result = client.publish(topic, json.dumps(payload), qos=1, retain=True)

# APRÈS (texte simple)
result = client.publish(topic, sunset_time, qos=1, retain=True)
```

Voici le script Json de base :

#!/usr/bin/env python3
"""
Script pour publier l'heure de coucher du soleil via MQTT
"""

import requests
from datetime import datetime
from zoneinfo import ZoneInfo
import paho.mqtt.client as mqtt
import json

# Configuration MQTT
MQTT_BROKER = "localhost"  # Adresse de votre broker MQTT
MQTT_PORT = 1883
MQTT_TOPIC = "home/sunset"
MQTT_CLIENT_ID = "sunset_publisher"
MQTT_USERNAME = "username"      # Remplacez par votre login
MQTT_PASSWORD = "mot_de_passe"  # Remplacez par votre mot de passe

# Configuration localisation - CROSSAC, France
LATITUDE = 47.4108
LONGITUDE = -2.1692
TIMEZONE = "Europe/Paris"  # Fuseau horaire français (gère CET/CEST automatiquement)

def get_sunset_time(lat, lon, timezone="Europe/Paris"):
    """
    Récupère l'heure de coucher du soleil via l'API sunrise-sunset.org
    Retourne l'heure en heure locale du fuseau horaire spécifié
    (gère automatiquement heure d'été/hiver)
    """
    url = f"https://api.sunrise-sunset.org/json?lat={lat}&lng={lon}&formatted=0"
    
    try:
        response = requests.get(url, timeout=10)
        response.raise_for_status()
        data = response.json()
        
        if data['status'] == 'OK':
            sunset_utc = data['results']['sunset']
            # Conversion en objet datetime UTC
            sunset_dt = datetime.fromisoformat(sunset_utc.replace('Z', '+00:00'))
            
            # Conversion en heure locale du fuseau horaire spécifié
            tz = ZoneInfo(timezone)
            sunset_local = sunset_dt.astimezone(tz)
            
            # Format avec indication du fuseau horaire
            heure_locale = sunset_local.strftime("%H:%M:%S")
            fuseau = sunset_local.strftime("%Z")  # CET ou CEST
            
            print(f"  Heure UTC: {sunset_dt.strftime('%H:%M:%S')} UTC")
            print(f"  Heure locale: {heure_locale} {fuseau}")
            
            return heure_locale
        else:
            return None
    except Exception as e:
        print(f"Erreur lors de la récupération du coucher de soleil: {e}")
        return None

def publish_sunset(broker, port, topic, lat, lon, timezone="Europe/Paris"):
    """
    Publie l'heure de coucher du soleil sur le topic MQTT
    """
    sunset_time = get_sunset_time(lat, lon, timezone)
    
    if sunset_time is None:
        print("Impossible de récupérer l'heure du coucher de soleil")
        return False
    
    # Création du payload
    payload = {
        "sunset_time": sunset_time,
        "latitude": lat,
        "longitude": lon,
        "timestamp": datetime.now().isoformat()
    }
    
    try:
        # Connexion au broker MQTT
        client = mqtt.Client(client_id=MQTT_CLIENT_ID)
        
        # Authentification
        client.username_pw_set(MQTT_USERNAME, MQTT_PASSWORD)
        
        client.connect(broker, port, 60)
        
        # Publication du message
        result = client.publish(topic, json.dumps(payload), qos=1, retain=True)
        
        if result.rc == mqtt.MQTT_ERR_SUCCESS:
            print(f"✓ Message publié sur {topic}")
            print(f"  Coucher du soleil: {sunset_time}")
            print(f"  Localisation: {lat}, {lon}")
            return True
        else:
            print(f"✗ Erreur lors de la publication: {result.rc}")
            return False
            
    except Exception as e:
        print(f"Erreur MQTT: {e}")
        return False
    finally:
        client.disconnect()

if __name__ == "__main__":
    # Exemple d'utilisation
    publish_sunset(
        broker=MQTT_BROKER,
        port=MQTT_PORT,
        topic=MQTT_TOPIC,
        lat=LATITUDE,
        lon=LONGITUDE,
        timezone=TIMEZONE
    )

Ce script a été en partie généré par Claude AI

Proxmox sur iMac 5K 2019 : autoboot

Si, comme moi, vous avez un « vieil » iMac 5K 2019 et que vous vous lancez sur Proxmox, vous allez rapidement vous demander comment le faire redémarrer automatiquement en cas de coupure de courant…

Avec le fonctionnement interne de cet ordinateur, rien n’est simple, mais la solution est relativement rapide. Commencez par arrêter l’ordinateur en maintenant le bouton d’allumage enfoncé pendant 15 secondes.

Rallumez le et tout de suite après, avant l’apparition du logo Apple, enfoncez trois touches sur le clavier : ⌘ Command + R

Patientez, patientez, patientez jusqu’à l’apparition d’un écran de réinstallation. Là, rendez-vous dans le menu Options pour lancer le TERMINAL.

Dans le Terminal, entrez :

nvram AutoBoot=%03

Puis vérifiez :

nvram -p | grep AutoBoot

Entrez alors la commande Reboot et laissez votre iMac relancer Proxmox.

Débranchez alors le cordon secteur, rebranchez le : l’iMac va redémarrer tout seul, vous avez réussi !

Des trames MQTT avec Alexa

Vous vous êtes sans doute demandé comment on pouvait envoyer des trames MQTT avec Alexa et ainsi profiter de plus de fonctionnalités domotiques.
Commencez par installer le skill URL SWITCH sur votre Alexa :

Activez le skill depuis votre App Alexa puis rendez-vous sur https://www.virtualsmarthome.xyz/ pour venir créer vos interrupteurs, ces switches virtuels qui permettront d’interagir avec vos trames MQTT. Ici, nous avons créé volet salon, un switch destiné à télécommander l’ouverture et la fermeture des volets du salon :

Vous l’aurez compris, l’envoi d’une commande https suppose d’avoir un serveur hébergé, un p’tit VPS tout simple par exemple chez Pulsheberg que nous avons souvent utilisé pour nos dev, avec leur offre de base VPS Cloud à 5 ou 6 € par mois, largement suffisante pour héberger votre serveur Mosquitto, un certificat Let’s Encrypt et un Apache 2 pour vos pages de gestion Web en html ou php. Je passerai sur l’installation d’un serveur, d’Apache2 ou de PHP, c’est décrit un peu partout sur le web, la difficulté ne sera pas là 😉

Nous allons créer deux fichiers :

  • alexa.php pour faire l’appel vers un script python, hébergé sur /var/www/html de votre Apache 2
  • sendmessage.py, un script python hébergé sur /var/www/html/cgi-bin/sendmessage.py pour venir répondre aux commandes d’alexa.php et envoyer les trames MQTT

ALEXA.PHP :

<?php
// alexa.php

function sendMQTTMessage($topic, $message) {
    // On échappe chaque argument séparément pour éviter les injections shell
    $topicArg   = escapeshellarg($topic);
    $messageArg = escapeshellarg($message);

    $command = "python3 /var/www/html/cgi-bin/sendmessage.py $topicArg $messageArg";
    $output  = shell_exec($command);

    return $output;
}

// Récupération des paramètres depuis l’URL, par ex. :
// alexa.php?topic=maison/salon&message=allume+lampe
$topic   = isset($_GET['topic'])   ? $_GET['topic']   : '';
$message = isset($_GET['message']) ? $_GET['message'] : '';

// Un minimum de validation
if ($topic === '' || $message === '') {
    http_response_code(400);
    echo "Paramètres manquants. Utilisation : alexa.php?topic=xxx&message=yyy";
    exit;
}

// Appel du script Python
$result = sendMQTTMessage($topic, $message);

// Retour simple (à adapter selon tes besoins : JSON, texte, etc.)
header('Content-Type: text/plain; charset=utf-8');
echo "OK\n";
echo "Topic : $topic\n";
echo "Message : $message\n";
echo "Résultat Python :\n";
echo $result;

SENDMESSAGE.PY :

#!/usr/bin/env python3

import os
import sys

# Récupérer les arguments passés en ligne de commande
if len(sys.argv) != 3:
    print("Usage: python3 sendmessage.py <topic> <message>")
    sys.exit(1)

topic = sys.argv[1]
message = sys.argv[2]

# Configuration du broker MQTT
broker = "ip_du_serveur_MQTT"
port = 1883
username = "ton_nom_utilisateur"
password = "ton_mot_de_passe"

# Indiquer que le contenu est du texte brut (facultatif)
print()  # Ligne vide nécessaire

# Commande pour publier le message MQTT
command = f"mosquitto_pub -h {broker} -p {port} -u {username} -P {password} -t {topic} -m '{message}' -r"

# Exécuter la commande
exit_code = os.system(command)

if exit_code == 0:
    print("")
else:
    print("Erreur lors de l'envoi de la trame.")

Pas compliqué, si ?
Pensez à bien ajouter une mise à jour de votre certificat SSL par contre, dans crontab :

0 3 * * * root certbot renew --quiet

Pour protéger votre serveur Web, pensez à ajouter un .htaccess adapté… Vous pourrez alors par exemple envoyer une requête https comme suit :

https://login_htaccess:motdepasse_htaccess@iot.monserveurmqtt.fr/alexa.php?topic=/salon/volet&message=1

pour ouvrir et :

https://login_htaccess:motdepasse_htaccess@iot.monserveurmqtt.fr/alexa.php?topic=/salon/volet&message=1

pour fermer. Le login_htaccess et son mot de passe positionnés au début, suivis par @ permettent de contourner la fenêtre d’authentification du serveur web.

Mais vous pouvez tout à fait désactiver le .htaccess pour le simple fichier alexa.php, avec tous les risques que cela comporte bien entendu, en modifiant .htaccess :

 ===== Désactiver l'auth Basic pour alexa.php =====
# Auth sur tout sauf alexa.php
<FilesMatch "^(?!alexa\.php$).*">
    AuthUserFile /var/www/.htpasswd
    AuthType Basic
    AuthName "My restricted Area"
    Require valid-user
</FilesMatch>

# ===== Redirection HTTPS pour tout sauf alexa.php =====
RewriteEngine On

# EXCLURE alexa.php des redirections
RewriteCond %{REQUEST_URI} !^/alexa\.php$

# Pour tous les autres fichiers : forcer HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Protégez-vous des pubs intrusives en utilisant le DNS

Il est fort probable que vous soyez inondé par un flux incessant de publicités numériques chaque jour. Loin d’être une simple nuisance, cette omniprésence publicitaire représente un risque tangible pour votre sécurité. Une seule publicité malveillante peut suffire à installer un cheval de Troie, un logiciel espion ou même un rançongiciel sur tous vos équipements : ordinateurs, smartphones, tablettes, et même votre Smart TV.

Vous avez peut-être déjà eu recours à des extensions de navigateur performantes, comme uBlock Origin. Cependant, l’utilisation d’une extension nécessite une installation répétée sur chacun de vos appareils connectés. C’est un véritable défi, voire impossible, sur des équipements comme les téléviseurs intelligents ou les navigateurs mobiles qui ne supportent pas ces modules additionnels. Alors, comment assurer une défense cohérente et globale ?

La réponse est de prendre le contrôle de votre réseau domestique à sa source. En agissant au niveau de votre réseau local, vous pouvez bloquer les contenus indésirables avant qu’ils n’atteignent vos appareils. Voici comment procéder.

DNS icon in iOS 17 Outlined style

Votre routeur : la porte d’entrée de la protection

La majorité des réseaux domestiques fonctionnent selon un schéma simple : votre routeur utilise le protocole DHCP (Dynamic Host Configuration Protocol) pour assigner une adresse IP unique à chaque appareil. Il leur transmet également les adresses des serveurs DNS. Dans la plupart des cas, ces serveurs sont ceux par défaut de votre Fournisseur d’Accès Internet (FAI), et ils offrent rarement des fonctionnalités avancées de sécurité ou de confidentialité.

L’astuce consiste à ignorer les serveurs DNS de votre FAI et à configurer votre routeur pour qu’il utilise des serveurs DNS spécialisés dans le blocage de publicités.

Comment configurer un DNS anti-pubs sur votre routeur :

C’est la méthode la plus simple et la plus efficace pour sécuriser votre foyer.

  1. Identifiez l’interface d’administration : accédez à l’interface de gestion de votre routeur. Cela se fait généralement en tapant une adresse comme 192.168.1.1 ou 192.168.1.254 dans la barre d’adresse de votre navigateur.
  2. Localisez les réglages DNS : Naviguez jusqu’à la section des paramètres réseau (souvent appelée WAN, Internet ou DHCP).
  3. Remplacez les adresses : Saisissez les adresses IP d’un service DNS qui filtre activement les publicités et les traqueurs.

Plusieurs services de qualité proposent ces serveurs filtrants :

ServiceAdresses IP du Serveur Filtrant (Primaire / Secondaire)
AdGuard DNS94.140.14.14 et 94.140.15.15
NextDNS45.90.28.152 et 45.90.30.152
ControlD76.76.2.2 et 76.76.10.2
  • Exemple avec NextDNS : Vous entrerez 45.90.28.152 dans le champ DNS Primaire et 45.90.30.152 dans le champ DNS Secondaire de votre routeur.

Important : une fois ces nouvelles adresses configurées, vérifiez que tous vos appareils sont réglés pour obtenir leurs paramètres (y compris les serveurs DNS) automatiquement via le protocole DHCP. De cette manière, le routeur distribuera les adresses des serveurs de blocage à tous les utilisateurs.

Cette méthode s’applique sans soucis sur les hotspots Wifipak, protégeant le réseau WiFi de vos invités/clients.

L’alternative : configuration par appareil

Si vous êtes limité par votre routeur (votre FAI vous empêchant d’en modifier les réglages DNS), vous pouvez contourner le problème en effectuant la configuration manuellement sur chaque terminal. Il vous suffit alors de configurer l’un des ensembles de serveurs DNS mentionnés ci-dessus dans les paramètres réseau (Wi-Fi ou Ethernet) de votre ordinateur, de votre téléphone ou de votre tablette.

Vous trouverez également des routeurs destinés à se connecter à votre Box internet, tel ce routeur « Liberté » proposé pré-configuré chez Monwifi.fr.

En adoptant cette approche centralisée, vous transformez votre serveur DNS en un puissant bouclier pour l’intégralité de votre domicile, assurant une navigation plus rapide, plus propre et surtout plus sûre.

Boulanger pompe vos données, et il n’est pas le seul…

Peut-être avez vous déjà commandé en ligne chez Boulanger, grande enseigne d’électroménager française, oh combien compétente, sauf peut-être sur un détail : la capture discrète de vos données !

Vous allez vous faire livrer, puis vous recevrez un email demandant ce que vous avez pensé de la livraison :

Déjà, noter des humains, je n’aime pas ça, et pourtant tous le font, Chronopost en tête qui demande quel était l’état du camion, etc. Bref, passons… Mais c’est sur la seconde page que le gag arrive :

Là, stupéfaction, en quoi Boulanger, après m’avoir livré un frigo par exemple, peut-il s’intéresser à mon boulot, savoir si je suis homme/femme ou une célèbre chanteur-teuse, « paillasson genré grille-pain » ? A quoi bon savoir si je suis en appart ou maison, si je lou ou non, bref, quel intérêt pour un frigo ?

Eh bien figurez-vous que nombre d’enseignes jouent à ce jeu là, complètent leurs données, les fameuses DATA pour speaker l’angliche, ces données qui permettent, à force de croisements et de recoupements, de constituer une fiche précise de vous, Mme MICHU de Bêzons les Glamouilles, ou vous M. FLAMBYMOU de Tulle : et avec cette fiche, revendue en masse par nombre d’exploitants, on peut ainsi vous cibler le mieux possible :

Vous êtes une femme, en appart, 70 ans, allez zou, récupérons le fichier de Rance 3 et proposons des douches avec sièges, des protections anti-fuites. Vous avez une maison ? On va rajouter les monte-escaliers Nanard pour vous éviter trop d’effort pour rejoindre l’étage !! Vous êtes un mec de 75 ans ? Ajoutons MolleProstate pour revivifier votre MMS : le Matin / Midi / Soir s’est depuis transformé en Mars / Mai / Septembre, il est temps de faire quelque chose !! 🙂

Tu es un jeune post-ado de 35 ans ? En couple ? 3 enfants ? un break ? un chien ? une maison ? Waouuuh, jackpot !!! Tu vas avoir droit aux croquettes pour toutou, aux séjours en village-club-vacances avec garde chieurs gratos, à des offres dingues sur les véhicules PeuGel et leurs célèbres moteurs PureM…de (faut bien écouler les stocks !!!), des abonnements à 50% sur Tain-d’or, et j’en passe.

Tout ceci est ironique, mais c’est bien réel, n’imaginez pas une seule seconde que ces enseignes là cherchent à « mieux vous connaitre »… Perso, j’aurais tendance à leur facturer mes données, puisqu’elles sont ensuite utilisées pour faire du fric, et vous ?

Hotspot et caméras ?

Et si vous profitiez d’avoir un hotspot WiFi, avec un enregistreur de connexions qui fonctionne sous linux, pour venir y installer un serveur Web et mettre à disposition de vos utilisateurs les clichés instantanés d’une ou plusieurs vues des caméras IP de votre établissement ?

C’est ce qui motive le projet de Monwifi actuellement en version Beta, avec une interface d’administration pour ajouter et supprimer les caméras :

et une interface de visualisation destinée à vos utilisateurs et clients :

Ici nous avons choisi de capturer le flux de 3 caméras en montage, dont celle de Chamonix, excusez nous du peu 😉
Si vous cliquez sur une image, un onglet s’ouvre et elle s’affiche en pleine résolution, permettant aisément de zoomer. Cette page fonctionne sur PC, smartphone, ou tablette, bien entendu.

Imaginons maintenant que vous exploitiez un établissement avec une piscine : les utilisateurs de votre hotspot wifipak vont pouvoir visualiser en temps semi-réel l’occupation du bassin, je dis bien semi-réel car il n’est pas question d’être intrusif et de diffuser un flux vidéo, uniquement d’afficher un snapshot, c’est à dire une capture d’écran à un instant t.
De même, une caméra IP sur un parcours de golf, sur une terrasse de restaurant, sur une plage privée vous offriront la même possibilité : on y va ? on n’y va pas ? Trop de monde ? Y’a personne ?!
Mais on peut également imaginer visualiser une aire de jeux pour voir que le p’tit dernier s’amuse bien, sans risques.

Revenons à l’administration de ces captures, peut-être avez-vous remarqué ce détail :

RTSP ? Oui, rtsp, ce protocole sur pratiquement toutes les caméras IP qui permet de visualiser le flux vidéo. Toutes les caméras ne font hélas pas de snapshot, à l’instar des TP-Link TAPO : il faut dans ce cas pouvoir capturer le flux vidéo et en extraire une image à un instant donné, lors de cette rapide capture, avant de l’afficher.

Vous aurez ainsi le choix de plusieurs modèles de caméras, soit avec un flux RTSP, soit avec une capacité de snapshot. Nous avons pour le moment testé les caméras Ubiquiti, après avoir activé le snapshot dans l’interface d’administration de chaque caméra. Les caméras TAPO TP-Link refusent elle systématiquement la capture rtsp, aussi avons nous décidé de tester un matériel Imou :

Affaire à suivre… nous allons rapidement découvrir si ce matériel nous offrira toutes les fonctionnalités attendues, car à ce tarif (< 50 €), il ne manque pas de qualités 😉

Evolution des fonctionnalités :

Comment faire évoluer l’interface ? Cela va dépendre des idées de nos clients, il faudra dans un premier temps tester un prototype, voir si le retour des clients est positif, découvrir quels aspects nous devrons faire évoluer surtout.

Déjà, nous imaginons pouvoir ajouter l’envoi d’une image vers un serveur Web, pour par exemple afficher une vue en temps réel de la plage en face de votre établissement, l’enneigement des pistes de la station, une ligne d’horizon sur les montagnes voisines, ou tout paysage que vous voudrez bien proposer à vos visiteurs internet : un lien sur la caméra, un serveur ftp avec un login et un mot de passe, des heures de fonctionnement en fonction du lever du jour sur un lieu donné, et une fréquence d’actualisation. Simple non ?

L’IA, outil de taille :

Inutile de vous le cacher, nous avons utilisé plusieurs IA pour générer ces interfaces, avec en tête ChatGPT et MistralAI. Nous avons rapidement oublié Gemini par Google car à chaque correction, seule une partie des codes était affichée, nécessitant de redemander sans cesse l’envoi du code entier pour ne pas perdre de temps : en vain, l’intelligence est absente de Gemini pour ce qui concerne le code informatique, il vaut mieux l’utiliser pour trouver des recettes de cuisine ou demander l’âge avancé de Flamby Mou 1er, ex-Mouzident sociamou de la France ;-))))

Ces outils sont fabuleux, rapides surtout, mais en aucun cas ne remplacent totalement, pour le moment, notre capacité d’analyse et de programmation. Nous les avons éduqués, orientés, modifiés à la main souvent. Cela reste des outils, mais ne nous voilons pas la face, ils sont fabuleusement utiles !

Conclusion :

Si le projet vous intéresse, si vous utilisez ou voudriez utiliser un hotspot Wifipak, n’hésitez pas à nous faire signe sur Monwifi.fr pour devenir Beta-testeur dès que le projet sera un peu plus avancé.
A terme il pourrait bien s’ouvrir à d’autres matériels hotspot en ne s’utilisant que comme serveur Web et serveur de capture d’images, qui sait…