Programowanie wizualne dla Sonoff Basic

Programowanie wizualne dla Sonoff Basic
Artykuł o tym jak stworzyć programowalny sterownik logiczny z taniego chińskiego urządzenia. Takie urządzenie znajdzie zastosowanie zarówno w automatyce domowej, jak i jako zajęcia praktyczne z informatyki szkolnej.
Dla porównania program Sonoff Basic domyślnie współpracuje z aplikacją mobilną poprzez chińską usługę chmurową, po proponowanej modyfikacji wszelka dalsza interakcja z tym urządzeniem będzie możliwa w przeglądarce.

Rozdział I. Podłączenie Sonoff do usługi MGT24

Krok 1: Utwórz panel sterowania

Zarejestruj się na stronie mgt24 (jeśli nie jesteś jeszcze zarejestrowany) i zaloguj się przy użyciu swojego konta.
Zaloguj sieProgramowanie wizualne dla Sonoff Basic

Aby utworzyć panel sterowania dla nowego urządzenia, kliknij przycisk „+”.
Przykład tworzenia paneluProgramowanie wizualne dla Sonoff Basic

Po utworzeniu panelu pojawi się on na liście paneli.

W zakładce „Konfiguracja” utworzonego panelu znajdź pola „Identyfikator urządzenia” i „Klucz autoryzacyjny”, w przyszłości informacja ta będzie wymagana podczas konfiguracji urządzenia Sonoff.
Przykład zakładkiProgramowanie wizualne dla Sonoff Basic

Krok 2. Zreflashuj urządzenie

Korzystanie z narzędzia XTCOM_UTIL pobierz oprogramowanie PLC Sonoff Podstawowy do urządzenia, do tego potrzebny będzie konwerter USB-TTL. Tutaj instrukcja и instrukcja wideo.

Krok 3. Konfiguracja urządzenia

Podłącz urządzenie do zasilania, po zaświeceniu się diody naciśnij przycisk i przytrzymaj go, aż dioda zacznie okresowo i równomiernie migać.
W tym momencie pojawi się nowa sieć Wi-Fi o nazwie „PLC Sonoff Basic”, podłącz swój komputer do tej sieci.
Objaśnienie sygnalizacji LED

Sygnalizacja LED
Status urządzenia

okresowe podwójne miganie
brak połączenia z routerem

świeci nieprzerwanie
nawiązane połączenie z routerem

okresowe jednolite miganie
tryb punktu dostępu Wi-Fi

zgasł
Brak zasilania

Otwórz przeglądarkę internetową i wpisz w pasku adresu tekst „192.168.4.1”, przejdź do strony ustawień ustawień sieciowych urządzenia.

Wypełnij pola w następujący sposób:

  • „Nazwa sieci” i „Hasło” (aby połączyć urządzenie z domowym routerem Wi-Fi).
  • „Identyfikator urządzenia” i „Klucz autoryzacyjny” (do autoryzacji urządzenia w serwisie MGT24).

Przykład ustawienia parametrów sieciowych urządzeniaProgramowanie wizualne dla Sonoff Basic

Zapisz ustawienia i uruchom ponownie urządzenie.
Tutaj instrukcja wideo.

Krok 4. Podłączenie czujników (opcjonalnie)

Obecne oprogramowanie obsługuje do czterech czujników temperatury ds18b20. Tutaj instrukcja wideo do montażu czujników. Najwyraźniej ten krok będzie najtrudniejszy, ponieważ będzie wymagał prostych ramion i lutownicy.

Sekcja II. Programowanie wizualne

Krok 1: Utwórz skrypty

Używany jako środowisko programistyczne Blokowo, środowisko jest łatwe do nauczenia, więc nie musisz być programistą, aby tworzyć proste skrypty.

Dodałem specjalizowane bloki do zapisu i odczytu parametrów urządzenia. Dostęp do dowolnego parametru można uzyskać po nazwie. Dla parametrów urządzeń zdalnych stosowane są nazwy złożone: „parametr@urządzenie”.
Rozwijana lista opcjiProgramowanie wizualne dla Sonoff Basic

Przykładowy scenariusz cyklicznego włączania i wyłączania obciążenia (1 Hz):
Programowanie wizualne dla Sonoff Basic

Przykład skryptu synchronizującego pracę dwóch odrębnych urządzeń. Mianowicie przekaźnik urządzenia docelowego powtarza działanie przekaźnika urządzenia zdalnego.
Programowanie wizualne dla Sonoff Basic

Scenariusz dla termostatu (bez histerezy):
Programowanie wizualne dla Sonoff Basic

Do tworzenia bardziej złożonych skryptów można używać zmiennych, pętli, funkcji (z argumentami) i innych konstrukcji. Nie będę tutaj opisywać tego wszystkiego szczegółowo, w sieci jest już tego całkiem sporo. materiały edukacyjne o Blockly.

Krok 2: Kolejność skryptów

Skrypt działa w sposób ciągły i gdy tylko dobiegnie końca, rozpoczyna się od nowa. W tym przypadku istnieją dwa bloki, które mogą tymczasowo wstrzymać skrypt: „opóźnienie” i „wstrzymanie”.
Blok „delay” służy do opóźnień milisekundowych lub mikrosekundowych. Blokada ta ściśle utrzymuje odstęp czasowy, blokując pracę całego urządzenia.
Blokada „pauza” stosowana jest w przypadku opóźnień sekundowych (lub mniejszych) i nie blokuje wykonywania innych procesów w urządzeniu.
Jeżeli sam skrypt zawiera nieskończoną pętlę, której treść nie zawiera „pauzy”, interpreter samodzielnie inicjuje krótką pauzę.
Jeśli przydzielony stos pamięci zostanie wyczerpany, interpreter przestanie wykonywać tak energochłonny skrypt (uważaj na funkcje rekurencyjne).

Krok 3: Debugowanie skryptów

Aby zdebugować skrypt, który został już załadowany do urządzenia, możesz krok po kroku uruchomić śledzenie programu. Może to być niezwykle przydatne, gdy zachowanie skryptu okazało się odmienne od zamierzeń autora. W takim przypadku śledzenie pozwala autorowi szybko znaleźć źródło problemu i poprawić błąd w skrypcie.

Scenariusz obliczenia silni w trybie debugowania:
Programowanie wizualne dla Sonoff Basic

Narzędzie do debugowania jest bardzo proste i składa się z trzech głównych przycisków: „start”, „jeden krok do przodu” i „stop” (nie zapominajmy też o trybie debugowania „wejdź” i „wyjdź”). Oprócz śledzenia krok po kroku możesz ustawić punkt przerwania w dowolnym bloku (klikając na blok).
Aby wyświetlić aktualne wartości parametrów (czujników, przekaźników) na monitorze należy skorzystać z bloku „drukuj”.
Tutaj film poglądowy o korzystaniu z debugera.

Sekcja dla ciekawskich. Co kryje się pod maską?

Aby skrypty mogły działać na urządzeniu docelowym, opracowano interpreter kodu bajtowego i asembler z 38 instrukcjami. Kod źródłowy Blockly ma wbudowany wyspecjalizowany generator kodu, który konwertuje bloki wizualne na instrukcje montażu. Następnie ten program asemblera jest konwertowany na kod bajtowy i przesyłany do urządzenia w celu wykonania.
Architektura tej maszyny wirtualnej jest dość prosta i nie ma sensu jej opisywać, w Internecie można znaleźć wiele artykułów na temat projektowania najprostszych maszyn wirtualnych.
Zwykle przydzielam 1000 bajtów na stos mojej maszyny wirtualnej, co wystarczy. Oczywiście głębokie rekurencje mogą wyczerpać dowolny stos, ale jest mało prawdopodobne, że będą miały jakiekolwiek praktyczne zastosowanie.

Wynikowy kod bajtowy jest dość zwarty. Na przykład kod bajtowy do obliczenia tej samej silni ma tylko 49 bajtów. Oto jego forma wizualna:
Programowanie wizualne dla Sonoff Basic

A to jest jego program w asemblerze:

shift -1
ldi 10
call factorial, 1
print
exit
:factorial
ld_arg 0
ldi 1
gt
je 8
ld_arg 0
ld_arg 0
ldi 1
sub
call factorial, 1
mul
ret
ldi 1
ret

Jeśli forma reprezentacji w montażu nie ma żadnej praktycznej wartości, wówczas zakładka „javascrit” przeciwnie, daje bardziej znajomy wygląd niż bloki wizualne:

function factorial(num) {
  if (num > 1) {
    return num + factorial(num - 1);
  }
  return 1;
}

window.alert(factorial(10));

Jeśli chodzi o wydajność. Kiedy uruchomiłem najprostszy skrypt flashera, na ekranie oscyloskopu otrzymałem falę prostokątną o częstotliwości 47 kHz (przy taktowaniu procesora 80 MHz).
Programowanie wizualne dla Sonoff BasicProgramowanie wizualne dla Sonoff Basic
Myślę, że to dobry wynik, przynajmniej ta prędkość jest prawie dziesięciokrotnie większa niż Luka и Espruino.

Ostatnia część

Podsumowując, powiem, że zastosowanie skryptów pozwala nie tylko zaprogramować logikę działania osobnego urządzenia, ale także daje możliwość połączenia kilku urządzeń w jeden mechanizm, gdzie jedne urządzenia wpływają na zachowanie innych.
Zaznaczam też, że wybrany sposób przechowywania skryptów (bezpośrednio w samych urządzeniach, a nie na serwerze) ułatwia przełączenie już działających urządzeń na inny serwer, np. na domową Raspberry, tutaj instrukcja.

To wszystko, chętnie wysłucham rad i konstruktywnej krytyki.

Źródło: www.habr.com

Dodaj komentarz