import network
import urequests
import utime
from machine import Pin, ADC
# Configuration du Wi-Fi
WIFI_SSID = "Wokwi-GUEST" # Nom du réseau Wi-Fi (modifié si nécessaire)
WIFI_PASSWORD = "" # Mot de passe vide pour le réseau invité de Wokwi
# Configuration de ThingSpeak
THINGSPEAK_API_KEY = "M6DUD31GPWYE1YT7" # Remplacez par votre propre clé API
THINGSPEAK_URL = f"https://api.thingspeak.com/update?api_key={THINGSPEAK_API_KEY}"
# Configuration du potentiomètre
potentiometer = ADC(Pin(34)) # Broche GPIO34 pour l'entrée analogique
potentiometer.atten(ADC.ATTN_11DB) # Plage de mesure 0-3.3V
potentiometer.width(ADC.WIDTH_12BIT) # Résolution de 12 bits (0-4095)
# Paramètres
VCC = 220 # Tension fixe en volts
MAX_CONSUMPTION = 200 # Consommation maximale simulée en watts
CONSUMPTION_THRESHOLD = 150 # Seuil de consommation pour l'alerte (en watts)
# Fonction pour se connecter au Wi-Fi
def connect_to_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASSWORD)
print("Connexion au Wi-Fi en cours...")
while not wlan.isconnected():
utime.sleep(1)
print("Connecté au Wi-Fi!")
print("Adresse IP:", wlan.ifconfig()[0])
# Fonction pour obtenir la puissance depuis le potentiomètre
def get_power_from_potentiometer():
analog_value = potentiometer.read() # Lire la valeur analogique (0-4095)
power = (analog_value / 4095.0) * MAX_CONSUMPTION # Calcul de la puissance
return power
# Fonction pour envoyer les données à ThingSpeak
def send_to_thingspeak(power, total_energy, alert):
try:
# Construire l'URL avec les données à envoyer
url = f"{THINGSPEAK_URL}&field1={power:.2f}&field2={total_energy:.4f}&field3={alert}"
# Envoyer la requête GET avec l'URL construite
response = urequests.get(url)
# Afficher la réponse de ThingSpeak
print("Données envoyées à ThingSpeak:", response.text)
# Fermer la réponse pour libérer la ressource
response.close()
except Exception as e:
print("Erreur lors de l'envoi à ThingSpeak:", e)
# Fonction principale
def main():
total_energy = 0 # Énergie totale initiale
elapsed_time = 0 # Temps écoulé en secondes
alert = 0 # Alerte initiale (pas d'alerte)
# Connexion au Wi-Fi
connect_to_wifi()
# Boucle infinie pour mesurer et envoyer les données en temps réel
while True:
# Obtenir la puissance actuelle
power = get_power_from_potentiometer()
# Calculer l'énergie consommée (en Wh)
time_interval = 1 / 3600 # 1 seconde en heures (pour une mesure horaire)
total_energy += power * time_interval
# Vérifier si la consommation dépasse le seuil
if power > CONSUMPTION_THRESHOLD:
alert = 1 # Alerte activée si consommation dépasse le seuil
print(f"Alerte : Consommation élevée détectée! ({power:.2f} W)")
else:
alert = 0 # Alerte désactivée si consommation est sous le seuil
# Afficher les données dans la console
print(f"Puissance : {power:.2f} W | Énergie totale : {total_energy:.4f} Wh | Alerte : {alert}")
# Envoi des données à ThingSpeak
send_to_thingspeak(power, total_energy, alert)
# Pause d'une seconde (simulation en temps réel)
utime.sleep(10)
elapsed_time += 1
# Lancer le programme
main()