Jak sterować roletami w domu sterownikiem PLC i Home Assistant

controlbyte.pl 3 miesięcy temu

Co to jest Home Assistant?

Home Assistant to otwarte oprogramowanie (open-source) służące do automatyzacji domowej, które pozwala użytkownikom na połączenie i zarządzanie różnymi urządzeniami inteligentnego domu z jednej, centralnej platformy. Home Assistant można zainstalować na wielu urządzeniach, w tym na komputerach z systemem Linux, macOS, Windows oraz na dedykowanych urządzeniach takich jak Raspberry Pi.

Głównymi cechami Home Assistant są:

  • Wsparcie dla wielu urządzeń i usług: Home Assistant współpracuje z tysiącami urządzeń i usług od różnych producentów, włączając oświetlenie, termostaty, kamery, czujniki, głośniki inteligentne, a choćby samochody.
  • Automatyzacje i scenariusze: Umożliwia tworzenie skomplikowanych automatyzacji i scenariuszy, które mogą automatycznie zarządzać urządzeniami w domu w oparciu o różne wyzwalacze, takie jak czas, zdarzenia, czy stan urządzeń.
  • Lokalne przetwarzanie: Home Assistant skupia się na przetwarzaniu danych lokalnie, co oznacza większą prywatność i szybkość działania, ponieważ nie jest wymagane połączenie z zewnętrznymi serwerami.
  • Elastyczność i dostosowywanie: Użytkownicy mogą dostosować interfejs użytkownika, automatyzacje i sposób działania systemu do własnych potrzeb, używając języka YAML lub poprzez graficzny interfejs użytkownika.
  • Integracja z asystentami głosowymi: Możliwość integracji z popularnymi asystentami głosowymi, takimi jak Amazon Alexa i Google Assistant, umożliwia sterowanie urządzeniami inteligentnego domu dzięki poleceń głosowych.
  • Społeczność: Dzięki otwartej naturze, Home Assistant ma aktywną społeczność użytkowników i programistów, którzy ciągle pracują nad rozszerzaniem możliwości platformy poprzez dodawanie nowych integracji i funkcji.

Co potrzebujemy aby zaprogramować roletę z PLC i Home Assistant?

Na samym początku musimy zainstalować serwer Home Assistant. Taki serwer możemy uruchomić lokalnie na naszym komputerze PC, laptopie lub na dedykowanym sprzęcie jak terminal, Raspberry Pi lub choćby sterowniku PLC opartym na jądrze Linux. Na potrzeby poradnik wykorzystamy Home Assistant działający na wirtualnej maszynie uruchomionej na komputerze domowym. Na wideo poniżej krok po kroku pokazuję jak samodzielnie uruchomić taki serwer. Więc zanim przejdziemy dalej obejrzyj film i przejdź przez proces instalacji – powodzenia!

Gdy zakończysz proces instalacji, musimy do Node-RED’a zainstalować rozszerzenie obsługujące komunikację Modbus TCP.

1. W zakładce Node-RED przechodzimy do ||| -> Manage palette.

2. Przechodzimy do zakładki Install wyszukujemy „modbus” i instalujemy pakiet przedstawiony na zrzucie poniżej dzięki przycisku Install.

3. Gdy biblioteka Modbus jest już zainstalowana, możemy przejść do skonfigurowania połączenia z Home Assistant w Codesys. W naszym projekcie musimy dodać adapter Ethernet klikamy PPM na urządzenie i wybieramy opcję Add device.

4. Wybieramy Ethernet Adapter -> Ethernet i klikamy Add Device

5. Obsługujemy już port Ethernet w naszym urządzeniu, więc przyszedł czas na konfigurację interfejsu Modbus TCP. Klikamy PPM na urządzenie Ethernet w drzewie projektu, następnie Add device, wybieramy Fieldbuses -> Modbus -> Modbus TCP Slave Device -> Modbus TCP Slave Device i klikamy Add Device

6. Klikamy LPM na Slave Device i nadajemy możliwość nadpisywania dla Holding registers. Pozostałe ustawienia dostosowujemy do wymagań naszego projektu, ja pozostawię je domyślnie.

7. Teraz aby przypisać zmienne w mapowaniu Modbus potrzebujemy program, który będzie sterował roletami, ja napisałem taki prosty program:

Poniżej kod do skopiowania:
PLC_PRG

RTRIG_RoletaOtwarta(CLK := xRoleta_Otwarta); RTRIG_RoletaZamknieta(CLK := xRoleta_Zamknieta); IF xRoleta_Otwarta AND (xPrzycisk_Otworz OR xPrzycisk_Otworz_HA) THEN xRoleta_Silnik_Dol := TRUE; ELSIF xRoleta_Zamknieta AND (xPrzycisk_Zamknij OR xPrzycisk_Zamknij_HA) THEN xRoleta_Silnik_Gora := TRUE; END_IF IF RTRIG_RoletaOtwarta.Q THEN xRoleta_Silnik_Gora := FALSE; ELSIF RTRIG_RoletaZamknieta.Q THEN xRoleta_Silnik_Dol := FALSE; END_IF

Deklaracja zmiennych:

PROGRAM PLC_PRG VAR xRoleta_Otwarta: BOOL; xRoleta_Zamknieta: BOOL; xRoleta_Silnik_Gora: BOOL; xRoleta_Silnik_Dol: BOOL; xPrzycisk_Otworz: BOOL; xPrzycisk_Zamknij: BOOL; xPrzycisk_Otworz_HA: BOOL; xPrzycisk_Zamknij_HA: BOOL; RTRIG_RoletaOtwarta : R_TRIG ; RTRIG_RoletaZamknieta : R_TRIG ; END_VAR

8. Przechodzimy do Device I/O Mapping i według przypisujemy dwie zmienne odpowiedzialne za sygnały przesyłane z panelu sterowania Home Assistant do naszego programu PLC, przypisujemy je do Bitu 0 i 1 w rejestrze 0.

9. Wgrywamy program do PLC i przechodzimy w tryb RUN

10. Przechodzimy do Node-RED i tworzymy Flow (program). Z menu po lewej stronie wyciągamy przedstawione poniżej bloki i łączymy jest w sposób tak jak poniżej:

11. Teraz klikamy dwa razy LPM na blok „button” i klikamy znak edycji przy Add new ha-entity-config, utworzymy tym encje przycisku, który będzie wyświetlany na panelu:

12. Ustawiamy nazwę roboczą przycisku do otwierania rolety i następnie dodajemy serwer Home Assistant. Ustawiamy adres serwera na lokalne IP maszyny wirtualnej i klikamy Add:

13. W oknie konfiguracji encji analogicznie jak serwer konfigurujemy urządzenie w polu Add new ha-device-config i ustawiamy nazwę roboczą urządzenia.

14. Następnie otwieramy blok „function” i wpisujemy do niego taki kod i klikamyDone„:

Wyjaśnienie:

msg.payload = { value: 1, //Do pierwszego bitu pierwszego rejestru wpisz TRUE (1) 'fc': 6, //Funckja wpisz do JEDNEGO REJESTRU (fc: 12 odpowiada za wpisywanie do wielu rejestrów) 'unitid': 2, //ID Slave z Codesys 'address': 0, //ID rejestru 'quantity': 1 //Ilośc modyfikowanych rejestrów (dla fc: 6 zawsze będzie 1) } return msg;

15. Konfigurujemy blok „Modbus Flex Write”, przechodzimy do edycji serwera Modbus klikając znak edycji przy polu Add new modbus-client i wpisujemy parametry serwera Modbus z PLC (PAMIĘTAJ! Że choćby jeżeli korzystasz z lokalnego symulatora PLC to musisz podać pełny adres twojego komputera, który sprawdzisz wpisując w konsoli CMD komendę „ipconfig” np. 192.168.0.162).

16. Blok „debug” skonfiguruj według własnych potrzeb, aby na bieżąco widzieć jakie dane są wymieniane między PLC, a panelem.

17. Klikamy przycisk Deploy aby zapisać nasz Flow (program). Pamiętaj aby robić to za każdym razem, kiedy wprowadzisz jakieś zmiany w programie Node-RED.

18. Klikamy przycisk Edytuj panel nawigacyjny aby dodać encję do panelu Home Assistant.

19. Klikamy Dodaj kartę i wybieramy Przycisk.

20. W oknie konfiguracji przycisku wybieramy utworzoną encję (entity) i klikamy ZAPISZ.

Po zapisaniu zmian nasz panel powinien wyglądać właśnie w ten sposób. Dalej już spróbujcie zaprogramować sami. To iloma urządzeniami chcemy sterować zależy już tylko od nas i możliwości sterownika PLC.

Zobacz wideo, na którym przedstawiamy bardziej rozbudowany panel Home Assistant:

Rozwiń swoje umiejętności w automatyce budynkowej!

Dołącz do kursu programowania automatyki budynkowej i stwórz panel Home Assistant sterowany głosowo dzięki asystenta Siri: https://www.controlbyte.pl/automatykabudynkowa/

Idź do oryginalnego materiału