Archives de catégorie : Non classé

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

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

ChatGPT, l’outil du fainéant ?

Vous aussi vous avez sans doute déjà réinstallé un ordinateur, suite à un plantage logiciel ou matériel. Ici, pas de Winchose, pas de Winbug, et encore moins de Windose, non, que du stable, du fiable, du Linux, en général sous Kubuntu, largement exploitable pour le travail de tous les jours, voir pour surfer sainement à la maison.

Sauf que parfois il faut réinstaller, oh pas aussi souvent que les trucs de Microchose, mais ça arrive, soyons réalistes. Alors même si nous savons manier les commandes apt install pour tout remettre en état, l’idée d’un script s’est imposée lentement :

Pas mal non ? Le serveur Apache2 est utilisé pour des pages PHP liées au serveur domotique, Mosquitto va générer des flux MQTT pour certains appareils, Transmission pour d’éventuels Torrent (les distri Linux en utilisent beaucoup), TeamViewer pour dépanner les PC de clients, d’amis, ou de la famille, WireGuard pour des usages déportés, Thunderbird pour la messagerie, Brave pour éviter les pubs toxiques en surfant, etc.

Le script généré par ChatGPT a bien entendu été lu, contrôlé, modifié, et soumis de nouveau à l’IA : l’IA est un outil, ce n’est pas LE faiseur de scripts, juste un outil qui va vous pondre des lignes de codes en quelques secondes. Il va récupérer les configurations importantes depuis un disque SATA externe, disque servant juste de backup, un peu comme une Time Capsule chez la Pomme : config Wireguard, fichiers html et php, scripts CGI pour Apache2, etc.

C’est plutôt propre non cette copie d’écran ? ChatGPT commente, argumente, explique, sans qu’il ne soit utile de lui demander.

Et à la fin il vérifie que tout est bien actif, installé :

Et vous, vous aussi vous utilisez ChatGPT ? Quels sont vos usages avec des scripts ou du code ?

FSD : le mauvais choix de Tesla ?

Si vous appréciez les voitures électriques et attendez avec une certaine impatience la conduite totalement autonome ou supervisée, sachez tout de même raison garder, sous peine de vous classer illico-presto parmi les fanboys de St Musk, le génie facho visionnaire que nous connaissons tous et sa multitude d’influ-suceurs sur Twitter chargés de propager la sainte parole du grand gourou 😉

Selon St Musk, une voiture avec de simples caméras offre un choix largement supérieur aux concurrents ayant décidé d’utiliser les LIDARs, ces petits radars un brin plus coûteux, capables toutefois de visualiser l’environnement sur plusieurs centaines de mètres.

A contrario, la bête caméra sera rapidement stoppée en cas de pluie forte, de luminosité mal dirigée ou mal traitée, de brume ! Imaginez donc un avion se poser avec le seul regard, sans utiliser les autres aides de radionavigation, les capteurs de sol, le radar d’approche : personne ne voudrait monter dedans, personne n’irait construire une telle stupidité, et pourtant, dans le monde merveilleux des voitures, St Musk nous dit tout le contraire.

Qu’il ait raison ou pas, peu importe, mais il reste un autre problème : faire payer 8000 € pour une option qui devrait un jour peut-être arriver en Europe, dès que nos instances frileuses auront décidé de sauter le pas pour une conduite autonome. Et là, une telle somme face à des concurrents chinois, Xpeng en tête, ne passera pas :

Image

Chez Xpeng, leur conduite XPILOT est déjà intégrée aux véhicules, ce n’est pas une option juteuse, c’est déjà dedans, prêt à fonctionner une fois les lois européennes modifiées !

De ce fait, qui ira payer chez T€$la le prix fort ? QUI ? Déjà que l’image de la marque, oh combien géniale et fabuleuse, a été fortement écornée par les débilités politiciennes de St Musk, que restera-t-il alors comme attrait face aux concurrents chinois, équipés de Lidar et de vision par caméras ? Oui car les chinois eux arrivent à fonctionner avec les 2 systèmes, ils arrivent à décider lequel des 2 fonctionne, ils arrivent à tout gérer, et c’est bien là le drame pour St Musk qui tient encore des propos à côté de la plaque.

Lisez l’article très détaillé sur ce blog, il vous donnera sans doute une idée plus précises des tenants et aboutissants, des mensonges et délires du grand gourou.

 

 

L’électrique tombe pile…

La tendance 2023 est à ce que j’appelle souvent le « bobo-écolo-bio ». Les plus cruches d’entre nous vont alors interdit la viande, mesurer le pourcentage de gaz dans les pets de vaches, s’élever contre le barbecue, critiquer les piscines alors que le frangin en possède une immense, dégonfler les pneus des gros SUV en ville, etc. La mode est à l’auto-justice par ces extrémistes bio-sourcés, ceux qui iront souvent vous faire un selfie depuis l’autre bout du monde, en vous demandant de ne voler que 2 fois dans votre vie pour ne pas trop générer de CO2…

Bref, vous l’aurez compris, ces tendances à la bien-pensance verte me brouillent l’écoute, et c’est peu dire. Mais alors que faire ? Juste essayer d’apporter sa p’tite pierre à l’édifice d’un monde plus vert, comme par exemple en montant ses panneaux solaires (3000 € investis en fonds propres, sans aucune aide ni subvention pour 3 kW environ), en récupérant son eau de pluie (environ 1000 € en ayant en plus creusé deux bassin remplis de poissons rouges qui adorent dévorer les larves de moustiques, avec 3 m3 de réserve d’eau pour arroser, laver la voiture en été), ou plus récemment réfléchir à un changement d’énergie sur la voiture.

La voiture oui, ce truc qui coûte un fric de dingue en fluides, en mécanique, et en remplissage du réservoir justement. Ma réflexion s’est basée sur plusieurs bases :

  • un véhicule essence va commencer à coûter de l’argent en dépassant les 60 000 km : embrayage, boite de vitesse, distribution, vidanges régulières, etc.
  • un véhicule électrique (VE) durera plus longtemps, il n’est pas rare de voir des Tesla au delà de 200 000 km avec des performances toujours au top.
  • un VE nécessitera moins d’entretien sur la durée car plus « simple », plus durable sur le papier.
  • un VE nécessite un chargement à domicile pour être rentable, environ 12 € le « plein » sur une Tesla avec un kWh à 0,22 € actuellement, sans compter l’apport du solaire sus-mentionné.
  • l’autonomie d’un VE de 300 à 400 km suppose de pouvoir, sur un long trajet, se recharger VITE et simplement : pas question de poireauter 45 mn pour un plein comme sur une Zoé, même si la Zoé reste adorable pour un usage urbain et péri-urbain, ne vous méprenez pas. Mais en campagne, c’est non d’office.
  • Quel est le bonus écolo pour basculer en VE ? Quelles aides ? Quelle reprise d’un véhicule essence encore en bon état ?

Tout ceci a abouti rapidement à un changement, direction Tesla pour tester dans un premier temps le Model Y :

Effectivement, une TMY avec 4 roues motrices, ça vous colle au siège, et le fonctionnement « one pedal », avec juste la pédale de droite pour accélérer et s’arrêter, c’est déroutant mais tellement bien avec un peu d’expérience.

Mais vous allez me dire que je n’achète pas français !! Ben en fait, après avoir fait le tour des véhicules livrables facilement et rapidement, après avoir fait le tour des fonctionnalités intégrées d’office, le tour des tarifs surtout, tout pointait vers Tesla. Je détaille un peu plus ?

  • Renault : par expérience, comme leur slogan, « des voitures à vivre »… au garage. J’ai donné, j’ai testé, j’ai vu un ami avec une Zoé habituée du garagiste local incapable de solutionner le bug, non merci, le « sévisse » est en dessous de tout, sans compter que tout ce qui se trouve déjà dans une Tesla est en option chez le Losange, et on ne parlera même pas des délais de livraison à rallonge, des soucis informatiques par la suite (un partenaire sur E-Tech est à sa 5ème visite au garage, sans trouver de solution…). Je ne voulais pas vivre au garage, je voulais rouler, juste rouler et surtout pas de recharge en 40 mn sur de longs trajets.
  • Citroën : ils font des VE ? ah bon ? Capacité de charge ? Bof..
  • MG : oui, superbe, mais petite, trop petite pour moi, et la finition « tinoise » me laissait dubitatif.
  • Kia : pas les moyens, next !
  • Hyundai : oui, sympa, mais petite
  • BYD : délais de dingue, on oublie.
  • Tesla : TM3, trop basse mais sympa. TMY, super SUV, habitable, immense, camping possible vue la place. Les autres modèles sont hors de prix.

Pour faire court donc, essayer la TMY c’est l’adopter, et en 9 jours le véhicule était livré, rapidement son premier plein fait au Super Chargeur (SuC) de Rennes :

La facilité de commande est dingue, tout se fait en ligne, pas de concessionnaire avec jolie moquette, pas de « pouffe-Ken » ou « pouffe-Barbie » pour accueillir le client en costume moule-cul ou jupette sexy (ou c’est volontairement cliché, quoique…), pas de « what-else » et de faux sourires pour vous faire patienter sur un canapé coulant, non, c’est simplifié au maximum, à tel point que vous réceptionnerez la Belle au fond d’une zone industrielle, sur un parking, avec un simple algéco pour finaliser les opérations, avec cette fois un « what-else » caféiné ou une bouteille d’eau à bulles : simple, rapide, efficace, du grand Tesla !

Maintenant, il fallait réfléchir à alimenter la bestiole, car si au début une prise de 16 A suffit, avec le câble à moitié coincé dans la porte, ça ne pouvait pas durer. La solution passait par du 30 A :

Une embase P17 protégée de la pluie en extérieur, un raccord Tesla adapté, un câble de 6 mm2, un tableau électrique dédié avec différentiel 40 mA, disjoncteur 32A connectés et le tour est joué :

La Tesla charge sous 24 A maximum, évitant de surcharger le compteur électrique, mais je n’ai constaté aucun soucis à 30 A, la puissance se réglant facilement depuis la voiture ou l’App de gestion.

Il restait maintenant à rouler, comprendre comment se charger simplement, où, et à quel tarif. Disons le directement, évitez les voleurs de Total et leurs tarifs aussi dingues que sur l’essence, optez directement pour les SuC Tesla, IECharge, Lidl, SuperU, Carrefour par exemple si vraiment vous n’avez pas la possibilité de charger à domicile :

Ici, une station IECharge en cours d’installation quelque part vers Ancenis (44), toujours proche d’une ligne électrique haute tension mais sans aucune commodité proche : si vous voulez manger, faire un p’tit pipi, il faut aller chez Ionity, Tesla ou autres à proximité des autoroutes par exemple. L’avantage d’IECharge, c’est 30 cts/kWh et la gestion de l’auto-charge sur Tesla : la borne va vous reconnaître immédiatement, pas besoin de carte bancaire, tout étant déjà mis dans l’App android dédiée : simple, pratique, ergonomique là encore.

Dans l’Ouest, sauf pour une urgence, je déconseille également Ouest Charge : bornes 22 kW pour la majorité, héritières de l’ancien Sydego de Philippe Grosvalet, l’ex-président du Conseil Départemental récemment recasé sénateur pour terminer sa carrière confortablement « à notre service » (lol), un déploiement de petites bornes à une époque où notre Zoé nationale trônait sur les routes, zéro vision future pour des véhicules plus puissants, et au final des bornes peu utilisées, une taxe à chaque charge, bref pas rentable du tout, sauf pour une urgence avec la batterie vide :

Seul avantage, il y en a de partout dans l’ouest, mais encore une fois, c’est de l’urgence, pas plus. On trouve parfois du Sydego en Combo CCS, puissant, mais c’est encore trop rare, comme sur cette photo, même si de plus en plus d’ouvertures se font avec des chargeurs puissants, une volonté d’évolution qu’il faut tout de même saluer :


Avec Ouest Charge, vous devrez débourser 10 € de carte sans contact pour éviter les frais de charge de 1 ou 2 € à chaque fois, rentable donc si vous bougez pas mal en Bretagne et Pays de la Loire.

De nos jours, 50 kW devient un minimum, Lidl, Carrefour, Leclerc, Hyper U et tant d’autres l’ont d’ailleurs parfaitement compris, c’est un attrait pour les clients qui ne chargent pas chez eux.

Rouler et se charger donc, au début c’est « flipette sur la route », on surveille la jauge, on calcule tout, tout le temps. Et rapidement on se détend car on peut charger partout, récemment chez Burger King, même avec 25 kW, le temps d’une glace et de 30 mn pour regagner un peu de batterie, 4,83 € précisément :

Pour se charger, beaucoup de bornes proposent de payer par carte bancaire, mais beaucoup nécessitent encore des cartes de charge. Je vous conseille de prendre les cartes payantes de ChargeMap, Freshmile, et la gratuite de Shell par exemple. Depuis les App, vous aurez également accès à Ionity, FastNed, Electra, etc. Vous y renseignerez vos coordonnées, carte bancaire, et le tour est joué. Pour l’exemple chez Burger King, la carte freshmile n’a pas posé de soucis : flashage au début, puis à la fin pour terminer la session de charge, vraiment simple, ergonomique.

Au final l’expérience est donc un succès, près de 1800 km en 15 jours, l’application Tesla donne des chiffres sympas :

Difficile de savoir comment ils sont calculés, impossible de faire prendre en compte l’apport solaire lors d’une charge, mais la différence est réelle par rapport au thermique, 1800 km auraient coûté 3 pleins à environ 100 € le plein en thermique, les 319 € indiqués ne sont pas totalement à côté de la plaque.

77 € donc sur les 376 kWh chargés, ce qui serait plus 376 x 0,22 kWh = 83 € sur une charge à domicile, loin encore des 300 € en thermique.

On ne parlera pas du confort de conduite d’une Tesla, du silence, des sécurités intégrées, de l’auto-pilot qui gère vitesse/cap/distance de sécurité sur les routes, et bien entendu du coussin péteur intégré aux applications de la voiture, indispensable option facturée 2000 € chez Renault (pléonasme lol) ;-)))))

Mais, car il y a des mais, autant vous ferez un plein d’essence avec n’importe quelle carte bancaire, autant les réseaux électriques ne sont eux pas encore assez ouverts, forçant à avoir 3 ou 4 cartes un tant soit peu universelles pour espérer badger sur n’importe quelle borne. On aurait aimer voir s’imposer l’autocharge, c’est à dire la détection de votre véhicule en partant d’une base de données nationales, l’immatriculation, l’adresse MAC de la voiture, vos données bancaires, par exemple, ou à minima juste pouvoir flasher votre VISA et c’est tout. Cela viendra sans doute par la suite, espérons le, car c’est parfois chiant, le mot est clair et explicite.

Et vous, l’électrique ? Vous y pensez ?

 

DMR radioamateur : débutez simplement

Tu es titulaire d’un indicatif radioamateur ? Tu t’intéresses au numérique, au DMR, sans toutefois n’avoir jamais trop osé sauter le pas ? Ce billet va t’indiquer comment débuter simplement 😉

OBTENTION DE L’ID DMR :

Munis toi d’une copie de ta licence (PDF, photo bien visible) et vas jeter un oeil sur http://dmr-francophone.net/demande-did-dmr

C’est ici que tu feras ta demande d’ID. En retour, un email avec selected DMR-ID: à l’intérieur, un nombre qui commencera toujours par 208, l’identifiant de la France !

ENREGISTREMENT SUR BRANDMEISTER :

Brandmeister c’est un peu l’autoroute des réseaux DMR, tu vas pouvoir te rendre ici pour t’y enregistrer : https://brandmeister.network/?page=register

 

ECOUTER BRANDMEISTER :

Le réseau DMR utiliser des TG, in english, TALK GROUP, des groupes de discussion. En France, chaque TG va débuter par 208, l’identifiant du pays, suivi soit d’un identifiant de région, soit d’un identifiant de département. Pour écoute dès à présent un TG dédié, il faut utiliser https://hose.brandmeister.network/?subscribe=208xx ou « xx » est le département, la région.

Par exemple, dans le nord : https://hose.brandmeister.network/?subscribe=2087

En Loire Atlantique : https://hose.brandmeister.network/?subscribe=20844

Ou https://hose.brandmeister.network/?subscribe=2082055 pour écouter le réseau des relais de Rhône Alpes.

 

EN EMISSION DMR :

Le moment est venu de passer en émission. Soit vous avez craqué pour un transceiver DMR, soit vous allez démarrer bien plus simplement, avec une tablette ou un téléphone Android, en installant Droid Star. Une fois l’application en place, rendez-vous dans Settings pour enregistrer l’indicatif et l’ID DMR associé, et voilà !

Sur la capture d’écran ci-dessous, une connexion au TG 20871, du département 71 donc :

Image

Il suffit de presser TX pour basculer en émission.

Alors oui, on peut aussi utiliser un véritable poste DMR, mais j’y vois quelques inconvénients :

  • s’il n’y a pas de relai DMR ou avec un autre protocole numérique (DStar, C4FM) , il faudra installer votre propre « hotspot DMR » avec un petit RaspberryPi, une platine 433 MHz et le logiciel Pi-Star : là, je vous laissez chercher un peu, les tutos ne manquent pas.
  • s’il y a un relai DMR dans votre zone de couverture, un portable adapté au type de modulation numérique permetra de vous y connecter. Personnellement, je regrette le manque d’ergonomie des portables DMR à bas prix, les chinoiseries comme je les appelle ironiquement, portables où il faut à chaque fois venir programmer les différents canaux, les TG à utiliser, etc. C’est tout sauf simple, surtout si vous avez envie de bouger. J’ai tendance à préférer du matériel plus simple, du Yaesu, un FT-5DE par exemple pour un portable ergonomique et simple, mais vous aurez également le choix sur du mobile à forte puissance.

Nous aurons l’occasion je pense de revenir plus tard sur de nouvelles astuces en DMR. Ne vous leurrez par contre pas trop : nous avons ici une technologie super puissante, permettant de discuter avec le monde entier sans soucis, mais les QSOs sur l’humidité des poireaux ou le furoncle d’XYL persistent et se multiplient toujours. Le DMR est parfois comparable au 40m, vous y trouverez moultes explications sur tel ou tel médicament, sur la température du salon, ou sur le remise en route prochaine de la tondeuse à gazon 😉

A nous donc d’en faire bon usage, de développer nos techniques et nos technologies, sans forcément oublier le côté humain et convivial, mais en faisant plus, en faisant mieux que du QSO jetable 😉

Test platine relai Tuya Zigbee

Sur Aliexpress vous trouverez un nombre impressionnant de platines relais Zigbee. J’ai choisi d’en tester une, la plus simple, donnée comme fonctionnant avec Tuya, mais ce n’est pas ce qui nous intéresse le plus au final : sans cloud chinois, la vie est plus simple, plus folle 😉

Livrée avec un bout de documentation, cette platine fait parfaitement le boulot : elle s’alimente entre 7 et 32V (on ne rigole pas…), dispose d’un bouton d’apairage et d’un bouton de commutation Marche/Arrêt du relai intégré.

Je l’ai mise en association dès l’allumage et mon zigbee2mqtt me l’a immédiatement intégrée au réseau local Zigbee de la maison :

Restait donc à pouvoir commander la bête, switch, c’est le p’tit nom que je lui ai donné après l’avoir renommé dans la console zigbee2mqtt.

Après un peu de recherche sur Zigbee2Mqtt, il semblait évident qu’une trame MQTT avec le mot SET devait déclencher notre Switch, soit avec ON, OFF, ou TOGGLE pour le faire changer d’état. Nous obtenons donc une commande toute simple avec Mosquitto sous Linux :

mosquitto_pub -h mon_serveur_mqtt -u mon_login -P mon_mot_de_passe -t "zigbee2mqtt/switch/set" -m 'ON'

et voici le relai sitôt collé ! Replacez ON par OFF, ou par TOGGLE, et le module continuera de vous répondre. Simple non ?

Pour les plus néophytes, il s’agit ici de discuter avec le serveur Zigbee2Mqtt installé à la maison, répondant au doux nom de zigbee2mqtt, de lui dire que nous parlons à switch et de lui spécifier que nous avons l’intention de changer (set) d’état la position du relai.

Allons plus loin, demandons à la platine l’état du relai :

 mosquitto_pub -h mon_serveur_mqtt -u mon_login -P mon_mot_de_passe -t  "zigbee2mqtt/switch/get" -m '{"state": ""}

et nous recevons ainsi tout un tas d’informations, dont l’état OFF de notre module de test :

zigbee2mqtt/switch/get {"state": ""}

zigbee2mqtt/bridge/logging {"level":"info","message":"MQTT publish: topic 'zigbee2mqtt/switch', payload '{\"linkquality\":171,\"state\":\"OFF\"}'"}

zigbee2mqtt/switch {"linkquality":171,"state":"OFF"}

Notez que la qualité du lien radio est indiqué sur linkquality, pratique pour savoir si votre module est à portée ou en limite de la zone de couverture.

Je vous laisse le soin d’intégrer ces éléments en fonction de vos applications domotiques et de vos besoins précis.

Pour commander la platine sur le site chinois Aliexpress, c’est par ici, lien non affilié, garanti sans publicité : https://fr.aliexpress.com/item/1005002334703783.html

Raspberry Pi Pico W : MQTT et commande de la LED interne

Comment commander la LED interne en toute simplicité sur un Raspberry Pi Pico W ?

Suivez le code ci-après et envoyer le via Thonny par exemple :

import machine
import time
from umqtt.simple import MQTTClient
import network

# Configuration WiFi
ssid = "nom_du_reseau_wifi"
password = "mot_de_passe_wifi"

station = network.WLAN(network.STA_IF)
station.active(True)
station.connect(ssid, password)

while not station.isconnected():
    pass
print("Connexion Wi-Fi établie")


# Configuration client MQTT
mqtt_server = "adresse_serveur_mqtt"
mqtt_port = 1883
mqtt_user = "login_mqtt"
mqtt_password = "mot_de_passe_mqtt"
mqtt_topic = b"/maison/led"
client_id = "wemosd1"
client = MQTTClient(client_id, mqtt_server, mqtt_port, mqtt_user, mqtt_password)

# Set up LED pin
led = machine.Pin("LED", machine.Pin.OUT)

# Define MQTT callback function
def mqtt_callback(topic, msg):
    if topic == mqtt_topic:
        if msg == b"on":
            led.value(1)
            print("LED allumée")
        elif msg == b"off":
            led.value(0)
            print("LED éteinte")

# Subscribe to MQTT topic
client.set_callback(mqtt_callback)
client.connect()
client.subscribe(mqtt_topic)

# Main loop
while True:
    client.check_msg()
    time.sleep(1)

Vous allez pouvoir maintenant tester votre nouveau script en micro-python, par exemple depuis un terminal sous Linux, et allumer la LED interne :

mosquitto_pub -h mon_serveur_mqtt -u mon_login -P mon_mon_de_passe -t "/maison/led" -m "on"

Simple non ? Ce script a été généré à la base par ChatGPT, mais a par la suite été modifié pour corriger quelques erreurs.

 

 

Réutilisation d’un PC portable HS : les batteries

Force est de constater que notre bon vieux Thomson franco-français n’est plus synonyme de qualité, pour preuve leur PC portable tout simple :


La carte mère est tellement compacte qu’il n’y a rien de modifiable, réparable ou améliorable, c’est poubelle directement, non sans avoir au préalable récupéré une dalle d’écran LCD, des HP miniatures, et deux batteries.

Ce sont ces batteries qui vont pouvoir nous servir :

En zyeutant de près, on découvre qu’elles ont été montées en série, fournissant ensemble près de 7.9 V., un peu trop pour être utilisées sur des modules alimentables jusqu’à 5 V… Après quelques coups de fer à souder et après les avoir séparées, voici le résultat une fois reliées en parallèle :

 

La gaine thermo permet de protéger les pattes de sortie entre elles, le scotch d’éviter tout autre contact sur les quelques parties métalliques impossibles à recouvrir totalement. Prochainement, le tout sera branché sur un régulateur de charge, un panneau solaire et un Raspberry Pi Pico W pour quelques essais d’autonomie.

A suivre…

Waveshare e-Paper et Raspberry Pi ZeroW

Waveshare propose des écrans e-Paper de bonne qualité et relativement faciles à installer sur un simple Raspberry Pi Zero W dans notre exemple :

Les instructions d’installation sont sur ce lien.

Le raccordement au Raspberry Pi Zero W est facilité par la présence d’un connecteur JST et de connecteurs à enficher sur le connecteur GpIO de la framboise :

Vous pourrez imprimer en 3D le boitier disponible sur Thingiverse :

En Python, la programmation est relativement simple en installant les librairies epd4in2 disponibles sur Github.

Ces librairies permettront d’afficher une image bmp que vous aurez au préalable générée avec The Gimp par exemple, mais également de venir tracer, via un script Python utilisant PIL, des lignes, des cercles, écrire du texte ou insérer des images comme sur cet exemple d’affichage :

Ici, nous avons récupéré en MQTT les températures et pression locales, via un appel curl les heures de lever et coucher du soleil ainsi que la température à Lyon :

    proc3 = subprocess.Popen(['curl -s http://domogeek.entropialux.com/sun/nantes/sunset/now'], stdout=subprocess.PIPE, shell=True)
    proc4 = subprocess.Popen(['curl -s http://domogeek.entropialux.com/sun/nantes/sunrise/now'], stdout=subprocess.PIPE, shell=True)
    proc5 = subprocess.Popen(['curl -s http://wttr.in/Lyon?format=%t'], stdout=subprocess.PIPE, shell=True)
  
    (out3, err) = proc3.communicate()
    (out4, err) = proc4.communicate()
    (out5, err) = proc5.communicate()
    out5 = out5[:-3]

Les informations récupérées sont stockées dans les variables out3, out4, et out5. A noter qu’out5 supprime les 3 derniers caractères (°C) pour ne pas perturber l’affichage e-Paper.

Pour afficher les images et les re-dimensionner :

    temperature = Image.open('/home/pi/icones/tempelogo.png')
    temperature = temperature.resize((60,60))
    qnh = Image.open('/home/pi/icones/pression.png')
    qnh = qnh.resize((60,60))
    sun = Image.open('/home/pi/icones/sun.png')
    sun = sun.resize((60,60))

    image.paste(temperature,(1,1), temperature)
    image.paste(qnh,(240,1), qnh)
    image.paste(sun,(1,70), sun)

Vous adapterez les noms de fichier selon vos besoins, bien évidemment.

Attention toutefois à ne pas actualiser trop souvent votre écran, les e-Paper ont la réputation de ne pas résister à trop d’appels, sinon passez sur un écran LCD tactile, la version 7″ du Raspberry Pi est relativement sympa et lisible, mais plus gourmande en énergie.