Grundidee: Access lokal, IoT in der Cloud
IoT-Geräte liefern Messwerte. Oder reagieren auf Kommandos.
Access speichert Daten, stellt Masken und Auswertungen bereit.
Dazwischen: eine Schnittstelle – z. B. per MQTT, REST-API oder Dateiübergabe.
Deine Aufgabe: Access mit dem IoT-Backend verbinden.
Nicht mit dem Sensor direkt – sondern über den Server, Gateway oder Cloud-Dienst.
Variante 1: Zugriff auf IoT-Daten per REST-API
Die meisten Gateways liefern Daten als JSON über HTTP.
Beispiel: Temperaturdaten abrufen
Public Function HoleIoTDaten() As String
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://api.iotfirma.de/sensor/12345", False
http.setRequestHeader "Authorization", "Bearer geheim123"
http.Send
HoleIoTDaten = http.responseText
End Function
Ergebnis verarbeiten (z. B. Temperatur speichern)
Public Sub TemperaturEintragen()
Dim json As String
json = HoleIoTDaten()
Dim temperatur As Double
temperatur = ExtrahiereWert(json, "temperature")
CurrentDb.Execute "INSERT INTO tblMesswerte (SensorID, Temperatur, Zeitstempel) VALUES (12345, " & temperatur & ", Now())"
End Sub
Variante 2: Daten per MQTT empfangen (mit externem Helfer)
Access kann kein MQTT nativ.
Du brauchst z. B. ein kleines .NET- oder Python-Tool, das die Nachrichten abfängt und in eine Datei schreibt.
Beispiel: Zugriff auf MQTT-Daten über CSV
Public Sub LadeMQTTExport()
DoCmd.TransferText acImportDelim, , "tmp_MQTT", "C:\Daten\messwerte.csv", True
End Sub
Danach: Daten prüfen und verarbeiten.
Variante 3: Access sendet Kommandos an IoT-Geräte
Access → IoT ist eher selten – aber möglich.
Zum Beispiel: „Schalte Gerät X aus“.
Public Sub SendeKommando(SensorID As Long, Befehl As String)
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", "https://api.iotfirma.de/device/" & SensorID & "/command", False
http.setRequestHeader "Content-Type", "application/json"
http.setRequestHeader "Authorization", "Bearer geheim123"
http.Send "{""command"":""" & Befehl & """}"
End Sub
Beispiel:
Call SendeKommando(1003, "shutdown")
Variante 4: IoT schreibt direkt ins Access-Backend (nicht empfohlen)
Manche setzen auf ODBC-Zugriff vom Gateway auf Access.
Das funktioniert lokal – ist aber fragil und gefährlich.
Besser: Access liest regelmäßig eine Zwischenablage (z. B. SQLite, JSON-Datei, REST).
Tipps für die Umsetzung
- Access ist nicht für Echtzeit gedacht – Abfrageintervall definieren (z. B. alle 10 Sekunden)
- JSON parsen mit eigener Funktion oder Script-Control
- Logging mitführen (
tblIoTLog
) – was kam wann an? - Fehlerbehandlung konsequent einbauen
- Nicht direkt auf Sensordaten rechnen – erst prüfen und zwischenspeichern
- Daten besser auf einem SQL Server speichern
Beispiel: JSON-Wert extrahieren (quick & dirty)
Public Function ExtrahiereWert(json As String, feld As String) As Double
Dim s As String
s = Split(Split(json, """" & feld & """:")(1), ",")(0)
ExtrahiereWert = Val(Replace(Replace(s, "}", ""), """", ""))
End Function
Nicht schön. Aber reicht für einfache JSONs.
Geeignete Anwendungsfälle
- Temperatur- und Feuchtigkeitsmessung
- Produktionsüberwachung (Zählerstände, Störungen)
- Tür- oder Lichtstatus in Gebäuden
- Energieverbrauchs-Logging
- Maschinenrückmeldung („Betrieb läuft“, „Fehlercode 12“)
Fazit für Entwickler
Access kann kein IoT nativ.
Aber über REST, Dateiimport oder einfache Schnittstellen kannst Du schnell integrieren.
Wichtig:
Nicht alles in Access pressen – sondern sauber trennen:
IoT macht die Technik, Access das Interface.
No responses yet