Vous êtes sur la page 1sur 2

Voici un exemple de script Python qui utilise le capteur Eve Motion pour détecter

la présence d'une personne dans la pièce et activer une scène HomeKit


correspondante:

python
Copy code
import time
from pyhap.accessory_driver import AccessoryDriver
from pyhap.const import CATEGORY_SENSOR

# Importez les bibliothèques nécessaires pour communiquer avec le capteur Eve


Motion
from bluepy import btle
from bluepy.btle import Scanner, DefaultDelegate

# Définissez l'adresse MAC du capteur Eve Motion


EVE_MOTION_MAC_ADDRESS = "00:11:22:33:44:55"

# Définissez la fonction qui lit les données du capteur Eve Motion et détermine si
une personne est présente
def read_eve_motion():
scanner = Scanner().withDelegate(DefaultDelegate())
devices = scanner.scan(5.0)
for dev in devices:
if dev.addr == EVE_MOTION_MAC_ADDRESS:
return dev.getValueText(7) == "1"

return False

# Définissez une classe Accessory pour la scène HomeKit


class PresenceSensor(AccessoryDriver):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

# Configurez un service HomeKit pour la détection de présence


self.add_service(CATEGORY_SENSOR, "Presence Sensor")

# Définissez une variable pour stocker l'état actuel de la présence


self.presence_detected = False

# Définissez une méthode pour mettre à jour l'état de la présence et activer la


scène HomeKit si nécessaire
def update_presence(self):
presence_detected = read_eve_motion()
if presence_detected != self.presence_detected:
self.presence_detected = presence_detected
if presence_detected:
# Activer la scène HomeKit si une personne est présente

self.driver.char_driver.update_value(self.driver.get_characteristic('On').aid,
True)
else:

self.driver.char_driver.update_value(self.driver.get_characteristic('On').aid,
False)

# Implémentez une boucle qui met à jour l'état de la présence toutes les 5
secondes
def run(self):
while not self.run_sentinel.wait(5):
self.update_presence()

# Créez une instance de la classe Accessory et lancez le script


accessory = PresenceSensor()
accessory.start()
Dans ce script, la fonction read_eve_motion utilise la bibliothèque BluePy pour
lire les données du capteur Eve Motion et retourner une valeur booléenne indiquant
si une personne est présente dans la pièce.

La classe PresenceSensor étend la classe AccessoryDriver fournie par pyhap et


implémente une boucle qui met à jour l'état de la présence toutes les 5 secondes en
appelant la méthode update_presence.

La méthode update_presence utilise la fonction read_eve_motion pour détecter la


présence d'une personne, puis utilise la méthode update_value de la classe
AccessoryDriver pour activer ou désactiver la scène HomeKit en fonction de la
présence détectée.

Assurez-vous de remplacer EVE_MOTION_MAC_ADDRESS par l'adresse MAC réelle de votre


capteur Eve Motion. Notez également que ce script suppose que vous avez déjà
configuré une scène HomeKit pour contrôler les appareils de la pièce en fonction de
la présence de la personne

Vous aimerez peut-être aussi