| |

Effaroucheur à oiseaux sur Raspberry Pi

La saison de la chasse à neuneus est de retour, voici venu le temps de tir dans les champs, la chasse à ces dangereux volatiles, les pigeons par exemple, une espèce sauvagement invasive qu’il ne faut surtout pas hésiter à détruite jusqu’au bout 😉

Si vous aussi les nuisances sonores de ces intellectuels à fusils vous brouillent l’écoute, voici une solution basée sur un simple Raspberry Pi en python 3 :

import pygame
import time
import random
import paho.mqtt.client as mqtt
from datetime import datetime

# Initialisation du mixer de pygame
pygame.mixer.init()

# Liste des fichiers audio
audio_files = ["faucon.mp3", "aigle.mp3", "buse.mp3"]

# Variables de contrôle
mqtt_broker = "iot.tonserveur.fr"
mqtt_port = 1883
mqtt_topic = "/raspibuse"
mqtt_username = "ton_login"
mqtt_password = "ton_mot_de_passe"

# État du script (activé/désactivé)
script_active = False

# Jouer le son de démarrage une seule fois
def jouer_son_demarrage():
    print("🎵 Lecture du son de démarrage : buse.mp3")
    pygame.mixer.music.load("buse.mp3")
    pygame.mixer.music.play()

# Fonction de lecture audio
def jouer_audio():
    global script_active

    while True:
        if script_active:
            fichier_audio = random.choice(audio_files)
            pygame.mixer.music.load(fichier_audio)
            print(f"Lecture de : {fichier_audio}")

            pygame.mixer.music.play()

            while pygame.mixer.music.get_busy():
                pygame.time.Clock().tick(10)

            print("Lecture terminée à :", datetime.now().strftime("%H:%M:%S"))

            # Pause aléatoire entre 20 et 120 secondes
            pause = random.randint(20, 120)
            print(f"Pause de {pause} secondes...\n")
            time.sleep(pause)
        else:
            time.sleep(1)

# Callback de connexion MQTT
def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("✅ Connexion MQTT réussie")
        client.subscribe(mqtt_topic)
    else:
        print(f"⚠ Échec de la connexion MQTT, code {rc}")

# Callback de réception d'un message MQTT
def on_message(client, userdata, msg):
    global script_active

    message = msg.payload.decode("utf-8").strip()
    print(f"📩 Message reçu: {message}")

    if message.upper() == "ON":
        script_active = True
        print("🔊 Activation du script")
    elif message.upper() == "OFF":
        script_active = False
        pygame.mixer.music.stop()
        print("🔇 Désactivation du script")

# Jouer le son de d  marrage
jouer_son_demarrage()

# Configuration du client MQTT
client = mqtt.Client()
client.username_pw_set(mqtt_username, mqtt_password)
client.on_connect = on_connect
client.on_message = on_message

# Connexion au broker MQTT
client.connect(mqtt_broker, mqtt_port, 60)
client.loop_start()

# Démarrage du script
jouer_audio()

Le script va lancer au choix 3 sons : faucon (pas ceux avec les fusils qui sont des vrais, ne confondez pas), buse, et aigle. Vous pouvez choisir une pause entre 20 et 120 secondes, aléatoire.

Venez ajouter sur la sortie audio du Pi un amplificateur audio à moins de 40 € sur Amazon :

et associez le à un haut-parleur étanche et directif, toujours sur Amazon, dans les 20 € :

Bonne nouvelle, vous allez pouvoir activer l’effaroucheur via un serveur MQTT, cf le script, en envoyant /raspibuse ON ou OFF selon vos besoins. Pratique pour l’activer à distance si besoin.

Je ne détaille volontairement pas l’installation des librairies Python et tous les détails, au besoin Google ou ChatGPT pourront vous aider sur les commandes à utiliser.

Publications similaires

  • Vigilance29 s’inquiête du Wimax

    Le collectif Vigilance29 s’inquiète des risques sur le projet Wimax du département du Finistère, c’est ce que rapporte un article du Télégramme de Brest. Seulement voilà, la crédibilité de la démarche tombe rapidement quand on nous parle de pluie, de brouillard et de la confidentialité des données, le tout mélange avec un prétendu risque sanitaire. Là encore, on ne s’inquiète toujours pas des plus gros « pollueurs » hertziens que sont les émetteurs de télévision, crachant des kilowatts pour les plus faibles,…

  • | |

    Bouygues s’inquièterait ?

    Hier, Nième appel masqué sur le mobile : je décroche, et comme prévu, MON conseiller PERSONNEL Bouygues Telecom qui tient absolument à me remercier d’être chez eux, et dit être heureux de m’avoir comme client, blablabla…. Je l’ai donc poliment salué, l’ai remercié, et lui ai fait remarquer que pour la Nième fois j’avais demandé à ne pas faire l’objet de démarchage téléphonique, que j’étais parfaitement adulte, capable de choisir moi même mes forfaits, mes options, et lui ai souhaité…

  • |

    Glossaire : POE

    Power Over Ethernet (POE), un dispositif simple utilisant une paire de fils inutilisés sur les quatre que contient un câble STP ou UTP, afin d’alimenter certains appareils d’un réseau Ethernet, tels des téléphones IP, des disques durs réseau, des imprimantes, des webcams, des modules WiFi, etc. Le petit nom du PoE est IEEE 802.3af, c’est ce que vous retrouverez sur la fiche technique des produits. IEEE est aussi en train de travailler sur IEEE 802.3at qui permettra de délivrer plus…

  • Netflix : le test…

    Netflix France n’apporte pas le service escompté, en tout cas pas autant de service et de choix que la version américaine, la faute à nos lois franco-françaises qui imposent des délais incroyablement longs dans un monde devenu numérique, à croire que nos têtes pensantes restent encore le doigt sur la couture du pantalon, aux ordres des ayants droits eux aussi bloqués dans le passé. Oui, ce blocage n’est pas de la faute de Netflix qui ne fait qu’appliquer une triste…

  • #Chronopost : dégradation du service

    Le moins que l’on puisse dire, c’est que le service clients de Chronopost est actuellement sérieusement dégradé. Un exemple très concret qui nous occupe depuis bientôt 3 mois. Le 17 Octobre, nous expédions une commande en Chronopost sur Paris. La livraison était prévue le jour suivant, le 18. Surprise, le 18 le suivi internet nous indique : « Destinataire inconnu à l’adresse indiquée » Après plusieurs jours, pas un seul appel de Chronopost bien entendu pour tenter de comprendre ce qui ne va pas,…

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.