2018
HOME

ESP8266 als drahtloser Messwertgeber für Excel (Teil1)
ESP8266 in Excel via WiFi
Ergänzung zum Buch: Messen Steuern Regeln mit Smartphone und Tablet

ESP liefert Messwerte an Excel
ESP8266 Witty Cloud serviert Excel direkt über WiFi Messwerte des Fotowiderstandes (LDR) 
Messdaten des Analogeingangs vom ESP8266 direkt in einem Excel-Tabellenblatt eintragen -, das ist das Ziel dieses Beitrages.

Im obigen Buch werden Daten auf verschiedensten Wegen zwischen Komponenten übetragen. Die Kommunikation zwischen ESP8266 und Excel fand keinen Platz mehr und soll hier als Ergänzung nachgereicht werden.

Ein ESP spannt dazu einen eigenen HotSpot auf und liefert auf Anfrage via HTTP einen Messwert über den WiFi-Äther. Ein HTTP-Client (z.B. ein Browser) fordert den Messwert an, der ESP liefert und der Client kann den Wert weiter verarbeiten (siehe Kapitel 2.1.4 mit 2.1.6 und 1.2.9, sowie etwas 1.2.13).

Wegen Excel wird hier weiter unten als Client ein VBScript auf dem Windowstablet eingesetzt, da Excel/VBA kein TCP/IP oder HTTP* kennt, VBScript jedoch Internetseiten abrufen kann.

Um diesen Datentransport selber zu reproduzieren folgen nun Angaben zu den benutzten Komponenten:


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

An anderer Stelle könnte gezeigt werden, wie das Zusammenspiel mit RFO-BASIC auf einem Android Smartphone oder Tablet die Messdaten darstellt. Wer lieber nur in VBA agiert bekommt eventuell Anregungen in Teil 2: Basic meets Basic.


ESP8266 als Messwert-Server (HTTP)

Ein Sketch sorgt im ESP dafür, dass ein eigener Access-Point aufgespannt wird - der ESP also auch ohne fremde Infrastruktur von WiFi-fähigen Geräten erreicht werden kann. Weiterhin soll ein HTTP-Server auf Port 80 (Standard) eingehende Anfragen beantworten. Bei Installation des ESP-Core in die Arduino-IDE werden Beispiele mitgeliefert, die nur geringfügig geändert werden müssen, um eigene Ziele zu erreichen. Reduziert man das Beispiel ESP8266WebServer/HelloServer auf das Wesentliche und fügt noch etwas aus dem Beispiel ESP8266WiFi/WiFiAccessPoint hinzu, ergibt sich ein sehr minimalistischer Sketch, der genau das tut, was hier beschrieben wurde:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
 
ESP8266WebServer server(80);
 
void handleRoot() 
{server.send(200, "text/html",String(analogRead(A0)));}
 
void setup() 
{WiFi.softAP("ESPap","");
 server.on("/", handleRoot);
 server.begin();
}
 
void loop() 
{server.handleClient();}
Sketch für den ESP8266 unter Arduino-Core

Nach Einbindung der benötigten Bibliotheken wird ein Server für Port 80 erstellt. Im setup() spannt sich ein HotSpot mit Namen "ESPap" auf mit dem sich ein WLAN-fähiges Gerät verbinden kann (begrenzt, kein Internet). Der ESP8266 hat von Hause aus die voreingestellte IP 192.168.4.1, so dass bei WLAN-Verbindung die URL "http://192.168.4.1" ohne weitere Parameter aufgerufen werden kann. Der Server antwortet dann über die zugeordnete Routine für "/", also handleRoot(). Diese Routine sendet im text/html-Format den Messwert als Zeichenkette (String) an den Aufrufer (z.B. ein Browser als Test).

ESP Messwert im Browser
ESP8266 Witty Cloud liefert Messwerte des Fotowiderstandes über WiFi an einen alten Netscape Browser


VBScript als Client, ruft Messwerte für EXCEL ab

VBScript ist im Buch als Softwareelement in Kapitel 2.1 beschrieben und mit Beispielen versehen. Auf dieser Homepage wurde VBScript im Zusammenhang mit "Planehopping" kurz angerissen. VBScript kann Internetseiten lesen, wie in Kapitel 2.1.6 "CQ-DX" benutzt. Damit kann es auch Messdaten von einem ESP-Server abrufen. Um das zu testen reichen folgende Zeilen:

WScript.Echo GetLDR()
 
Function GetLDR()
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
objHTTP.Open "GET", "http://192.168.4.1/": objHTTP.Send
GetLDR = objHTTP.ResponseText
Set objHTTP = Nothing
End Function
Testscript

Werden diese Zeilen durch Doppelklick gestartet (Datei "GetLDR.vbs" mit diesem Text-Inhalt) so meldet sich Windows mit einer MessageBox und dem entsprechenden LDR-Messwert im Bereich 0 bis 1024. Es wird ein HTTP-Objekt angelegt und mit "GET" die Anforderung gesendet. Die gesendete Antwort im text/html-Format liefert die Funktion GetLDR(), die Anzeige erfolgt mit WScript.Echo.


Excel Empfang mittels VBScript

In Kapitel 2.1.4 VBS - Digispark drahtlos an EXCEL wird die Verbindung zu Excel benutzt, die hier leicht modifiziert erneut zum Einsatz kommt und nun mit Cells(ix,1).Value = GetLDR die Messwerte fast wie in VBA in das Tabellenblatt einträgt.

Function GetLDR()
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
objHTTP.Open "GET", "http://192.168.4.1/"
objHTTP.Send
GetLDR = objHTTP.ResponseText
Set objHTTP = Nothing
End Function
 
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
ix=1
While true
 WScript.Sleep 1000
 objExcel.Cells(ix, 1).Value = GetLDR
 ix=ix+1
 if ix>100 then ix=1
Wend
Hauptscript

Startet man dieses Hauptscript, so wird Excel aufgerufen und dargestellt, ein neues Tabellenblatt eingefügt und mit der Messung begonnen. Als Minimalanwendung werden hier die ersten 100 (ix) Zellen immer wieder mit Messwerten gefüllt, die einmal pro Sekunde (Sleep 1000) angefordert und somit aktualisiert werden.
Messen, Steuern und Regeln in Word & Excel. Cover des Reprints von 2017/2018
ESP8266 Witty Cloud liefert Messwerte des Fotowiderstandes über WiFi direkt an Excel.


Kochrezept ESP8266:
  • Sketch für den ESP8266 erstellen und hochladen
  • ESP8266 irgendwo in WLAN-Bereich mit Spannung versorgen

Kochrezept Windows 7, 8.1 u.a.:

  • Windows mit WiFi-HotSpot "ESPap" ohne Passwort verbinden
  • Excel installieren
  • Hauptscript (siehe oben) in die Zwischenablage kopieren
  • Auf Desktop neues Textdokument erstellen und Zwischenablage einfügen und speichern
  • Textdatei mit neuer Endung "Neue Textdatei.vbs" versehen bzw. speichern.
  • Mit rechter Maustaste "öffnen mit..." Microsoft Windows Based Script Host auswählen

Windows stuft VBScript als gefährlich ein und ist möglicherweise nicht immer verfügbar.

*) Stimmt nach Recherche nur bedingt, doch sonst wäre VBScript überflüssig und der Bezug zum Buch würde teilweise fehlen, da VBA ja in einem anderen Buch das Hauptthema war. Excel/VBA versteht bei den hier verwendeten Komponenten die Funktion GetLDR ohne Murren und somit kann Excel direkt über HTTP auf Daten des ESP8266 zugreifen. Im Teil 2 (Basic meets Basic) folgt diese Variante.


Das im Herbst 2017 erschienene Messen Steuern Regeln mit Smartphone und Tablet zeigt vielerlei andere Übertragungsmöglichkeiten.

Im hinteren Teil "Zusammenspiel" werden ähnlichen Beispiele benutzt, die verschiedene Verfahren anwenden, um gesteckte Ziele zu erreichen. Das Windows-Tablet kommt dort ebenfalls häufiger zum Einsatz.


Teil 2: Basic meets Basic
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