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.
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.
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.
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.
Die App fรผr ToC erreicht ihr รผber https://app.smaker3d.eu was eine PWA-Website-App ist.
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.
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).
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.
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.
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.
Jeder Node kann รผber kleine Messages gesteuert werden, die ganz einfach aufgebaut sind.
<Source>:<Node>:<Key>:<Value>;
Hinweise
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>;
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.
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.