2018
HOME

ESP8266 in Excel via WiFi: Teil 2 (VBA- und ESP8266-Basic)
BASIC meets BASIC
Ergänzung zum Buch: Messen, Steuern und Regeln mit Word & Excel

Eine völlig in BASIC realisierte Lösung zum drahltlosen Steuern und Messen mit dem ESP8266 unter Excel soll hier dargestellt werden. Im Teil 1 steht in der Fußnote, dass VBScript eigentlich nicht nötig ist, vielmehr zeigt sich, dass VBScript-Beispiele auch in VBA funktionieren. Mit dem im Buch Messen Steuern Regeln mit Smartphone und Tablet gezeigten Möglichkeiten von ESP8266 BASIC kann folgendes funktionierende Tablellenblatt erstellt werden:
Messen, Steuern und Regeln in Word & Excel. Cover des Reprints von 2017/2018
ESP8266 Witty Cloud und Excel verstehen sich über WiFi in ESPBASIC und VBA. Das Makro ist weiter unten aufgeführt.

Als MSR mit Word & Excel erschien war das Internet eine Nebenerscheinung. Inzwischen ist drahtloses Messen und Steuern mit den Mitteln, die das Internet mitbringt, wie z.B. WiFi und TCP/IP, normal und überall verfügbar. Andererseits wurden einige Dinge durch die Verbreitung dieser Technologie auch aus Sicherheitsgründen komplizierter.

Der ESP8266 kann als Meilenstein dieser drahtlosen Technik aufgefasst werden und durch die Möglichkeit dieses winzige Teil sogar über WLAN in Basic zu programmieren, wurde vieles einfacher. Die seriellen Schnittstellen haben sich geändert, die Makros kaum.

Benutzte Komponenten:


Als Blockdarstellung - wie im Buch - könnte sich etwa
dieses Bild des Zusammenspiels ergeben

Wie ESPBasic in den ESP übertragen wird steht hier oder in [1] mit Beispielen. ESPBasic läuft im ESP8266 und ist über TCP/IP erreichbar. Es teilt sich im Browser mit, der eine Art Entwicklungsumgebung darstellt. Die Programme laufen auch wenn keine Browserverbindung mehr besteht. Damit ein Basic-Programm "default.bas" nach dem Einschalten automatisch startet, muss in den Einstellungen der entsprechende Haken gesetzt sein und mit Save/Update gesichert werden:

Auch nach Spannungsunterbrechungen startet Basic und das unter "default.bas" gespeicherte Programm im ESP nach etwa 30 Sekunden, womit dann die Kommunikation wieder aufgenommen werden kann.


ESP8266 & ESPBasic als WiFi-Interface-Server (HTTP)
ESP liefert Messwerte an Excel
ESP8266 Witty Cloud als HTTP-Interface für Excel direkt über WiFi
Die Kommunikation erfolgt aus Kompatibilitätsgründen auf der HTTP-Ebene. Wurde in Teil 1 nur empfangen, muss bei einer Steuerung oder bei unterschiedlichen Messungen (Analog und Digital) Daten in beide Richtungen übertragen werden. Dies erfolgt in dem hier verwendeten HTTP-Verfahren über die URL-Daten, d.h. über angehängte Parameter zur URL z.B. der Adresszeile des Browsers. Sucht man in Google mit Opera nach "esp8266 in excel" so steht in der Adresszeile etwa: https://www.google.de/search?client=opera& q=esp8266+in+excel& sourceid=opera& ie=utf-8 &oe=utf-8&channel=suggest&gws_rd=ssl

Nach der URL folgt ein "search?" mid durch "&" getrennte Parameter. Diese Parameter können auf Serverseite isoliert werden, um verschiedene Aktionen durch zu führen.

Auf diese Art und Weise funktioniert die Kommunikation zwischen VBA und ESPBasic. Auf der Dokumentationsseite findet man Beispiele (Examples) und dort ein MSG URL (Advanced) Beispiel. Nach Entfernung der Print-Anweisungen entsteht das hier benutzte Programm "default.bas", welches die über die URL übergebenen msg auswertet und damit entsprechend verzweigt.

msgbranch [mybranch]
wait

[mybranch]
pinNo = val(msgget("pin"))
pinStatus = val(msgget("stat"))
pinAction = msgget("action")
MyReturnMsg = "OK"
if pinAction == "po" then
   io(po,pinNo,pinStatus)
end if
if pinAction == "pi" then
   MyReturnMsg = io(pi,pinNo)
end if
if pinAction == "pwo" then
   io(pwo,pinNo,pinStatus)
end if
if pinAction == "pwi" then 
   MyReturnMsg = io(pwi,pinNo)
end if
if pinAction == "ai" then 
   MyReturnMsg = io(ai)
end if
msgreturn MyReturnMsg
wait
ESP8266-Basic: Das hier benutzte leicht geändertes Beispiel zu URL MSG ohne Printausgaben.

Um den Pin 15 des ESP8266 auf High zu setzen kann in einem Browser in der Adresszeile folgende Eingabe die Rote LED des Witty Cloud anschalten:

http://192.168.4.1/msg?pin=15&stat=1&action=po

Dabei ist 192.168.4.1 die IP des ESP, msg? das Schlüsselwort, welches Basic sucht und dann folgen Parameter, die im obigen Listing ausgewertet werden. Hier wird demnach die ESPBasic-Anweisung io(po,15,1) ausgeführt; also die LED angeschaltet. Wird in der Zeile stat=1 in stat=0 geändert, schaltet die LED aus.

Damit können über die Adresszeile eines Browsers alle IO/Kommandos ausgelöst werden. Um den Analogwert des Fotowiderstandes zu erhalten reicht:

http://192.168.4.1/msg?action=ai, der ESP sendet das Ergebnis von io(ai).

Soll, wie in Teil 1 nur der Analogwert erfragt werden, minimiert sich das ESPBasic-Programm zu:

msgbranch [mach]
wait

[mach]
msgreturn io(ai)
wait
Minimalversion ohne Parameter in 5 Zeilen zur Abfrage eines Analogwertes aus z.B. Teil 1

Im Browser reicht dann z.B. http://192.168.4.1/msg

ESP Messwert im Browser
ESP8266 Witty Cloud liefert Messwerte des Fotowiderstandes über WiFi an einen alten Opera Browser über die FritzBox mit der Minimallösung aus 5 Zeilen


Excel & VBA als Client steuert den ESP8266

Die in Teil 1 in VBScript formulierte HTTP-Get Routine ist hier in ESP umbenannt und mit leichten Änderungen in VBA übernommen worden. Der Parameter Cmd$ wird an msg? angehängt, so dass verschiedene Kommandos möglich sind. So kann z.B. im Direktfenster mit "RT 1" die rote LED angeschaltet werden über die Sub RT. Auf diese Weise entstehen die an die RSAPI.DLL angelehnte Digitalausgabe DOUT und AOUT (quasi-analog mit PWM). Ein entsprechendes Delay ist ebenfalls vorhanden, wodurch keinerlei externe Funktion aus einer DLL erforderlich ist.

Hier das komplette Listing des Makros welches im Hintergrund des oben dargestellten Tabellenblatts in Excel Messungen und Steuerungen in VBA über WLAN ermöglicht.

'http://www.esp8266basic.com/msg-url-advanced.html
'RGBLED ESP WITTY CLOUD RT = 15, BL = 13, GN = 12

Function ESP(ByVal Cmd$)
Set HTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    HTTP.Open "GET", "http://192.168.178.30/msg?" + Cmd$
    HTTP.Send
    ESP = HTTP.ResponseText
    Set HTTP = Nothing
End Function

Sub Delay(ByVal ms)
 t = Timer
 While Timer < (t + ms / 1000)
  DoEvents
 Wend
End Sub

Sub BL(ByVal an)
 ESP ("action=po&pin=13&stat=" + Str$(an))
End Sub

Sub RT(ByVal an)
 ESP ("action=po&pin=15&stat=" + Str$(an))
End Sub

Sub GN(ByVal an)
 ESP ("action=po&pin=12&stat=" + Str$(an))
End Sub

Sub DOUT(ByVal pin, ByVal an)
 ESP ("action=po&pin=" + Str$(pin) + "&stat=" + Str$(an))
End Sub

Sub AOUT(ByVal pin%, ByVal pwm%)
 ESP ("action=pwo&pin=" + Str$(pin) + "&stat=" + Str$(pwm))
End Sub

Sub ReadLDR()
Range("A:A").ClearContents
While True
 For i = 1 To 20
  x = ESP("action=ai")
  Cells(i, 1).Select
  Cells(i, 1) = x
  Range("b1") = n
  Delay 200
  n = n + 1
 Next i
Wend
End Sub

Sub BildlaufleisteRT_Change()
    AOUT 15, Range("F19")
End Sub

Sub BildlaufleisteGN_Change()
    AOUT 12, Range("F20")
End Sub

Sub BildlaufleisteBL_Change()
    AOUT 13, Range("F21")
End Sub

Sub CheckboxRT_Change()
 If Range("i19") Then an = 1 Else an = 0
 DOUT 15, an
End Sub

Sub CheckboxGN_Change()
 If Range("i20") Then an = 1 Else an = 0
 DOUT 12, an
End Sub

Sub CheckboxBL_Change()
 If Range("i21") Then an = 1 Else an = 0
 DOUT 13, an
End Sub

Sub Ende()
 End
End Sub
VBA: Messen und Steuern im Tabellenblatt von Excel mit L. Ohne DLL erfolgt die Verbindung zum ESP8266 über WiFi/HTTP.

Die Messroutine erfragt alle 0,2 Sekunden den Analogwert. Mit den Schiebereglern kann die Helligkeit der drei Farben quasi analog gesteuert werden. Die Checkboxen schalten an und aus. Die Elemente aus der Formularbox erfordern entsprechend Zuweisungen, wie in VBA/Excel üblich. Im Wesentlichen hat sich nur der Übertragungsweg geändert.


Ein Zusammenspiel des im Herbst 2017 erschienenen Messen Steuern Regeln mit Smartphone und Tablet und des Reprints von Messen, Steuern und Regeln mit Word & Excel führt zu diesem Ergebnis.

Die serielle Übertragung von Messwerten und Daten steht in beiden Exemplaren im Vordergrund. Auch wenn sich die Methoden und Technologien im Laufe der Zeit ändern, bleiben die prinzipiellen Verfahren bis jetzt gleich.


Weitere Bücher
Weitere Software
.
Startseite Bücher Software Digital RTV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt