Skip to content

Contrôle de la luminosité d'une ampoule connectée

KuribohAile edited this page Jun 29, 2024 · 7 revisions

Préambule

Cette page porte sur l'utilisation du VELUQAC dans le cadre du contrôle de la luminosité d'ampoules connectées.

Dans le but de lutter contre la sédentarité, nous souhaitons lier le suivi des cours (où nous sommes contraints de rester assis) et l'activité physique. L'idée ici serait de relier la production d'électricité du VELUQAC des ampoules connectées présentes dans les salles de classes de l'UQAC, pour y contrôler leurs intensités lumineuses. Ainsi, pour que les élèves puissent suivre les différents slides pour voir le tableau, ils devront produire suffisamment d'énergie avec le VELUQAC afin que la luminosité soit adaptée.

Exploration et Recherche

Ampoules connectées

Dans un premier temps, il nous a fallu chercher et trouver des ampoules connectées adaptées à notre cadre de recherche. Nous voulons pouvoir interagir avec elles en tout liberté et sans la contrainte d'une interface (appareil mobile ou télécommande) fournie avec. Il fallait alors que nous puissions interagir avec une carte Arduino ou une Raspberry PI. Au fil de nos recherches, nous avons pu trouver de façon non exhaustive une liste d'ampoules connectées "interfacées" et non "interfacées".

Ampoules connectées "interfacées"


En voici une liste non exhaustive : Ampoule Wiz, Ampoule Ikea TRÅDFRI, TP link Tapo L530E, Xiaomi Yeelight 1S...

  • L'ampoule Wiz se contrôle avec l'application dédié Wiz disponible sur iOS ou Android.

  • L'ampoule Ikea TRÅDFRI utilise le protocole Zigbee et nécessitent la passerelle IKEA TRÅDFRI. Elle se contrôle avec l'application mobile IKEA Home smart.

  • L'ampoule TP link Tapo L530E peut se contrôler avec des assistants vocaux comme Amazon Alexa ou Google Assistant mais aussi avec l'application Tapo.

  • L'ampoule Xiaomi Yeelight 1S peut se contrôle avec des assistants vocaux comme Amazon Alexa ou Google Assistant mais aussi avec l'application Yeelight.

AmpouleInter

Toutes ces ampoules sont plus difficiles à manipuler et exploiter en raison du fait qu'elles soient relier à des interfaces sécurisées, qui ne laissent pas vraiment de possibilité de modulation ou de modification.

Ampoules connectées "modulables"


Pour le moment, l'ampoule qui nous offre le plus de liberté d'action avec une API documentée mise à disposition en ligne est la Philips Hue White and Color.

Elle présente les caractéristiques suivantes :

  • Type d’ampoule: LED
  • Culot: E27 (format standard)
  • Luminosité mesurée: 126,9 lux
  • Consommation mesurée: 7,7 W
  • Technologie: Connexion Wi-Fi et ZigBee
  • Couleurs: 16 millions de couleurs
  • Température de fonctionnement: 0°C à 40°C
  • Durée de vie: Jusqu’à 25 000 heures

AmpouleLib


Voici quelques conseils pour pouvoir commencer à manipuler cette ampoule :

  • Avec Arduino :

-> On peut s'inscrire en tant que développeur pour accéder à la documentation de l’API. How to Control Philips Hue Lights from an Arduino (and Add a Motion Sensor) (makeuseof.com)

-> Il faut trouver l’adresse IP du pont Hue de l'ampoule (également appelé Hue Bridge). On peut aussi utiliser des outils comme IP Scanner ou le ping sur “philips-hue.home” pour trouver l’adresse1.

-> Utilisez la bibliothèque hueDino pour Arduino, qui implémente l’API Philips Hue pour les appareils connectés via WiFi1012. On peut envoyer des requêtes JSON au pont Hue pour contrôler l’intensité lumineuse de l’ampoule.

-> Pour avoir un exemple de contrôle : Philips Hue Control from Arduino | hue-control (tigoe.github.io)

Voici également un exemple de code Arduino pour contrôler la luminosité d'une ampoule Philips Hue :

#include <WiFi101.h>
#include <ArduinoJson.h>

const char* ssid = "Votre_SSID";
const char* password = "Votre_Mot_de_passe";
const char* hueBridgeIP = "192.168.1.216"; // Remplacez par l'adresse IP du pont Hue

void setup() {
  Serial.begin(9600);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
}

void loop() {
  // Diminuer l'intensité lumineuse de l'ampoule
  decreaseBrightness(1); // Remplacez par l'ID de l'ampoule
  delay(5000); // Attendez 5 secondes avant de réduire d'avantage

}

void decreaseBrightness(int bulbId) {
  String url = "http://" + String(hueBridgeIP) + "/api/VOTRE_CLE_API/lights/" + String(bulbId) + "/state";
  String payload = "{\"bri\": 100}"; // Réduisez la valeur bri (intensité) ici

  HTTPClient http;
  http.begin(url);
  http.addHeader("Content-Type", "application/json");
  int httpCode = http.PUT(payload);
  String response = http.getString();
  http.end();

  Serial.println("Response: " + response);
}

  • Avec RaspberryPi :

-> On peut s'inscrire en tant que développeur pour accéder à la documentation de l’API. ( Raspberry Pi: How to control lights at home? (Philips Hue) – RaspberryTips )

-> Il faut s'assure que la Raspberry Pi est configurée et connectée au réseau Wi-Fi.

-> Il faut installez la bibliothèque Python phue pour communiquer avec le pont Hue. On peut l'installer avec la commande :

pip install phue

-> Il faut trouver l’adresse IP du pont Hue de l'ampoule (également appelé Hue Bridge). On peut utiliser des outils comme IP Scanner ou le ping sur “philips-hue.home” pour trouver l’adresse1.

-> Pour avoir un exemple ( Programmer les Ampoules Connectées en Python (Philips Hue) – RaspberryTips )

-> Voici une autre méthode d'utilisation ( Running DiyHue on the Raspberry Pi - Pi My Life Up )

Voici également un exemple de code pyhton pour Raspberry Pi tournant sous Linux pour contrôler la luminosité d'une ampoule Philips Hue :

from phue import Bridge

# Remplacez par l'adresse IP de votre pont Hue
bridge_ip = "192.168.1.216"

# Créez une instance de la classe Bridge
b = Bridge(bridge_ip)

# Connectez-vous au pont (appuyez sur le bouton de jumelage sur le pont)
b.connect()

# Récupérez toutes les ampoules connectées
lights = b.lights

# Réduisez l'intensité lumineuse de toutes les ampoules
for light in lights:
    light.brightness = 100  # Réglez la valeur de 1 à 254

print("Intensité lumineuse réduite !")



-contrôle de la luminosité de lécran pour linux avec python : 
def set_brightness_linux(brightness):
    try:
        subprocess.run(["xrandr", "--output", "eDP-1", "--brightness", str(brightness / 100)])
        print(f"La luminosité de l'écran est réglée à {brightness}% (Linux)")
    except Exception as e:
        print(f"Erreur lors du réglage de la luminosité (Linux) : {e}")

# Définissez le niveau de luminosité souhaité (0-100)
brightness_level = 50
set_brightness_linux(brightness_level)

-commande : 
xrandr --output [nom-du-moniteur] --brightness [niveau-de-luminosité]