Hallo zusammen,
ich bräuchte mal etwas Hilfe zur Selbsthilfe.
Und zwar habe ich verschiedene kleine elektronische Gadgets gebaut die
Teil eines Spiels werden sollen.
Diese sollen jetzt so erweitert werden, dass man sie nicht nur über dem
Programmcode sondern ganz einfach über eine Smartphone-(Web)App durch
Übertragung ein paar weniger Bytes GESAMMELT konfigurieren kann.
Jetzt stellt sich mir einfach die generelle Frage, wie man so etwas
angehen kann. Verpasse ich jedem Gadget ein Bluetooth-Modul muss ich
vermutlich auch jedes Teil einzeln mit dem Smartphone verbinden? Oder
ist das mit Bluetooth Mesh auch so zu lösen, dass ich mich nur mit einem
Gerät verbinden muss?
Vielleicht läuft es aber auch auf ein WLAN-Bluetooth-Gateway hinaus?
Sorry, ich habe mit WLAN und Bluetooth noch keine Erfahrung und es läuft
wohl auf eine steile Lernkurve hinaus. Aber vorher wollte ich einfach
herausfinden, was auch praktikabel ist.
Danke
Gesammelt bedeutet eine Art Broadcast.
Wie soll bei den Geräten der Empfang gestartet werden? Oder sind die
immer auf empfang?
Bei Bluetooth findet vorab immer eine Kopplung statt und ist dann eine
Peer-to-Peer-Verbindung. Also nix mit Broadcast.
WLAN könnte mit Broadcast gehen. Dazu müssten die Geräte aber an einem
AP angemeldet werden.
Was ist mit Alternativen?
IRDA (ohne Rückkommunikation) oder Audio?
Wo sollen sich die Geräte befinden? Dürfen die Geräte für diese Aktion
an einen Ort gebracht werden?
Induktiv?
Gruß
Jobst
Das wäre eine Möglichkeit:
a) wenn die einzelnen Controller man per Kabel verbinden kann:
Ein Controller hat BlueTooth, der leitet die Daten z.B. per CAN Bus zu
den anderen weiter.
b) wenn die einzelnen Controller ohne Kable verbunden sind und z.B.
einen Akku haben:
Ein Controller hat BlueTooth, der leitet die Daten per Funk-Module zu
den anderen weiter, die jeweils ebenfalls Funk Module haben.
Da je nach Gerät extrem sparsam mit der Batterie (das hätte ich
vielleicht noch erwähnen sollen) umgegangen werden soll, soll die
Empfangsbereitschaft an jedem Gadget explizit per Taster / eventuell
Reedkontakt ausgelöst werden werden.
Geräte in unmittelbarer Nähe ist OK, ACK wäre aber schon gut. Über
optisch und Audio habe ich schon nachgedacht, kommt beides nicht in
Frage.
Zur Konfiguration steht kein AP zur Verfügung.
Ein beliebiges 2,4GHz Funkmodul + Gateway wäre noch eine Lösung, dennoch
wäre es eleganter, auf eine Gateway verzichten zu können.
Am Ende soll es einfach idiotensicher sein, da ich das Ganze, wenn
komplett fertig, auch anderen zur Verfügung stellen möchte.
Hannes schrieb:> ACK wäre aber schon gut.
Kannst Du bei Broadcast aber vergessen. Das geht nur bei
Einzelverbindungen.
Du könntest Dir einen Sender hinstellen, der immer wieder die selben
Infos wiederholt.
Dann drückst Du an einem Gerät (oder mehreren) einen Knopf und dieser
empfängt das. Kann das zur Verifikation nochmal empfangen. Beliebig
häufig, bis er der Meinung ist, dass es nun passt. Der Einsatz von
Checksummen sollte umfangreich genutzt werden.
Wenn Du es über WLAN lösen möchtest, kann das Handy einen AP bereit
stellen. Aber Du musst dann jedes Gerät aufwändig am WLAN anmelden.
Wenn die Geräte untereinander Kommunizieren, reicht es, wenn einer die
Info vom Handy bekommt. Der kann die dann verteilen.
Welche Fähigkeiten/Sensorik haben die Geräte noch?
Kamera on Board?
-> QR-Code vom Display des Smartphones scannen.
Gruß
Jobst
Jobst M. schrieb:> Bei Bluetooth findet vorab immer eine Kopplung statt und ist dann eine> Peer-to-Peer-Verbindung.
Die Corona-Warn-App kommt offensichtlich ohne explizite Kopplung aus.
Bluetooth Low Energy erlaubt es, kurze Informationen im Advertising
unterzubringen.
(prx) A. K. schrieb:> Mindestens Bluetooth Low Energy erlaubt es, kurze Informationen im> Advertising unterzubringen.
Ach, na sicher. Was vor der laufenden Verbindung passiert habe ich
völlig verdrängt.
Spätestens über die SSID kann man dann auch bei WLAN ein paar Byte
übermitteln.
Gruß
Jobst
Ich würde eine Beere oder etwas komplizierter eine ESP-32 als "Server"
zwischen schalten.
Das Handy verbindet sich mit den "Server" sendet neue Daten, und alles
dürfen sich bedienen.
Wenn es sich nur um deine eigene Wohnung handelt und du eine Fritzbox
hast, geht es auch wenn du deren File-Server nutzt.
Mit den Smartphone schickt du die Config an den "Mini-Server" und deine
Teile holen sich die da ab. Push wäre möglich aber ist sehr aufwendig
finde ich.
Also die Teile fragen alle X-Time nach ob was neues da ist, und holen
sich dann die Daten. Das bedeutet das sie nach X-Time alle auf den
neustes Stand sind.
Das ganze geht relativ Stress frei.
(prx) A. K. schrieb:> Die Corona-Warn-App kommt offensichtlich ohne explizite Kopplung aus.
Dafür ist auch extra das BT-Protokoll geändert worden.
Es sendet Daten über die "Kopplungs-Anfrage". Witziger weise hat Google
das NICHT über das Smartphone-Update gemacht, sondern über Google-Play
;)
Und damit das BT-System die "Anfrage" nicht einfach ignoriert sondern
verarbeitet musste da einiges geändert werden. Weshalb der
Stromverbrauch bei aktiver App höher ist. Die schaltet nämlich die "ich
warte auf Daten" permanent an.
Vorher musst du die von Hand anschalten genannt "Kopplungsanfrage".
Ansonsten ist BT selbst aktiviert ziemlich inaktiv wenn es kein Job hat.
Schlaumaier schrieb:> Witziger weise hat Google> das NICHT über das Smartphone-Update gemacht, sondern über Google-Play
Nicht witzig, sondern zwangsläufig. Man hatte keine 5 Jahre Zeit.
(prx) A. K. schrieb:> Nicht witzig, sondern zwangsläufig. Man hatte keine 5 Jahre Zeit.
nö. Mein Handy hätte den Mist sonst nicht bekommen. Weil ich aus den
Update-Service raus bin. Ich kaufe nicht alle 2 Jahre ein neues Handy
wegen angeblicher Sicherheitslücken.
Schlaumaier schrieb:> Mein Handy hätte den Mist sonst nicht bekommen.
Eben. Deshalb musste es über die Google Services laufen, nicht über
Android Updates.
Hannes schrieb:> Da je nach Gerät extrem sparsam mit der Batterie (das hätte ich> vielleicht noch erwähnen sollen) umgegangen werden soll, soll die> Empfangsbereitschaft an jedem Gadget explizit per Taster / eventuell> Reedkontakt ausgelöst werden werden.
Mein geniales, selbst entwickeltes Funksystem (mehrere Protokoll-Stacks)
funktioniert auch mit Broadcasts, da es eine selbstsynchronisierte
Netzwerkzeit gibt, das versendete Pakete nach einigen Sekunden ungültig
macht. Ein Dupe-Check verhindert Replay-Attacks in diesem Zeitfenster.
Jedes Gerät im Bus sendet periodisch Reports. Ein zentraler Server
erkennt so, ob Geräte ausgefallen sind. Jetzt kommt der Clou: Die
batteriebetriebenen Geräte hören, nachdem sie ein Report abgesendet
haben, exakt 3ms auf eingehende Pakete. Ansonsten sind sie im
deep-sleep. Stromverbrauch quasi Null. Der Sender muss einfach nur
warten, bis ein Report-Packet eingetrudelt ist.
Bestimmt habe ich dadurch 10029807422457 Patente verletzt. Deshalb
bleibt das Teil auch privat. Falls nicht, ist es hiermit prior Art. Bin
aber ziemlich sicher, dass nichts davon wirklich neu ist.
Jobst M. schrieb:> Wenn Du es über WLAN lösen möchtest, kann das Handy einen AP bereit> stellen. Aber Du musst dann jedes Gerät aufwändig am WLAN anmelden.
Mit Micropython auf ESP8266 (aka "Gerät")ist es einfach:
Helmut H. schrieb:> Mit Micropython auf ESP8266 (aka "Gerät")ist es einfach
Du wirst einem Enduser wohl kaum zumuten, auf jedem einzelnen Gerät
Quelltexte zu ändern. Selbst wenn die WLAN Zugangdaten anders
gespeichert werden muss man sie doch irgendwie eingeben.
Es sei denn, man nutzt WPS "auf Knopfdruck", doch das funktionierte bei
mir stets nur sporadisch mit viel Glück (auch auf anderen Geräten). WPS
ist bei mir unten durch.
Stefan ⛄ F. schrieb:> Du wirst einem Enduser wohl kaum zumuten, auf jedem einzelnen Gerät> Quelltexte zu ändern.
Kann man bei einem Handy-AP nicht dessen Namen und den Schlüssel
vorgeben?
Habe es nur mit einer uralten Fritz-Box als AP mit Gastzugang gemacht,
hat problemlos funktioniert.
Gleiche Software auf allen ESPs.
Helmut H. schrieb:> Kann man bei einem Handy-AP nicht dessen Namen und den Schlüssel> vorgeben?
So mache ich das gerne. Immer wenn der ESP startet, erzeugt er für 5
Minuten ein temporäres Netz (im Soft-AP Modus). Darauf kann ich mich per
Web-Browser auf Smartphone oder Laptop verbinden, um die WLAN
Zugangsdaten einzustellen.
Aber so richtig komfortabel ist das auch nicht. Für einmalige
Einstellungen OK, aber nicht für Geräte die man täglich woanders
aufstellt.
Stefan ⛄ F. schrieb:> Aber so richtig komfortabel ist das auch nicht.
Man muss doch nur den Namen des AP und den Schlüssel auf dem Handy
konfigurieren. Nach einem Reset versucht jeder ESP sich mit dem
vorgegebenen AP zu verbinden. Falls das funktioniert holt es sich
allfällige Konfigurationsdaten ab.
Hannes schrieb:> Und zwar habe ich verschiedene kleine elektronische Gadgets gebaut die> Teil eines Spiels werden sollen.> Diese sollen jetzt so erweitert werden, dass man sie nicht nur über dem> Programmcode sondern ganz einfach über eine Smartphone-(Web)App durch> Übertragung ein paar weniger Bytes GESAMMELT konfigurieren kann.>> Jetzt stellt sich mir einfach die generelle Frage, wie man so etwas> angehen kann. Verpasse ich jedem Gadget ein Bluetooth-Modul muss ich> vermutlich auch jedes Teil einzeln mit dem Smartphone verbinden? Oder> ist das mit Bluetooth Mesh auch so zu lösen, dass ich mich nur mit einem> Gerät verbinden muss?
Audio und optisch wurden zur Datenübertragung ja bereits ausgeschlossen,
verkabelte Verbindung ebenfalls.
Da "extrem sparsam mit der Batterie umgegangen werden soll", fällt WLAN
ja eigentlich auch per se flach...
Somit bleibt imho eh nur noch Bluetooth LE übrig. (Da es eine Webapp
sein soll, wenn ich das richtig verstanden habe, funktioniert es dann
allerdings eh nicht auf iPhones, sondern nur auf Android-Smartphones,
falls Dir das bislang nicht klar ist - denn die dafür erforderlich "Web
Bluetooth API" gibt es auf iPhones nicht (bzw. nur über Umwege, die
normalen Usern nicht zuzumuten sind)).
Die Daten als Teil der Bluetooth LE-Advertising-Informationen zu
broadcasten, wäre grundsätzlich zwar eine Möglichkeit, ist bei einer
WebApp aber glaube ich auch nicht möglich, weil die Web Bluetooth API
das bislang glaube ich nicht vorsieht.
Somit bleibt eigentlich nur die Möglichkeit, das über Bluetooth
LE-Punkt-zu-Punkt-Verbindungen zu machen. Vom Smartphone aus
Punkt-zu-Punkt-Verbindungen zu jedem einzelnen Gadget aufzubauen, halte
ich allerdings auch nicht für wirklich praktikabel. Denn der
Verbindungsaufbau ist bei Web Bluetooth umständlich/aufwändig (im Sinne
von: viel Nutzer-Interaktion), ausserdem gibt es evtl. ein Limit,
wieviele Verbindungen gleichzeitig geöffnet sein können.
Wirklich praktikabel erscheint mir daher im Moment nur folgende
Möglichkeit:
Du baust vom Smartphone aus nur eine Verbindung per Bluetooth LE/Web
Bluetooth zu einem einzigen Gadget auf, und implementierst auf den
einzelnen Gadgets dann noch selbst eine Art Bluetooth Mesh.
Helmut H. schrieb:> Man muss doch nur den Namen des AP und den Schlüssel auf dem Handy> konfigurieren.> Nach einem Reset versucht jeder ESP sich mit dem
vorgegebenen AP zu verbinden.
Welcher ist denn in deinem Konzept der "vorgegebene AP"? Ich habe
verstanden, dass die ESP Bestandteil mobiler Geräte sind. Wenn ich sie
zu meinen Schwiegereltern schleppe, kann ich die alten Leute wohl kaum
dazu auffordern, ihr Gast Netz zu ändern. Wahrscheinlich wird er
verweigern überhaupt ein Gast-Netz zu erstellen.
Schön wäre, wenn ein Smartphone diesen temporären AP (aka WLAN Hotspot)
bereit stellen würde. Aber das kann nicht jedes Smartphone, und eine App
kann es nicht aktivieren/konfigurieren. Und mir ist unklar, mit wie
vielen Clients (ESP) das geht.
Ich denke, WLAN ist für derartigen mobilen Einsatz einfach nicht
gedacht. Vielleicht eignen sich dazu andere Funkmodule besser, sowie
eine Funk <--> Bluetooth Bridge.
Stefan ⛄ F. schrieb:> Wenn ich sie zu meinen Schwiegereltern schleppe ...
Auf dem Smartphone ist der AP konfiguriert. Dessen Name und Schlüssel
ist den ESPs bekannt.
Man muss also nur sein Smartphone und die ESPs mitnehmen.
Bei den Schwiegereltern aktiviert man den AP des Smartphones und
resettet den ersten ESP.
Dieser verbindet sich mit dem Smartphone.
Mit webrepl
https://microcontrollerelectronics.com/micropython-webrepl-on-android/
kommuniziert man nun mit dem ESP und konfiguriert diesen.
Nachdem alle ESPs konfiguriert sind, schaltet man den AP ab und resettet
alle ESP.
Joachim S. schrieb:> Da "extrem sparsam mit der Batterie umgegangen werden soll", fällt WLAN> ja eigentlich auch per se flach...
Das WLAN wird nur nach einem Reset aktiviert, wenn kein AP erreicht
wird, dann wird es wieder abgeschaltet. Ebenso z.B. 3 Minuten nach dem
Reset.
Helmut H. schrieb:> Auf dem Smartphone ist der AP konfiguriert. Dessen Name und Schlüssel> ist den ESPs bekannt...
Ich denke das ist die beste Methode die man mit WLAN heraus holen kann.
Außer mit WPS, wenn es denn funktioniert.
Hannes schrieb:> Und zwar habe ich verschiedene kleine elektronische Gadgets gebaut die> Teil eines Spiels werden sollen.
"Ich brauche mehr Details": Welcher Controller, was machen die Gadgets?
Helmut H. schrieb:> Welcher Controller
Gute Frage. Ich bin einfach von irgendwelchen ESP Modellen ausgegangen,
aber das hat er ja gar nicht geschrieben.
Stefan ⛄ F. schrieb:> Ich bin einfach von irgendwelchen ESP Modellen ausgegangen
Mea Culpa, ich hatte das Gerücht in die Welt gesetzt. Habe jetzt mal
meine 10 eingemotteten ESP8266 rausgekramt und bin ganz wild darauf, die
coolen Gadgets damit zu maken.
Es sind offensichtlich keine ESPs wenn er schreibt er würde jedem Gerät
ein Bluetooth Modul ergänzen. Da wäre es das beste direkt auf ESPs
umzubauen und mit ESP-NOW zu arbeiten. Das kann genau alles was er
benötigt, also mit einem Master interagieren, oder als ESP-NOW Mesh, wo
dann ein ESP noch zusätzlich die WLAN Verbindung macht.
Jobst M. schrieb:
> Wenn Du es über WLAN lösen möchtest, kann das Handy einen AP bereit> stellen. Aber Du musst dann jedes Gerät aufwändig am WLAN anmelden.
Das funktioniert bei 99 % der Handys nur eingeschränkt.
Grund : Das Handy kann nur EINS von Beiden. AP zu GSM, ODER
Wlan-Verbindung als Client.
Mein Samsung-Handy sagt mir nämlich jedes mal wenn ich den AP nutze, das
ich Wlan AUSSCHALTEN muss.
Deshalb war ja meine Idee den AP extern zu bauen. Einmal an einen Beere
angemeldet und gut ist. Stromkosten sind kaum der Rede wert. Die
Steuerung via Handy auch nicht wirklich ein Problem. Normal mit z.b. WWW
auf die Beere zugreifen und das war's. Oder alternativ die Steuerdatei
mit FTP zur Beere schicken. 1000 Möglichkeiten das zu regeln. Und Platz
/ Speicher hat man auch genug auf der Beere.