Programowanie wizualne dla Sonoff Basic

Programowanie wizualne dla Sonoff Basic
Artykuł o tym, jak stworzyć programowalny sterownik logiczny z taniego chińskiego urządzenia. Urządzenie to znajdzie zastosowanie zarówno w automatyce domowej, jak i jako praktyczna lekcja informatyki w szkole.
Dla porównania, domyślnie program Sonoff Basic współpracuje z aplikacją mobilną za pośrednictwem chińskiej usługi chmurowej. 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 jeszcze nie jesteś zarejestrowany) i zaloguj się na swoje konto.
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 „Instalacja” utworzonego panelu znajdź pola „Identyfikator urządzenia” i „Klucz autoryzacyjny”; później, informacje te będą potrzebne podczas konfiguracji urządzenia Sonoff.
Przykład zakładkiProgramowanie wizualne dla Sonoff Basic

Krok 2. Ponowne flashowanie urządzenia

Korzystanie z narzędzia XTCOM_UTIL pobierz oprogramowanie układowe PLC Sonoff Podstawowy do urządzenia, w tym celu 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 LED naciśnij przycisk i przytrzymaj go, aż dioda LED zacznie 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.
Dekodowanie wskaźnika LED

Sygnalizacja LED
Status urządzenia

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

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

okresowe, równomierne mruganie
Tryb hotspotu Wi-Fi

zgaszony
brak zasilania

Otwórz przeglądarkę internetową i wpisz „192.168.4.1” w pasku adresu, przejdź do strony 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 konfiguracji parametrów sieciowych urządzeniaProgramowanie wizualne dla Sonoff Basic

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

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

Obecne oprogramowanie sprzętowe obsługuje do czterech czujników temperatury ds18b20. Tutaj instrukcja wideo do montażu czujników. Ten krok będzie prawdopodobnie najtrudniejszy, ponieważ wymaga pewnych ruchów rąk i lutownicy.

Rozdział II. Programowanie wizualne

Krok 1: Utwórz skrypty

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

Dodałem specjalistyczne bloki do zapisu i odczytu parametrów urządzenia. Do każdego parametru można uzyskać dostęp według nazwy. W przypadku parametrów urządzeń zdalnych używane są nazwy złożone: „parametr@urządzenie”.
Lista rozwijana parametrówProgramowanie wizualne dla Sonoff Basic

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

Przykład skryptu synchronizującego działanie dwóch oddzielnych urządzeń. Mianowicie, przekaźnik urządzenia docelowego replikuje działanie przekaźnika urządzenia zdalnego.
Programowanie wizualne dla Sonoff Basic

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

Aby tworzyć bardziej złożone skrypty, możesz używać zmiennych, pętli, funkcji (z argumentami) i innych konstrukcji. Nie będę tego tutaj opisywał szczegółowo, jest tego już w internecie sporo materiały edukacyjne o Blockly.

Krok 2. Kolejność wykonywania skryptu

Skrypt działa w sposób ciągły i po osiągnięciu końca zaczyna się od nowa. Istnieją dwa bloki, które mogą tymczasowo wstrzymać skrypt: „delay” i „pause”.
Blok „delay” używany jest do opóźnień milisekundowych lub mikrosekundowych. Blokada ta ściśle utrzymuje odstęp czasowy, blokując działanie całego urządzenia.
Blok „pauzy” używany jest w przypadku opóźnień trwających jedną sekundę (lub krócej) i nie blokuje wykonywania innych procesów w urządzeniu.
Jeśli skrypt zawiera w sobie pętlę nieskończoną i nie ma w jego treści żadnej „pauzy”, interpreter automatycznie zainicjuje krótką pauzę.
Jeśli przydzielona pamięć stosu zostanie wyczerpana, interpreter zaprzestanie wykonywania tak żarłocznego skryptu (należy zachować ostrożność w przypadku funkcji rekurencyjnych).

Krok 3: Debugowanie skryptów

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

Skrypt do obliczania silni w trybie debugowania:
Programowanie wizualne dla Sonoff Basic

Narzędzie debugowania jest bardzo proste i składa się z trzech głównych przycisków: „start”, „krok do przodu” i „stop” (nie zapominajmy o „wejściu” i „wyjściu” z trybu debugowania). Oprócz śledzenia krok po kroku możesz ustawić punkt przerwania w dowolnym bloku (klikając myszką nad blokiem).
Aby wyświetlić na monitorze aktualne wartości parametrów (czujników, przekaźników) należy użyć bloku „print”.
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 bajtkodu i asembler składający się z 38 instrukcji. Kod źródłowy Blockly ma wbudowany specjalistyczny generator kodu, który konwertuje bloki wizualne na instrukcje języka assembler. Następnie program asemblera jest konwertowany na kod bajtowy i wysyłany do urządzenia w celu wykonania.
Architektura tej maszyny wirtualnej jest dość prosta i nie ma sensu jej opisywać; w Internecie znajdziesz wiele artykułów na temat projektowania prostych maszyn wirtualnych.
Zazwyczaj przeznaczam na stos mojej maszyny wirtualnej 1000 bajtów, co w zupełności wystarcza. Oczywiście, głęboka rekurencja może wyczerpać każdy stos, ale mało prawdopodobne jest, aby znalazła jakiekolwiek praktyczne zastosowanie.

Powstały kod bajtowy jest dość zwarty. Na przykład kod bajtowy służący do obliczenia tej samej silni ma tylko 49 bajtów. Oto jego wizualna reprezentacja:
Programowanie wizualne dla Sonoff Basic

A oto jego program asemblerowy:

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 prezentacji w asemblerze nie ma żadnej wartości praktycznej, to zakładka „javascrit” wręcz przeciwnie, daje widok bardziej znajomy 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ść. Podczas uruchamiania najprostszego scenariusza z migaczem na ekranie oscyloskopu otrzymałem meander o częstotliwości 47 kHz (przy częstotliwości taktowania 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ęć razy szybsza niż Luka и Espruino.

Ostatnia część

Podsumowując powiem, że wykorzystanie scenariuszy pozwala nam nie tylko zaprogramować logikę działania oddzielnego urządzenia, ale także umożliwia połączenie kilku urządzeń w jeden mechanizm, w którym jedne urządzenia wpływają na zachowanie innych.
Chciałbym również zauważyć, że wybrany sposób przechowywania skryptów (bezpośrednio w samych urządzeniach, a nie na serwerze) ułatwia przenoszenie już działających urządzeń na inny serwer, np. na domowego Raspberry, tutaj instrukcja.

To na razie tyle. Chętnie wysłucham rad i konstruktywnej krytyki.

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

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster