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.
:
Bearbeitet durch User
(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
:
Bearbeitet durch User
schau dir mal ESP-NOW an, das ist ein eigener Standard von Espressif der ein Mesh Netzwerk zwischen ESPs aufbaut.
:
Bearbeitet durch User
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:
1 | import network |
2 | wlan = network.WLAN(network.STA_IF) |
3 | wlan.active(True) |
4 | wlan.connect('My_Handy_AP','30728671214167815478') |
:
Bearbeitet durch User
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.
Jobst M. schrieb: > Dazu müssten die Geräte aber an einem > AP angemeldet werden. Nein. Wie Nintendo mit dem DS gezeigt hat ist der 802.11 Standard kompatibel mit nicht AP/STA Protokollen umsetzbar. Passendes Paper für das entsprechende Protocol: https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwjx0YD9qrj1AhWE5KQKHSsLD9gQFnoECAQQAQ&url=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.120.1452%26rep%3Drep1%26type%3Dpdf&usg=AOvVaw2i20SgXqeZiwpMjscG1K2H
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.