Pomysł do analizy somfy rts i GUI

amprsun
Posts: 23
Joined: Sat Jul 29, 2023 5:19 am

Post

Taki oto kod udało się mi wygenerować myślicie że ma to rację bytu ?
Kod z obsługą 16 kanałów rolet, integracją z Supla Cloud i automatycznym odczytywaniem kodów z pilota Somfy RTS Telis 16

Code: Select all

import gui_generic as gui
import somfy_rts as somfy
import cc1101
import supla_cloud as supla

# Ustawienia
SOMFY_DEVICE_IDS = []  # Lista ID urządzeń Somfy (16 elementów)
SOMFY_RTS_KEYS = []  # Lista kluczy RTS Somfy (16 elementów)
SUPLA_DEVICE_IDS = [12345, 12346, ..., 12360]  # Lista ID urządzeń Supla (16 elementów)
CC1101_SPI_MOSI = 23  # Numer pinu GPIO SPI MOSI
CC1101_SPI_MISO = 19  # Numer pinu GPIO SPI MISO
CC1101_SPI_SCLK = 18  # Numer pinu GPIO SPI SCLK
CC1101_SS = 5  # Numer pinu GPIO SS

# Definicja funkcji sterowania
def steruj_roleta(kanal, kierunek):
    if kierunek == "góra":
        somfy.send_command(SOMFY_DEVICE_IDS[kanal], somfy.SOMFY_RTS_UP)
        supla.update_device_state(SUPLA_DEVICE_IDS[kanal], "position", 100)
    elif kierunek == "dół":
        somfy.send_command(SOMFY_DEVICE_IDS[kanal], somfy.SOMFY_RTS_DOWN)
        supla.update_device_state(SUPLA_DEVICE_IDS[kanal], "position", 0)
    elif kierunek == "stop":
        somfy.send_command(SOMFY_DEVICE_IDS[kanal], somfy.SOMFY_RTS_STOP)

# Definicja funkcji odczytu kodu
def odczytaj_kod():
    # Odbierz kod z pilota
    kod = cc1101.receive_code()

    # Zapisz kod w pamięci ESP32 lub wyślij do Supla Cloud

# Definicja funkcji programowania pilota
def programuj_pilota(kanal, kod_pilota):
    # Ustaw kod pilota w module CC1101
    cc1101.send_code(kod_pilota)

    # Wyślij komendę programowania do urządzenia Somfy
    somfy.send_command(SOMFY_DEVICE_IDS[kanal], somfy.SOMFY_RTS_PROGRAM)

# Definicja funkcji synchronizacji z pilotem
def synchronizuj_z_pilotem(kanal):
    # Naciśnij przycisk programowania na pilocie Somfy
    print("Naciśnij przycisk programowania na pilocie...")
    while not cc1101.data_available():
        time.sleep(0.1)

    # Odbierz kod z modułu CC1101
    kod_pilota = cc1101.receive_code()

    # Zapisz kod pilota w pamięci ESP32
    print("Kod pilota dla kanału", kanal, ":", kod_pilota)
    gui.info("Kod pilota dla kanału {} zapisany.".format(kanal))

# Interfejs użytkownika
gui.Window("Sterowanie roletami Somfy RTS")
for kanal in range(16):
    gui.Button("Kanał {} Góra".format(kanal + 1), command=lambda kanal=kanal: steruj_roleta(kanal, "góra"))
    gui.Button("Kanał {} Dół".format(kanal + 1), command=lambda kanal=kanal: steruj_roleta(kanal, "dół"))
    gui.Button("Kanał {} Stop".format(kanal + 1), command=lambda kanal=kanal: steruj_roleta(kanal, "stop"))
    gui.Button("Synchronizuj z pilotem (kanał {})".format(kanal + 1), command=lambda kanal=kanal: synchronizuj_z_pilotem(kanal))
gui.show()

Return to “Pomoc”