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.

Categories:

Tags:

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert