Ein Beispiel für ein Skript, das Sie direkt im Editor der Weboberfläche schreiben können. Es läuft einmal pro Sekunde und beginnt, sobald die Brennblasentemperatur 70 Grad erreicht, das am ersten Port des Expanders PCF8575 angeschlossene Gerät ein- und auszuschalten; außerdem meldet es dies an den UART und an die Browserkonsole
if TankTemp > 70 then
if exp_digitalRead(1) == 0 then
exp_digitalWrite(1,1)
print("Включено")
else
exp_digitalWrite(1,0)
print("Выключено")
end
end
Ein Beispiel für ein Skript, das einen Wert von einem analogen Füllstandssensor am Eingang LUA_PIN (34 bei der Platine DEVKIT) liest und die Wasserpumpe steuert (zum Beispiel, um Maische in die Brennblase zu pumpen). Liegt das Signal im Bereich von 1000 bis 2000, schaltet es die Pumpe ein; bei einem Signal von null schaltet es sie aus. Das Skript wird direkt im Browser geschrieben und kann sofort nach dem Speichern ausgeführt werden. Pin 4 ist WATER_PUMP_PIN der Platine DEVKIT; bei anderen Platinen setzen Sie Ihre eigene Nummer ein.
start_pump = getObject("start_pump", "NUMERIC") + 0 --den numerischen Wert aus einem zuvor gespeicherten Objekt holen und in eine Zahl umwandeln
sensor = analogRead() --den analogen Wert von LUA_PIN lesen (für Lua reserviert)
--sensor = 1500
if sensor >= 1000 and sensor <= 2000 and start_pump == 0 then
setObject("start_pump", 1) --den Wert in einem Objekt im Speicher von Samovar ablegen, damit er im nächsten Durchlauf des Skripts verwendet werden kann
digitalWrite(4,1) --High-Pegel an Pin 4 setzen
print("Start pump") --[=[in den COM-Port schreiben. Sie können auch den Befehl sendMsg("Msg", Level) verwenden. Bei Level = -1 wird die Meldung an den COM-Port und an die Browserkonsole ausgegeben, was beim Debuggen praktisch ist. Bei Level 0, 1 oder 2 wird die Meldung als Systemmeldung gesendet]=]
--sendMsg("Start pump",-1)
elseif sensor == 0 then
setObject("start_pump", 0) --den Wert in einem Objekt im Speicher von Samovar ablegen, damit er im nächsten Durchlauf des Skripts verwendet werden kann
if (start_pump == 1) then
digitalWrite(4,0) --Low-Pegel an Pin 4 setzen
print("Finish pump")
end
end
Fertige Skripte, die zusammen mit der Weboberfläche auf Samovar hochgeladen werden:
rectificat.lua – Befüllen der Brennblase mit einer Pumpe anhand eines Füllstandssensors oder eines Wasserdurchflusssensors (Volumen und Sensorschwellen werden am Anfang der Datei festgelegt).
dist.lua – Destillation mit Aufteilung auf drei Behälter: Das Skript merkt sich die Brennblasentemperatur zu Beginn des Siedens und schaltet, wenn sie um einen vorgegebenen Sollwert steigt (oder wenn der Alkoholgehalt sinkt), den Servo auf den nächsten Behälter um und senkt dabei auf Wunsch die Leistung.
cheese.lua – eine Skriptvorlage für die L-Zeile eines Programms zur Käseherstellung.
btn_<mode>_button1.lua „Starten“ («Начать») und btn_<mode>_button2.lua „Stoppen“ («Остановить») – Ein- und Ausschalten des Sekundenzyklus für jeden Modus.
Weitere Beispiele finden Sie im Ordner Lua_script des
Samovar-Repositorys auf GitHub: Temperaturregelung der Gärung (beer_mash.lua), Steuerung der Drehzahl der Wasserpumpe per Tasten, Destillation mit Aufkonzentrierung (dist_degidrate.lua), Senden von Messwerten an einen externen Webdienst über HTTP (http_request_telegram.lua), Halten des Vorflutens anhand eines Drucksensors sowie Skripte für die NBK.