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:
| Platforma | Tryb GPIO |
|---|---|
| Raspberry Pi (Linux ARM64) | Prawdziwe piny GPIO |
| macOS (Intel lub Apple Silicon) | Symulacja |
| Linux x86/x64 | Symulacja |
| Windows | Symulacja |
Nie musisz niczego konfigurować - wybór trybu odbywa się automatycznie.
Co to oznacza w praktyce#
- Twój kod działa identycznie - obiekty
GPIO_DOUTiGPIO_DINzachowują 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
onChangeodpalają 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ętGPIO: using mock controller- symulacja
Symulacja GPIO nie wymaga żadnych dodatkowych bibliotek ani uprawnienia root. Działa od razu po uruchomieniu vCLU.