Symulacja GPIO#

Gdy uruchamiasz vCLU na zwykłym komputerze (macOS, Windows, Linux x86), GPIO działa w trybie symulacji. Wszystkie komendy GPIO wykonują się normalnie, ale nie sterują fizycznymi pinami.

Jak to działa#

vCLU automatycznie wykrywa, czy działa na Raspberry Pi czy na innym komputerze:

PlatformaTryb GPIO
Raspberry Pi (Linux ARM64)Prawdziwe piny GPIO
macOS (Intel lub Apple Silicon)Symulacja
Linux x86/x64Symulacja
WindowsSymulacja

Nie musisz niczego konfigurować - wybór trybu odbywa się automatycznie.

Co to oznacza w praktyce#

  • Twój kod działa identycznie - obiekty GPIO_DOUT i GPIO_DIN zachowują się tak samo w symulacji jak na prawdziwym RPi.
  • Stany są zapamiętywane - jeśli ustawisz pin na włączony, odczytasz go jako włączony. Tyle że fizycznie nic się nie dzieje.
  • Logi i dashboard działają - widzisz zmiany stanów, callbacki onChange odpalają się normalnie.
  • Błędy też działają - próba zapisu na pin wejściowy zwróci błąd, tak jak na prawdziwym sprzęcie.

Do czego to się przydaje#

Rozwój automatyzacji na komputerze. Piszesz kod na Macu lub PC, testujesz logikę, a potem wgrywasz na Raspberry Pi - bez zmian w kodzie.

Testowanie przed wdrożeniem. Możesz sprawdzić całą logikę automatyzacji (timery, MQTT, sceny) zanim podłączysz prawdziwe urządzenia.

Prezentacje i demonstracje. Możesz pokazać klientowi działający dashboard z symulowanymi urządzeniami GPIO.

Przykład#

Ten sam kod działa na obu platformach:

-- Relay na pinie 17
relay = GPIO_DOUT:new("RELAY1", 17)
relay:expose({name = "Relay 1"})

-- Przycisk na pinie 27
przycisk = GPIO_DIN:new("BTN1", 27)
przycisk:onChange(function(val)
    if val == 1 then
        relay:toggle()
    end
end)

Na Raspberry Pi - fizycznie przełącza przekaźnik. Na komputerze - zmienia stan w pamięci, dashboard pokazuje zmianę.

Rozpoznanie trybu#

W logach przy starcie zobaczysz informację o wybranym trybie:

  • GPIO: using RPi controller - prawdziwy sprzęt
  • GPIO: using mock controller - symulacja

Symulacja GPIO nie wymaga żadnych dodatkowych bibliotek ani uprawnienia root. Działa od razu po uruchomieniu vCLU.