FEAT : Tout le caclage OK

This commit is contained in:
Raymond Bourges 2025-12-29 17:50:56 +01:00
parent 4a9d161286
commit f4cf814c7b

74
main.py
View File

@ -1,4 +1,6 @@
from machine import Pin, I2C, RTC from machine import Pin, I2C, RTC
from neopixel import NeoPixel
import network import network
import time import time
import ntptime import ntptime
@ -7,15 +9,37 @@ import localtime_fr # TODO : Lire info HP.. HC.. sur HA > sensor.compteur_linky_
import webrepl import webrepl
# Capter exception pour éviter les sorties intempestives (comme timeout sur ntp) # Capter exception pour éviter les sorties intempestives (comme timeout sur ntp)
# Regarder https://docs.micropython.org/en/latest/esp32/quickref.html#timers
led_jaune = Pin(0, Pin.OUT) led_jaune = Pin(0, Pin.OUT) # D0
led_bleue = Pin(2, Pin.OUT) button_jaune = Pin(1, Pin.IN, Pin.PULL_UP) # D1
led_rouge = Pin(19, Pin.OUT)
button_jaune = Pin(1, Pin.IN, Pin.PULL_UP)
button_bleu = Pin(21, Pin.IN, Pin.PULL_UP)
button_rouge = Pin(20, Pin.IN, Pin.PULL_UP)
i2c = I2C(scl=Pin(23), sda=Pin(22), freq=20000) led_bleue = Pin(2, Pin.OUT) # D2
button_bleu = Pin(21, Pin.IN, Pin.PULL_UP) # D3
led_rouge = Pin(20, Pin.OUT) # D9
button_rouge = Pin(18, Pin.IN, Pin.PULL_UP) # D10
button_moins = Pin(16, Pin.IN, Pin.PULL_UP) # D6 (et masse)
button_plus = Pin(17, Pin.IN, Pin.PULL_UP) # D7 (et masse)
brightness = 0.01 # 1 %
def set_pixel(i, r, g, b):
np[i] = (
int(r * brightness),
int(g * brightness),
int(b * brightness)
)
pin_leds = Pin(19, Pin.OUT) # D8
np = NeoPixel(pin_leds, 10)
set_pixel(0, 0, 255, 0)
set_pixel(7, 0, 255, 0)
np.write()
# np.brightness(50)
i2c = I2C(scl=Pin(23), sda=Pin(22), freq=20000) # D5, D4
I2C_ADDR = 0x11 I2C_ADDR = 0x11
ntp_ok = False ntp_ok = False
@ -23,11 +47,17 @@ ntp_ttl = 3600
ntp_attente = ntp_ttl ntp_attente = ntp_ttl
rtc = RTC() rtc = RTC()
pas_temps = 30 pas_temps = 10
DEBOUNCE_MS = 500
dernier_appui = 0
token_ha = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJkNGY4MDdmYWYzNDQ0NTc0ODY4MmFmNzA4NDdmMTE0MyIsImlhdCI6MTc2NDQ1Mzk0NSwiZXhwIjoyMDc5ODEzOTQ1fQ.DJgSqeTKPHWbKEFH3HuFih4QKt3CSqLqot34_vhCOQU" token_ha = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJkNGY4MDdmYWYzNDQ0NTc0ODY4MmFmNzA4NDdmMTE0MyIsImlhdCI6MTc2NDQ1Mzk0NSwiZXhwIjoyMDc5ODEzOTQ1fQ.DJgSqeTKPHWbKEFH3HuFih4QKt3CSqLqot34_vhCOQU"
def button_jaune_presse(pin): def button_jaune_presse(pin):
global dernier_appui
maintenant = time.ticks_ms()
if time.ticks_diff(maintenant, dernier_appui) > DEBOUNCE_MS:
dernier_appui = maintenant
print("Bouton jaune pressé !") print("Bouton jaune pressé !")
led_jaune.on() led_jaune.on()
led_bleue.off() led_bleue.off()
@ -37,6 +67,10 @@ def button_jaune_presse(pin):
button_jaune.irq(trigger=Pin.IRQ_FALLING, handler=button_jaune_presse) button_jaune.irq(trigger=Pin.IRQ_FALLING, handler=button_jaune_presse)
def button_bleu_presse(pin): def button_bleu_presse(pin):
global dernier_appui
maintenant = time.ticks_ms()
if time.ticks_diff(maintenant, dernier_appui) > DEBOUNCE_MS:
dernier_appui = maintenant
print("Bouton bleu !") print("Bouton bleu !")
led_jaune.off() led_jaune.off()
led_bleue.on() led_bleue.on()
@ -46,6 +80,10 @@ def button_bleu_presse(pin):
button_bleu.irq(trigger=Pin.IRQ_FALLING, handler=button_bleu_presse) button_bleu.irq(trigger=Pin.IRQ_FALLING, handler=button_bleu_presse)
def button_rouge_presse(pin): def button_rouge_presse(pin):
global dernier_appui
maintenant = time.ticks_ms()
if time.ticks_diff(maintenant, dernier_appui) > DEBOUNCE_MS:
dernier_appui = maintenant
print("Bouton rouge pressé !") print("Bouton rouge pressé !")
led_jaune.off() led_jaune.off()
led_bleue.off() led_bleue.off()
@ -54,6 +92,23 @@ def button_rouge_presse(pin):
button_rouge.irq(trigger=Pin.IRQ_FALLING, handler=button_rouge_presse) button_rouge.irq(trigger=Pin.IRQ_FALLING, handler=button_rouge_presse)
def button_moins_presse(pin):
global dernier_appui
maintenant = time.ticks_ms()
if time.ticks_diff(maintenant, dernier_appui) > DEBOUNCE_MS:
dernier_appui = maintenant
print("Bouton moins pressé !")
button_moins.irq(trigger=Pin.IRQ_FALLING, handler=button_moins_presse)
def button_plus_presse(pin):
global dernier_appui
maintenant = time.ticks_ms()
if time.ticks_diff(maintenant, dernier_appui) > DEBOUNCE_MS:
dernier_appui = maintenant
print("Bouton plus pressé !")
button_plus.irq(trigger=Pin.IRQ_FALLING, handler=button_plus_presse)
def set_relays(mask): def set_relays(mask):
"""mask = bits 0..3 (1=ON, 0=OFF)""" """mask = bits 0..3 (1=ON, 0=OFF)"""
@ -107,4 +162,5 @@ while True:
ntp() ntp()
print(f"Charge : {charge()}") print(f"Charge : {charge()}")
time.sleep(pas_temps) time.sleep(pas_temps)
# set_pixel(0, 0, 0, 0) # OFF
# np.write()