Diese Domain gibt es auch als europรคische Variante unter

Was ist "Things of Camper"?

Allein der Name sagt versierten Technerds einiges, wo er sich doch vom "Internet of Things" ableitet. Allerdings sind die Teile fรผr Camper eher schlecht รผber das Internet zu verbinden, auch wenn das alles sehr sehr sehr viel leichter gemacht hรคtte. Also geht es vordergrรผndig um die lokale Verbindung von Elektronik wie bei einer smarten Haussteuerung. Das Projekt wรคre ein riesiges Projekt mit hohen Chancen bei ebenso hohen Risiken und vielleicht lest ihr meinen kleinen Artikel zu meinem vorherigen Projekt, wo ich bewiesen habe solche Projekte technisch zu realisieren, dann versteht ihr, warum ich dieses Projekt sicher nicht auf die gleiche Weise angegangen bin.

Hier geht es zur Geschichte: "Mein erfolgreicher Weg zum Scheitern"

Das Projekt ToC soll ein halbwegs offenes Projekt werden und daher gibt es eine gut dokumentierte Kommandostruktur und mittels derer sollte eine Integration in eigene Apps, ioBroker oder HomeAssistant einfach mรถglich sein. Jedes Modul kann per BLE und MQTT integriert werden.

Module

Die Liste an Sensoren und Controllern ist ewig lang und ebenso lang ist die Wunschliste. Fehlt lediglich die Umsetzung und da wird es sicher immer mal wieder etwas neues als Erweiterung geben.

Projekte und Tutorials

Elektronik + Software + Mechanik?

Es braucht eine riesigen Mannschaft fรผr die Entwicklung von guter Elektronik, Software und Mechanik, damit aus dem perfekten Zusammenspiel ein wertvolles System mit echtem Nutzen wird. Da ich bei SMaker3D allein agiere, kann ich diese Komplexitรคt nur dadurch beherrschbar gestalten, dass ich auf etablierte Standards zurรผckgreife, was immer eine gute Idee ist.

Als Spezialist fรผr Systementwicklung habe ich schon sehr viel komplexere Systeme entwickelt, aber eben in Teams. Aus dieser Erfahrung kenne ich die Herausforderungen sehr gut.

95% der Hardware nutze ich derzeit von M5Stack, die sich als chinesischer Hersteller von IoT-Education-Kits einen Namen gemacht haben. Das Preis-Leistungs-Niveau ist sehr fair und die Lernkurve fรผr Mitstreiter liegt sehr niedrig, wobei dank solider Hardware nach oben keine Grenze gesetzt ist. Die restlichen 5% sind fรผr den Camper notwendige PCBยดs die als Adapter fungieren, denn es soll fรผr den Verbraucher keine Bastellรถsung sein. Diese 5% entwickle ich derzeit selbst und lasse diese in Deutschland fertigen.

Bei der Mechanik greife ich auf meine Kompetenz zurรผck und fertige entsprechende Gehรคuse selbst, ebenso wie nรถtige Adaptionen, um die ToC Module zum Beispiel an die Lรผfter anbauen zu kรถnnen.

Bleibt noch der grรถรŸte Arbeitsbrocken, die Software. Hier wird sich eine permanente Entwicklung gar nicht vermeiden lassen. Die Firmware-Entwicklung ist dabei ein ganz eigene Challenge neben der restlichen Software. Fรผr den Rollout der Firmware an den Endverbraucher verwende ich derzeit die Plattform von M5Stack, (sehr viel) spรคter wรผnsche ich mir einen eigenen OTA Weg, also die kontaktlose Aktualisierung der Module, denn niemand kann ein Interesse daran haben, stรคndig alle Module per Kabel zu aktualisieren.

Naja und dann wรคre da noch der Systemverbund, also meine eigentliches Spezialgebiet, die Abstimmung der drei Hauptdisziplinen zu einem System. Dazu gehรถren so viele Tรคtigkeiten, dass jedem klar sein sollte, das dieses kleine ToC-Projekt am Rande von SMaker3D nicht nur mich, sondern auch locker 30 Spezialisten in Vollzeit auslasten wรผrde. Und genau deswegen bin ich gespannt wie es wird, also ob es den Status "Lรถsung fรผr Markus" hinzu "Produkt fรผr die Community" je schaffen kann und wird.

Camper รผber das Internet steuern?

Die Integration wird รผber eine MQTT Bridge im Camper mรถglich, um alle Befehle und Daten auch in der App auรŸerhalb vom Camper so zu verwenden, als wรคre man noch in der Nรคhe. Das ist der Plan und technisch funktioniert es sogar schon, jedoch fehlt an dieser Stelle die dazugehรถrige Dokumentation noch.

App & Software

Die App fรผr ToC erreicht ihr รผber https://app.smaker3d.eu was eine PWA-Website-App ist.

  • Android = perfekt als PWA wie eine App installierbar
  • Windows = in Edge und Chrome perfekt als PWA wie eine App installierbar
  • Linux = in Chrome perfekt als PWA wie eine App installierbar
  • iOS = fรผr BLE Funktionalitรคt per Bluefy App nutzbar und per MQTT im Browser nutzbar mit Link auf dem Home-Screen

Erste Kopplung per BLE und App

  • Gerรคt mit Spannung versorgen
  • App รถffnen
  • Verbinden Button drรผcken
  • Gerรคt "ToC_SMaker3D" auswรคhlen und koppeln
  • In dem Bildschirm einen Namen vergeben z.B. "Frischwasser"
  • Unten auf "An Gerรคt senden"
  • Ein Countdown zรคhlt runter
  • Verbindung trennen und Gerรคt Spannungsversorgung kurz unterbrechen

SyncStore - Cloud

Die Daten der App werden nach dem Zero-Knowledge-Prinzip gespeichert. Kurz ich sehe nur Datenmรผll und kann damit nichts anfangen. Aber ihr kรถnnt die Daten รผber einen QR Code auf verschiedenen Gerรคte "teilen". Damit kann beispielsweise das Mapping vom WasserLevel auf mehreren Gerรคte genutzt werden ohne ein Account oder aufwรคndige Transformationen.

Updates

Die App aktualisiert sich stรคndig automatisch, jedoch muss fรผr die Firmware derzeit das Update manuell durchgefรผhrt werden. Damit das recht einfach geht, habe ich in der App einen WebBurner integriert, den ihr auf einem PC/MAC/Linux aufrufen kรถnnt (nicht Tablet/Smartphone).

Entwicklungsumgebung

Fรผr die grafischen Entwicklung wie in meinen Videos empfiehlt sich UiFlow 2 von M5Stack.

Alternativ kann die Entwicklung auch in Thonny auf Windows, Linux oder Mac in richtiger Programmierung MicroPython erfolgen.

Kommunikationskonzept

Bluetooth (BLE)

Jedes Gerรคt wird "Node" genannt, also ein Knoten im Netz. Ein Node muss per Bluetooth vor der ersten Benutzung konfiguriert werden. Die App รถffnet, sofern sie den Node noch nicht kennt, die Konfigurationsoberflรคche "BleSetup" und setzt bis auf den Namen alle Werte automatisch. Sollte der Node schon einmal konfiguriert worden sein, wird das Schreiben scheitern und der Node muss neu bespielt werden. Nach einem Update kann ein im ersten Moment unbekanntes System aber mit einem zuvor gespeicherten Wert bespielt werden.

WICHTIG: Ab der v3.0 werden alle Nachrichten in 20-Byte lange Teile aufgetrennt und mรผssen beim Lesen wieder zusammengesetzt werden.

Mqtt (MQTT)

Jeder Node kann ebenso per MQTT angesprochen werden, sofern dieser per Bluetooth entsprechend konfiguriert wurde.

<MqttRoot>/toc/pipe
<MqttRoot>/nodes/<node>/<key>

WICHTIG: In der Version 1.6 ist MQTT zwar implementiert, jedoch bisher nur rudimentรคr. Ab v2.0 gibt es die Implementierung wie man sie erwartet.

Messages / Protokoll

Jeder Node kann รผber kleine Messages gesteuert werden, die ganz einfach aufgebaut sind.

<Source>:<Node>:<Key>:<Value>;
  • Source: ist die Quelle der Information z.B. wxyz (es ist nicht zwingend der Sender der Information)
  • Node: ist die Kennung des Node z.B. abcd
  • Key: ist der Parametername (z.B. name, wifisec) oder Funktionsname (z.B. get, reboot)
  • Value: ist der entsprechende Wert

Hinweise

  • Wenn Source und Node identisch sind, wird die Nachricht vom ESP ignoriert.
  • Die App gibt "app" als Source aus
  • ab v3 wird jede Message mit einem Semikolon abgeschlossen

Auth

Bevor man mit einem Node kommunizieren kann, muss eine Nachricht zur Authentifizierung gesendet werden. Dies gilt fรผr BLE und MQTT gleichermaรŸen.

<Source>:<Node>:auth:<Sec>;

Als Antwort erhรคlt man eine Message mit der Information zur Firmware

<Node>:<Node>:firmware:<WaterLevel_v3.0_bySMaker3D>;

Request, Response und Routing

Wird das Kommando von der App

app:abcd:name:WaterLevel;

an den Node gesendet, wird der Wert "name" mit "WaterLevel" gespeichert und dieser antwortet mit

abcd:abcd:name:WaterLevel;

Jede Msg die ein Gerรคt per Bluetooth empfรคngt wird bei รผbereinstimmender Kennung (z.B. abcd) direkt verarbeitet oder per MQTT weitergeleitet, wenn dies aktiviert ist. Auf diese Weise kann รผber eine Bluetooth-Verbindung jedes andere Gerรคt in dem Netz ebenfalls erreicht werden.

Man kann den "name" auch per get abrufen, indem man das Kommando sendet

app:abcd:get:name;

worauf der Node dann antwortet

abcd:abcd:name:WaterLevel;

Hinweis: Aus Sicherheitsgrรผnden kann nicht jeder Parameter (z.B. node, sec, mqqtroot, wifisec) abgefragt werden.

AutoSend

Bei aktiviertem AutoSend mit dem Kommando

app:abcd:autosend:1;

sendet der Node in einem definierten Zeitinterval (Sekunde) aktuelle Zustandswerte. Diese kรถnnen zum Beispiel der Temperaturwert eines angeschlossenen Thermometers sein. รœber diese Methode kann man Automatisierungen ermรถglichen, da andere Gerรคte auf diese Werte reagieren kรถnnen. Alternativ kann jedes Gerรคt bei Bedarf angefragt werden.

Bei aktiviertem MQTT wird auch ohne vorheriges auth gesendet, damit muss man im Verbund nicht stรคndig auf die auth Befehle achten und erhรคlt dennoch die Standardinformation direkt nach Anschluss der Spannung.

Der Cycle kann mit dem Komamndo

app:abcd:cycle:30;

angepasst werden.