Visuelles Programmieren fĂŒr Sonoff Basic

Visuelles Programmieren fĂŒr Sonoff Basic
Ein Artikel, der beschreibt, wie Sie aus einem gĂŒnstigen chinesischen GerĂ€t einen programmierbaren Logik-Controller erstellen können. Dieses GerĂ€t findet sowohl in der Hausautomatisierung als auch als praktisches Projekt im Informatikunterricht Anwendung.
Zur Information: StandardmĂ€ĂŸig funktioniert das Sonoff Basic-Programm mit einer mobilen App ĂŒber einen chinesischen Cloud-Service. Nach der vorgeschlagenen Umprogrammierung wird die gesamte weitere Interaktion mit diesem GerĂ€t ĂŒber den Browser möglich sein.

Abschnitt I. Sonoff mit dem MGT24-Service verbinden

Schritt 1. Erstellen eines Dashboards

Registrieren Sie sich auf der Website mgt24 (falls Sie noch nicht registriert sind) und melden Sie sich mit Ihrem Konto an.
AnmeldungVisuelles Programmieren fĂŒr Sonoff Basic

Um ein Dashboard fĂŒr das neue GerĂ€t zu erstellen, klicken Sie auf die SchaltflĂ€che „+“.
Beispiel eines DashboardsVisuelles Programmieren fĂŒr Sonoff Basic

Sobald das Dashboard erstellt ist, erscheint es in Ihrer Liste der Dashboards.

Im Tab „Einstellungen“ des erstellten Dashboards finden Sie die Felder „GerĂ€te-ID“ und „AuthentifizierungsschlĂŒssel“. Diese Informationen werden spĂ€ter zur Konfiguration des Sonoff-GerĂ€ts benötigt.
Beispiel-TabVisuelles Programmieren fĂŒr Sonoff Basic

Schritt 2. Firmware des GerÀts aktualisieren

Mit dem Werkzeug XTCOM_UTIL laden Sie die Firmware PLK Sonoff Basic auf das GerĂ€t, hierfĂŒr benötigen Sie einen USB-TTL-Konverter. Hier finden Sie die Anleitung und Videoanleitung.

Schritt 3. GerÀteeinrichtung

Versorgen Sie das GerĂ€t mit Strom; sobald die LED leuchtet, drĂŒcken und halten Sie die Taste, bis die LED regelmĂ€ĂŸig blinkt.
Zu diesem Zeitpunkt erscheint ein neues WLAN-Netzwerk mit dem Namen „PLC Sonoff Basic“. Verbinden Sie Ihren Computer mit diesem Netzwerk.
EntschlĂŒsselung der LED-Anzeige

LED-Anzeige
GerÀtezustand

periodisches doppeltes Blinken
keine Verbindung zum Router

leuchtet kontinuierlich
Verbindung zum Router hergestellt

periodisches gleichmĂ€ĂŸiges Blinken
WLAN-Hotspot-Modus

ausgeschaltet
kein Strom

Öffnen Sie Ihren Internetbrowser und geben Sie in die Adresszeile „192.168.4.1“ ein, um auf die Netzwerkparameter-Einstellungsseite des GerĂ€ts zu gelangen.

FĂŒllen Sie die Felder wie folgt aus:

  • „Netzwerkname“ und „Passwort“ (um das GerĂ€t mit Ihrem heimischen WLAN-Router zu verbinden).
  • „GerĂ€te-ID“ und „AutorisierungsschlĂŒssel“ (um das GerĂ€t im MGT24-Dienst zu authentifizieren).

Beispiel fĂŒr die Netzwerkkonfiguration des GerĂ€tsVisuelles Programmieren fĂŒr Sonoff Basic

Speichern Sie die Einstellungen und starten Sie das GerÀt neu.
Hier Videoanleitung.

Schritt 4. Anschluss der Sensoren (optional)

Die aktuelle Firmware unterstĂŒtzt bis zu vier Temperatursensoren ds18b20. Hier Videoanleitung finden Sie Informationen zur Montage der Sensoren. Offensichtlich wird dieser Schritt der schwierigste sein, da er von Ihnen Handgeschick und einen Lötkolben erfordert.

Abschnitt II. Visuelle Programmierung

Schritt 1. Erstellung von Szenarien

Als Programmierumgebung wird Blockly, eine benutzerfreundliche Umgebung, verwendet, sodass Sie keine Programmierkenntnisse benötigen, um einfache Szenarien zu erstellen.

Ich habe spezielle Blöcke zum Lesen und Schreiben der GerĂ€teeinstellungen hinzugefĂŒgt. Der Zugriff auf jeden Parameter erfolgt ĂŒber den Namen. FĂŒr Parameter von entfernten GerĂ€ten werden zusammengesetzte Namen verwendet: „parameter@device“.
Dropdown-MenĂŒ der ParameterVisuelles Programmieren fĂŒr Sonoff Basic

Beispiel fĂŒr ein Szenario zum zyklischen Ein- und Ausschalten der Last (1 Hz):
Visuelles Programmieren fĂŒr Sonoff Basic

Beispiel fĂŒr ein Szenario, das die Arbeit von zwei separaten GerĂ€ten synchronisiert. Das Relais des ZielgerĂ€ts spiegelt die Arbeit des Relais des entfernten GerĂ€ts wider.
Visuelles Programmieren fĂŒr Sonoff Basic

Szenario fĂŒr das Thermostat (ohne Hysterese):
Visuelles Programmieren fĂŒr Sonoff Basic

Um komplexere Skripte zu erstellen, können Sie Variablen, Schleifen, Funktionen (mit Argumenten) und andere Konstrukte verwenden. Ich werde hier nicht alles ausfĂŒhrlich erklĂ€ren, es gibt bereits einiges an Schulungsmaterial zu Blockly.

Schritt 2. AusfĂŒhrungsreihenfolge der Skripte

Ein Skript lĂ€uft im kontinuierlichen Modus und wird sofort erneut gestartet, sobald es zu seinem Ende kommt. Dabei gibt es zwei Blöcke, die die AusfĂŒhrung des Skripts vorĂŒbergehend anhalten können: «delay» und «pause».
Der Block «delay» wird fĂŒr Millisekunden- oder Mikrosekundenverzögerungen verwendet. Dieser Block hĂ€lt den zeitlichen Intervall strikt ein und blockiert die Arbeit des gesamten GerĂ€ts.
Der Block «pause» wird fĂŒr Sekundenverzögerungen (auch kĂŒrzer möglich) verwendet und blockiert nicht die AusfĂŒhrung anderer Prozesse im GerĂ€t.
Wenn ein Skript einen unendlichen Loop enthÀlt, in dessen Körper kein «pause»-Befehl steht, initiiert der Interpreter selbststÀndig eine kleine Pause.
Falls der zugewiesene Stack-Speicher erschöpft ist, stoppt der Interpreter die AusfĂŒhrung eines solchen speicherintensiven Skripts (passen Sie auf rekursive Funktionen auf).

Schritt 3. Debbuging von Skripten

Um ein bereits auf das GerĂ€t geladenes Skript zu debuggen, kann die Programmtreiberung Schritt fĂŒr Schritt gestartet werden. Dies ist Ă€ußerst nĂŒtzlich, wenn das Verhalten des Skripts nicht den Erwartungen des Autors entspricht. In diesem Fall ermöglicht die Treiberung dem Autor, schnell die Quelle des Problems zu finden und den Fehler im Skript zu beheben.

Skript zur Berechnung der FakultÀt im Debugging-Modus:
Visuelles Programmieren fĂŒr Sonoff Basic

Das Debugging-Tool ist sehr einfach und besteht aus drei HauptschaltflÀchen: «Start», «Ein Schritt vorwÀrts» und «Stopp» (vergessen wir nicht den «Eintritt» und «Ausgang» aus dem Debugging-Modus). Neben der schrittweisen Treiberung kann an jedem Block ein Haltepunkt gesetzt werden (ein einfacher Klick mit der Maus auf den Block).
Um die aktuellen Werte der Parameter (Sensoren, Relais) auf dem Monitor anzuzeigen, verwenden Sie den Block «print».
Hier Übersichtsvideo ĂŒber die Verwendung des Debuggers.

Bereich fĂŒr Neugierige. Was steckt dahinter?

Um die Szenarien auf dem ZielgerĂ€t auszufĂŒhren, wurde ein Bytecode-Interpreter und ein Assembler mit 38 Instruktionen entwickelt. Ein spezialisierter Code-Generator wurde in den Quellen von blockly integriert, der visuelle Blöcke in Assembleranweisungen umwandelt. Anschließend wird dieses Assemblerprogramm in Bytecode umgewandelt und an das GerĂ€t zur AusfĂŒhrung ĂŒbergeben.
Die Architektur dieser virtuellen Maschine ist ziemlich einfach, weshalb es keinen besonderen Sinn macht, sie im Detail zu beschreiben. Im Internet finden Sie zahlreiche Artikel ĂŒber das Design einfacher virtueller Maschinen.
FĂŒr den Stack meiner virtuellen Maschine reserviere ich normalerweise 1000 Bytes, was mehr als ausreichend ist. NatĂŒrlich können tiefe Rekursionen jeden Stack erschöpfen, aber es ist unwahrscheinlich, dass sie in der Praxis nĂŒtzlich sind.

Der resultierende Bytecode ist ziemlich kompakt. Zum Beispiel betrĂ€gt der Bytecode fĂŒr die Berechnung der FakultĂ€t nur 49 Bytes. Hier ist seine visuelle Darstellung:
Visuelles Programmieren fĂŒr Sonoff Basic

Und hier ist sein Assemblerprogramm:

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

Wenn die assemblermĂ€ĂŸige Darstellung keinen praktischen Wert hat, bietet der Tab „JavaScript“ hingegen eine vertrautere Ansicht als visuelle Blöcke:

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

window.alert(factorial(10));

Was die Leistung betrifft. Bei der AusfĂŒhrung eines einfachen Blinkerskripts erhielt ich auf dem Oszilloskopbildschirm ein 47 kHz-MĂ€ander (bei einer Prozessor-Taktfrequenz von 80 MHz).
Visuelles Programmieren fĂŒr Sonoff BasicVisuelles Programmieren fĂŒr Sonoff Basic
Ich halte dies fĂŒr ein anstĂ€ndiges Ergebnis, denn diese Geschwindigkeit ist fast zehnmal schneller als die von Lua und Espruino.

Abschließender Teil

Zusammenfassend lÀsst sich sagen, dass der Einsatz von Skripten es uns nicht nur ermöglicht, die Logik eines einzelnen GerÀts zu programmieren, sondern auch mehrere GerÀte zu einem einzigen Mechanismus zu verbinden, bei dem die einen GerÀte das Verhalten der anderen beeinflussen.
Ich möchte auch anmerken, dass die gewÀhlte Methode zur Speicherung der Skripte (direkt in den GerÀten, nicht auf einem Server) es erleichtert, bereits funktionierende GerÀte auf einen anderen Server, beispielsweise einen Heim-Raspberry, umzuschalten. finden Sie die Anleitung.

Das ist alles, ich freue mich auf RatschlÀge und konstruktive Kritik.

Quelle: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster