Spisu treści:

Koncentrator automatyki domowej Raspberry Pi-Arduino-SignalR: 11 kroków (ze zdjęciami)
Koncentrator automatyki domowej Raspberry Pi-Arduino-SignalR: 11 kroków (ze zdjęciami)

Wideo: Koncentrator automatyki domowej Raspberry Pi-Arduino-SignalR: 11 kroków (ze zdjęciami)

Wideo: Koncentrator automatyki domowej Raspberry Pi-Arduino-SignalR: 11 kroków (ze zdjęciami)
Wideo: Universal I/O Hat Hat for the Raspberry Pi Plus/2 2024, Lipiec
Anonim
Koncentrator automatyki domowej Raspberry Pi-Arduino-SignalR
Koncentrator automatyki domowej Raspberry Pi-Arduino-SignalR

Po kilku moich wstępnych IBLE opublikowanych tutaj i tutaj, ten projekt robi pierwszy krok w kierunku zbudowania podstawowej wersji funkcjonalnego centrum automatyki domowej.

Użyłem kilku różnych technologii, aby zrozumieć, w jaki sposób mogę wykorzystać wszystkie rzeczy, których nauczyłem się w przeszłości i nowe rzeczy, których uczę się w miarę postępu dni.

Dlatego ten koncentrator automatyzacji składa się z następujących komponentów:

Baza danych SQL Server 2012, która:

  • przechowuje listę wstępnie określonych kodów podczerwieni (IR) w tabeli wraz z unikalnym „kluczem kodu”
  • klucze kodu są intuicyjnie nazwane (przez użytkownika), aby zidentyfikować cel związanych z nimi kodów IR

Aplikacja sieci Web centrum sygnalizacji ASP. NET w czasie rzeczywistym, która:

  • czeka i otrzymuje "klucze kodu" jako polecenia od użytkownika skierowanego do klienta HTML
  • po otrzymaniu łączy się z bazą danych SQL i pobiera kod IR za pomocą dostarczonego klucza kodu
  • przekazuje pobrany kod IR do klienta Python SignalR

Klient mający kontakt z użytkownikiem HTML SignalR Dashboard, który:

  • przekazuje unikalny klucz kodu do centrum za pośrednictwem interfejsów API klienta jQuery SignalR
  • każdy przycisk na pulpicie będzie reprezentował unikalny klucz kodowy zapisany w tabeli bazy danych SQL

Aplikacja usługi w tle Python SignalR działająca na Raspberry Pi 2.0, która:

  • odbiera kody IR jako polecenia z koncentratora
  • wyszukuje ograniczniki w kodzie IR i dzieli bardzo długi kod na segmenty
  • komunikuje się przez port szeregowy z Arduino i wypisuje kolejno każdy segment;

Szkic nadajnika podczerwieni Arduino, który:

  • czeka i odbiera każdy z segmentów kodu IR przez port szeregowy
  • składa segmenty kodu w tablicę buforową kodu IR
  • pakuje bufor do polecenia IR Transmit za pomocą biblioteki IRLib Arduino

Jeśli urządzenie docelowe znajduje się w pobliżu nadajnika IR, to urządzenie (może) reagować na sygnał IR przesyłany przez Arduino

NOTATKA

Chociaż urządzenie docelowe, którego używam w tej demonstracji, reaguje na sygnały IR, możesz chcieć przeczytać tę sekcję mojego innego IBLE z powodów, dla których mówię, że urządzenie (może) reagować na sygnał IR.

Czas się ruszyć.

Krok 1: Czego potrzebujesz, wcześniej czego potrzebujesz

Czego potrzebujesz, wcześniej czego potrzebujesz
Czego potrzebujesz, wcześniej czego potrzebujesz
Czego potrzebujesz, wcześniej czego potrzebujesz
Czego potrzebujesz, wcześniej czego potrzebujesz
Czego potrzebujesz, wcześniej czego potrzebujesz
Czego potrzebujesz, wcześniej czego potrzebujesz

Ten instruktażowy startuje z niektórymi pracami wykonanymi wcześniej, co również zaowocowało moim ostatnim IBLE.

Tak więc, zanim przejdziemy do tego, czego potrzebujemy do tego IBLE, zalecamy przeczytanie tej instrukcji, aby uzyskać pewne informacje o tym, jak:

  1. Utworzono bibliotekę podczerwieni Arduino IRLib
  2. Jak kody IR używane w tym IBLE zostały przechwycone za pomocą odbiornika IR?
  3. W jaki sposób przechwycone kody IR zostały wykorzystane do sterowania urządzeniem docelowym za pomocą nadajnika IR?

Po ukończeniu tego IBLE wdrożyłem aplikację internetową ASP. NET IR Code Recorder, która:

  • Zaakceptuj przechwycony kod IR wraz z intuicyjnie nazwanym kluczem kodu jako dane wejściowe za pośrednictwem formularza internetowego
  • Podziel bardzo długi kod IR na segmenty o długości poniżej 64 znaków, aby pozostać poniżej limitu bufora szeregowego Arduino Uno
  • Ostatni segment kodów byłby poprzedzony literą „E”, która wskazuje Arduino, że otrzymał ostatni segment kodu
  • Każdy segment byłby oddzielony ogranicznikiem rury przed ponownym złożeniem w długi ciąg
  • Na koniec segmentowany kod IR wraz z kluczem kodu został zapisany w bazie danych SQL Server 2012

To właśnie ta baza danych SQL stanowi jeden z komponentów Home Automation Hub opracowanych w tym IBLE.

NOTATKA

Aplikacja internetowa IR Code Recorder nie jest częścią dyskusji tutaj z następujących powodów:

  • Możesz ręcznie przechwytywać kody za pomocą Arduino Sketch, dzielić je na sekcje rozdzielane rurami i przechowywać w bazie danych bez konieczności budowania rozbudowanej aplikacji internetowej
  • W przeciwieństwie do tego IBLE, rejestrator IR koncentruje się na komunikacji zwrotnej z Arduino do Raspberry Pi

Dlatego szczegóły dotyczące tego projektu byłyby tematem dla innego IBLE

Krok 2: To, czego potrzebujesz - sprzęt

To, czego potrzebujesz - sprzęt
To, czego potrzebujesz - sprzęt
To, czego potrzebujesz - sprzęt
To, czego potrzebujesz - sprzęt

Działający Raspberry Pi 2.0 - polecam zainstalować Ubuntu Mate, ponieważ ma on bogatszy zestaw funkcji, w tym OpenLibre Office, który, nawiasem mówiąc, był niezbędny do udokumentowania tej instrukcji, bezpośrednio na Raspberry Pi.

Ponadto Pi, będziesz potrzebować następujących elementów zewnętrznych:

  • Platforma prototypowa Arduino Uno lub klon
  • Dioda LED nadajników IR - użyłem marki Three Legs z Amazon.com
  • Rezystory 330 lub 220 Ohm - użyłem 220 (kod koloru czerwono-czerwono-brązowy) bo miałem kilka pod ręką
  • Zwykła płytka chlebowa, złącza i komputer z zainstalowanym środowiskiem Arduino
  • Kandydat do testu - taki jak wszechobecny monitor LED firmy Samsung z pilotem

Krok 3: To, czego potrzebujesz - oprogramowanie

Aby zebrać wszystkie elementy razem, należy zainstalować i uruchomić następującą konfigurację oprogramowania:

Na Raspberry Pi musisz zainstalować następujące elementy:

  • Arduino IDE - używane do budowania szkicu i flashowania go do UNO
  • Moduł Pythona dla Arduino - do komunikacji szeregowej między UNO i Pi
  • Biblioteka klienta Python SignalR - możesz zapoznać się z załączonymi instrukcjami

Komputer z systemem Windows z zainstalowanym następującym środowiskiem programistycznym:

  • Bezpłatna wersja Microsoft Visual Studio Express 2013 do tworzenia aplikacji SignalR Hub i klienta sieci Web
  • Bezpłatna wersja SQL Server 2012 Express do projektowania i budowania wewnętrznej bazy danych

Środowisko hostingu Windows Internet Information Server (IIS):

  • Po skompilowaniu i przetestowaniu centrum sygnalizującego i klienta sieci Web należy go wdrożyć na lokalnym serwerze IIS
  • W moim przypadku planuję używać starego laptopa z systemem Windows 7 z usługami IIS w sieci domowej

NOTATKA

Wszystkie instrukcje dotyczą wersji Pythona 2.7.x. Wersja 3.0 może wymagać przepisania

Krok 4: Baza danych SQL Server

Baza danych serwera SQL
Baza danych serwera SQL

Załączony schemat przedstawia strukturę podstawowej bazy danych SQL Server używanej w tej aplikacji i zawiera tylko dwie tabele.

Tabela AutoHubCode

Dwie ważne kolumny w tej tabeli to:

AutoCodeKey - przechowuje przyjazną dla użytkownika nazwę klucza Code

Każdy z kluczy kodu jest przesyłany przez klienta automatyzacji - w naszym przypadku przycisk HTML ze strony internetowej

AutoCodeVal - przechowuje nieprzetworzoną sekwencję kodów IR

Jest to rzeczywisty kod IR, który jest przesyłany z powrotem do klienta w odpowiedzi przez centrum sygnalizacyjne

W takim przypadku klient Pythona w ciągłej komunikacji z koncentratorem odbiera sekwencję kodu IR i przesyła ją przez port szeregowy do Arduino UNO

Dziennik Autohuba tabeli

  • Rejestruje kod żądany przez klienta automatyzacji.
  • Jest to miara śledzenia, kto i kiedy korzystał z systemu oraz jaki kod został zamówiony

Jak wspomniałem, używałem SQL Server 2012 jako platformy bazodanowej z wyboru. Możesz odtworzyć ten prosty projekt na innej platformie bazy danych, takiej jak MySQL, Oracle itp.

Niemniej jednak dołączono tutaj skrypt SQL do tworzenia tej bazy danych

NOTATKA

  1. Kod dla centrum sygnalizującego jest przeznaczony do łączenia się z bazą danych programu SQL Server 2012
  2. Praca z inną bazą danych oznaczałaby zmianę koncentratora tak, aby używał innego sterownika bazy danych

Krok 5: Aplikacja sieci Web ASP. NET SignalR Hub

Aplikacja sieci Web centrum sygnalizacyjnego ASP. NET
Aplikacja sieci Web centrum sygnalizacyjnego ASP. NET
Aplikacja sieci Web centrum sygnalizacyjnego ASP. NET
Aplikacja sieci Web centrum sygnalizacyjnego ASP. NET

Aplikacja sieci Web ASP. NET SignalR Hub łącznie składa się z następujących składników, jak wskazano na załączonym schemacie:

Sekcja 1 - SignalR Hub, który odbiera żądania od klienta i odpowiada na niego

Sekcje 2, 4 - Strona internetowa klienta HTML i jej arkusz stylów, które wspólnie tworzą fronton systemu Automation i wysyłają polecenia do Centrum automatyzacji

Sekcja 3 - Interfejsy API jQuery SignalR używane przez klienta HTML do komunikacji z centrum automatyzacji

Sekcja 5 - SignalR Hub nie komunikuje się bezpośrednio z bazą danych. Robi to za pośrednictwem klas pośrednich generowanych przy użyciu Entity Framework

Te klasy abstrahują szczegóły bazy danych z aplikacji front-end

Sekcja 6 - Klasa usługi bazy danych, która pomaga wykonywać operacje odczytu i zapisu w bazie danych SQL (opisane wcześniej) przy użyciu klas Entity Framework

ASP. NET i SignalR to technologie firmy Microsoft, a ten samouczek przeprowadzi Cię przez proces tworzenia i wdrażania prostej aplikacji SignalR.

To, co tutaj zbudowałem, opiera się na podstawach uzyskanych z tego samouczka. Po wdrożeniu aplikacja powinna wyglądać podobnie do strony internetowej pokazanej na drugim obrazku

UWAGA DO KODU

Dołączono plik ZIP zawierający uproszczoną wersję kodu

Struktura folderów jest taka, jak pokazano na ilustracji - jednak wszystkie klasy frameworka i skrypty jQuery zostały usunięte, aby zmniejszyć rozmiar załącznika

Zaleca się, aby ten kod był używany jako przewodnik, ponieważ podczas tworzenia nowej aplikacji sieci Web SignalR, korzystając z powyższego linku do samouczka, najnowsze biblioteki jQuery i klasy platformy ASP. NET zostaną dodane automatycznie

Ponadto odwołania do skryptów jQuery na stronie index.html będą musiały zostać zmienione, aby odzwierciedlić najnowszą wersję bibliotek klienta jQuery SignalR, które zostaną automatycznie dodane podczas kompilowania aplikacji sieci Web.

Na koniec parametry połączenia będą musiały zostać zmienione, aby pasowały do bazy danych w plikach o nazwie Web.config*

Krok 6: Klient usługi sygnalizującej Pythona

Klient usługi sygnalizującej Pythona
Klient usługi sygnalizującej Pythona

Podczas gdy klient HTML SignalR jest interfejsem użytkownika skierowanym do przodu, klient Python jest aplikacją usługi zaplecza, której główną funkcją jest odbieranie kodu IR przesyłanego przez koncentrator i kierowanie go do Arduino UNO przez komunikację szeregową.

Załączony kod nie wymaga wyjaśnień i jest wystarczająco udokumentowany, aby opisać jego funkcjonalność

Jak pokazano na złożonym zrzucie ekranu, klient HTML i klient usługi Python komunikują się za pośrednictwem centrum sygnalizującego w następujący sposób:

  1. Użytkownik systemu automatyki wydaje polecenie do koncentratora za pomocą kliknięcia przycisku
  2. Każdy przycisk jest powiązany z kodem klucza IR, a po kliknięciu ten kod jest przesyłany do koncentratora
  3. Hub odbiera ten kod, łączy się z bazą danych i pobiera surowy kod sygnału IR i przesyła go z powrotem do wszystkich podłączonych klientów

    Jednocześnie Hub rejestruje wpis w tabeli bazy danych AutoHubLog rejestrując kod oraz datę i godzinę żądania przez zdalnych klientów

  4. Klient usługi Python otrzymuje kod IR i przekazuje go do Arduino UNO w celu dalszego przetwarzania

Krok 7: Szkic i kod transmisji Arduino UNO IR

Szkic i kod transmisji IR Arduino UNO
Szkic i kod transmisji IR Arduino UNO
Szkic i kod transmisji Arduino UNO IR
Szkic i kod transmisji Arduino UNO IR
Szkic i kod transmisji Arduino UNO IR
Szkic i kod transmisji Arduino UNO IR

Układ Arduino, jak pokazano na ilustracjach, jest dość prosty dla tego systemu i dlatego został krótko opisany:

  • Bezbarwna dioda podczerwieni IR musi być podłączona do cyfrowego PIN 3 w UNO - jest to wymóg biblioteki IRLib Arduino
  • Powody są opisane w moim wcześniejszym IBLE na temat klonowania pilota w sekcji dotyczącej biblioteki IRLib
  • Zielona dioda LED podłączona do cyfrowego PIN 4 jest wizualnym wskaźnikiem, który zapala się, gdy UNO odbierze wszystkie sekcje kodu IR od klienta Pythona uruchomionego na Raspberry Pi.
  • Zapalenie się tej diody potwierdzi, że komunikacja szeregowa między Raspberry Pi a UNO działa
  • Aby umożliwić komunikację szeregową, UNO jest podłączony do Raspberry Pi przez port USB
  • Załączony szkic Arduino jest wystarczająco skomentowany, aby opisać jego funkcję
  • Komentarze na górze kodu opisują również, w jaki sposób obwód musi być podłączony

NOTATKA

W praktyce Arduino i Pi mogą być wspólnie podłączone do zasilanego koncentratora USB wystarczająco silnego, aby napędzać Pi, Arduino, a także przesyłać silny sygnał za pomocą diody podczerwieni

Krok 8: Podłączanie i testowanie systemu

Podłączanie i testowanie systemu
Podłączanie i testowanie systemu
Podłączanie i testowanie systemu
Podłączanie i testowanie systemu
Podłączanie i testowanie systemu
Podłączanie i testowanie systemu
  1. Zbuduj i wdróż ASP. NET SignalR Hub, klienta HTML wraz z bazą danych SQL Server 2012 na Internet Information Server (IIS) w lokalnej sieci domowej
  2. Uzyskaj dostęp do aplikacji internetowej, otwierając klienta HTML SignalR przez

    URL do tej strony to zazwyczaj

  3. Kliknij przycisk na panelu sterowania, a jeśli aplikacja została poprawnie wdrożona, Hub zareaguje, zwracając kod IR i wyświetlając go w szarym panelu sąsiadującym z panelem sterowania

    Pamiętać! Będziesz musiał załadować kody do swojej bazy danych, konfigurując bibliotekę odbiorników podczerwieni i przechwytując kody, jak opisano w moim poprzednim IBLE

  4. Podłącz Arduino do Raspberry Pi przez USB - otwórz Arduino IDE na Pi i upewnij się, że UNO może nawiązać połączenie z Pi

    te artykuły z samouczkami Arduino powinny ci w tym pomóc dość szybko

  5. Otwórz kod Pythona i wprowadź następujące zmiany w zależności od Twojego środowiska
    • adres portu szeregowego twojego UNO uzyskany w kroku 4
    • adres URL centrum SignalR pasujący do lokalnego adresu URL z kroku 2 - w tym przykładzie będzie to
  6. Na koniec otwórz Arduino Sketch w Arduino IDE na Raspberry Pi i sflashuj go do UNO
  7. Umieść płytkę do krojenia chleba, która utrzymuje obwód w bliskiej odległości od urządzenia, które ma być sterowane - dioda LED podczerwieni musi mieć wyraźną linię widzenia z portem odbiornika podczerwieni urządzenia
  8. Uruchom program Python na Raspberry Pi, naciskając przycisk F5 na pasku narzędzi Python IDLE
  9. Wróć do panelu sterowania w programie klienta HTML (krok 2) i kliknij przycisk (np. Włącz lub Zwiększ głośność)

Jeśli system został poprawnie skonfigurowany, powinieneś być w stanie wyświetlić stronę klienta HTML na telefonie lub tablecie i sterować urządzeniem za pomocą przycisków na stronie klienta HTML.

Krok 9: System w akcji

System w akcji
System w akcji
System w akcji
System w akcji
System w akcji
System w akcji
System w akcji
System w akcji

Powyższe wizualizacje pokazują system automatyki domowej w działaniu po jego skonfigurowaniu.

Od czasu opublikowania tego IBLE rozszerzyłem interfejs, przechwytując kilka kodów IR z mojego telewizora LED VIZIO

Jak pokazano obok fabrycznego pilota telewizora na pierwszym obrazie, kilka podstawowych funkcji tego pilota zostało wbudowanych w interfejs sieciowy, do którego można uzyskać dostęp za pośrednictwem mojego tabletu

Kolejne wizualizacje pokazują tablet na pierwszym planie z telewizorem z tyłu reagującym na polecenia wydawane z interfejsu WWW:

  1. Polecenie WYŁĄCZ - telewizor się wyłącza
  2. Polecenie Power ON - telewizor włącza się, a po włączeniu ekranu pojawia się logo „V”
  3. Polecenie Mute ON - pojawia się poziomy pasek z wyciszonym głośnikiem

We wszystkich testach szary obszar obok pulpitu nawigacyjnego na ekranie tabletu wyświetla polecenie wydane przez klienta oraz odpowiedź odesłaną przez zdalne centrum sygnalizacyjne

Krok 10: Ulepszanie systemu automatyzacji i powiązane poprawki

Ten system można rozszerzyć, dodając więcej kodów przechwyconych z różnych systemów. Chociaż ta część jest łatwa, istnieją dwa inne czynniki, które należy wziąć pod uwagę.

Ulepszenie 1 (szybkie): Praca z sygnałami IR o różnych długościach

  1. Kody IR różnych systemów mają różne długości, nawet pomiędzy dwoma produktami tego samego producenta.

    Na przykład w tym przypadku długość tablicy kodów IR dla telewizora LED wynosi 67, podczas gdy Samsung Sound Bar wynosi około 87

  2. Oznacza to, że jeśli najpierw włączyłbym Sound Bar, tablica buforów IR w szkicu Arduino zostałaby wypełniona sekwencją kodów IR, która zawiera 87 kodów
  3. Następnie, gdybym włączył telewizor LED, wypełniłby on tablicę buforów IR zaledwie 67 kodami, ale pozostałe 20 kodów z poprzedniej operacji nadal byłoby w okolicy

Wynik? Telewizor LED nie włącza się, ponieważ bufor kodów IR został uszkodzony przez dodatkowe 20 kodów, które nie zostały wyczyszczone z poprzedniej operacji!

Fix 1 (łatwe wyjście, niezalecane)

Zmień szkic Arduino w następujący sposób:

Zmień następujące wywołania funkcji w funkcji loop(){}

prześlijIRCode();

przesłaćIRCode(c);

Wprowadź zmiany w podpisie powyższej funkcji:

void transmitIRCode(int codeLen){ //stała RAWBUF zastąpiona przez codeLen IRTransmitter. IRSendRaw::send(IRCodeBuffer, codeLen, 38); }

Chociaż jest to łatwe, tablica nigdy nie zostaje całkowicie wyczyszczona i dlatego nie jest to bardzo czyste rozwiązanie

Fix 2 (nie jest twardy, zalecany)

Zadeklaruj dodatkową zmienną na samej górze szkicu Arduino, po sekcji komentarzy:

unsigned int EMPTY_INT_VALUE;

Dodaj to na początku funkcji setup():

//Przechwyć naturalny stan pustej zmiennej liczby całkowitej bez znakuEMPTY_INT_VALUE = IRCodeBuffer[0];

Przewiń w dół i dodaj nową funkcję do szkicu zaraz po funkcji transmitIRCode():

void clearIRCodeBuffer(int codeLen){//Wyczyść wszystkie kody z tablicy//UWAGA: ustawienie elementów tablicy na 0 nie jest rozwiązaniem!for(int i=1;i<=codeLen;i++){IRCodeBuffer[i-1]=EMPTY_INT_VALUE;}}

Na koniec wywołaj nową funkcję powyżej w następującej lokalizacji w funkcji loop():

//Reset - Wznów odczytywanie Serial PortclearIRCodeBuffer(c);…

Jest to bardziej przejrzyste podejście, ponieważ w rzeczywistości resetuje wszystkie lokalizacje w tablicy buforów IR, które zostały zapełnione najnowszym sygnałem kodu IR, nie pozostawiając niczego przypadkowi.

Ulepszenie 2 (bardziej zaangażowane): Powtarzanie transmisji sygnału IR dla niektórych urządzeń

Niektóre urządzenia wymagają wielokrotnego przesłania tego samego sygnału, aby odpowiedzieć Przykład: W tym przypadku Samsung Sound Bar wymaga dwukrotnego przesłania tego samego kodu w odstępie 1 sekundy

Poprawka w koncepcji została omówiona tutaj, ponieważ jest nieco bardziej zaangażowana i wymaga testów

Dodanie funkcji powtarzania do Ardunio Sketch będzie oznaczać, że będziesz musiał flashować Sketch za każdym razem, gdy dodasz nowe urządzenie do systemu automatyki domowej

Zamiast tego dodanie tej poprawki do klienta HTML SignalR i aplikacji usługi Python SignalR sprawia, że rozwiązanie jest znacznie bardziej elastyczne. A można to osiągnąć w zasadzie w następujący sposób:

Zmodyfikuj klienta SignalR HTML, aby przesyłać powtarzające się informacje do koncentratora

Otwórz index.html i osadź wartość powtórzenia w przycisku HTML w następujący sposób:

value="SMSNG-SB-PWR-ON" zmieni się na value="SMSNG-SB-PWR-ON_2_1000"

Gdzie 2 to wartość powtarzania, a 1000 to wartość opóźnienia w milisekundach między dwoma powtarzającymi się sygnałami

Po kliknięciu tego przycisku centrum SignalR otrzyma klucz Code+Repeat_Spec

Zmodyfikuj metody po stronie serwera sygnalizującego, aby przeanalizować tylko kod klucza:

  • Użyj kodu klucza, aby jak zwykle pobrać kod IR z bazy danych
  • Prześlij Key Code+Repeat_Spec i IRCode do klientów SingalR jak zwykle

Zmodyfikuj aplikację usługi Python SignalR, aby przesyłać sygnały przy użyciu wartości powtarzania:

Otwórz klienta Pythona i zmodyfikuj następujące dwie funkcje:

def print_command_from_hub(buttonId, cmdSrc):

# przeanalizuj powtórzony kod z wartości buttonId

def transmitToArduino(IRSignalCode, delim, endPrefix):

# skonfiguruj chwilę lub pętlę, aby przesłać sygnał na żądanej częstotliwości

  • W ten sposób Arduino nie musi być wielokrotnie flashowane
  • W tym systemie można wbudować dowolną liczbę powtarzających się częstotliwości
  • Poza tym, jeśli używasz UNO, istnieje limit rozmiaru, do którego Twój Sketch może urosnąć!

Krok 11: Znane problemy i obawy dotyczące bezpieczeństwa

Podobnie jak w przypadku systemów zbudowanych po raz pierwszy, ten ma kilka problemów, które wyszły na jaw podczas testów.

Problem 1: Uruchamianie poleceń w krótkich odstępach czasu z opóźnieniami mniejszymi niż sekundę między kliknięciami przycisków powodowało, że system przestawał odpowiadać po kilku pierwszych odpowiedziach.

  • Ponowne uruchomienie klienta Python SignalR przywraca system z powrotem do normalnych operacji
  • Natychmiastowe rozwiązania mogą polegać na usunięciu niechcianych danych wyjściowych debugowania zarówno w kliencie sygnalizacyjnym Python, jak i szkicu Arduino i powtórzeniu tych testów
  • Innym miejscem, na które należy zwrócić uwagę, byłaby sama komunikacja szeregowa - czy byłoby możliwe dodanie kodu, aby szybko opróżnić bufor?

To powiedziawszy, zauważyłem, że mój telewizor nie reaguje dobrze na pilota fabrycznego - dlatego sam charakter komunikacji IR mojego telewizora może również mieć wpływ na to.

Problem 2: Ekran HTML przestaje reagować na kliknięcia przycisków po długim okresie braku aktywności

Zwykle odświeżenie strony rozwiązuje to zachowanie – przyczyna tego zachowania jest jednak nadal niejasna

OBAWY BEZPIECZEŃSTWA

Ten system został zaprojektowany wyłącznie do użytku w sieci lokalnej (domowej) i nie posiada niezbędnych zabezpieczeń, aby można było używać go przez Internet

W związku z tym zaleca się wdrożenie usługi SignalR Hub na komputerze lokalnym w sieci lokalnej/domowej

Dziękuję za przeczytanie mojego IBLE i mam nadzieję, że dobrze się bawisz!

Zalecana: