Ich habe eine Schaltung mit einem STM32WB55CEU6 aufgebaut. Dieser hat
Bluetooth integriert. Noch nutze ich diese Funktionalität nicht, ich
habe lediglich schonmal die Antenne mit realisiert, so dass ich später
Bluetooth nutzen kann.
Zuerst wollte ich eine App schreiben, um meine Hardware per Smartphone
steuern zu können.
Dann kann mir jedoch die Idee, dass ich stattdessen auch einen Webserver
simulieren könnte?
Ist es prinzipiell möglich mit Bluetooth einen Webserver zu simulieren?
Meiner Vorstellung nach würde sich das Smartphone per Bluetooth mit
meiner Schaltung verbinden und anschließend kann mann über den Browser
über einen Namen das Webinterface öffnen.
Muss ich dann als Blueooth Device quasi ein virtuelles Netzwerk
simulieren? Muss der Controller das nativ unterstützen oder kann ich das
in Software realisieren?
Oder geht das gar nicht?
Bluetooth schrieb:> Bluetooth einen Webserver zu simulieren
Nein,
das sind zwei völlig verschiedenen Paar Schuhe.
Das eine Ist Übertragungschicht, dass andere Anwendung.
Ein (Server)http-demon (und der Web-Browser auf der Client-Seite) kann
aber durchaus BT als Übertragungsmedium nutzen wenn dies bei dir TCP/IP
unterstützt (TCP/IP Over Bluetooth)
Irgend W. schrieb:> Ein (Server)http-demon (und der Web-Browser auf der Client-Seite) kann> aber durchaus BT als Übertragungsmedium nutzen wenn dies bei dir TCP/IP> unterstützt (TCP/IP Over Bluetooth)
Ich verstehe deine Antwort nicht ganz. Ich stelle also von meinem
Smartphone aus mit meiner Anwendung eine Bluetoth Verbindung her. Jetzt
gebe ich z.B. in Safari die URL http://meineanwendung ein, wie stelle
ich sicher, dass die HTTP Anfrage auch bei meiner Anwendung ankommt?
Das Smartphone muss doch erstmal die Anfrage über Bluetooth an meine
Anwendung tunneln?
Bluetooth schrieb:> Ich verstehe deine Antwort nicht ganz. Ich stelle also von meinem> Smartphone aus mit meiner Anwendung eine Bluetoth Verbindung her
Dein µC behauptet über Bluetooth, er wäre ein Modem/PAN-AP.
Dein Telefon verbindet daran.
Dein Telefon kriegt darüber eine IP-Adresse
Dein Telefon meckert, dass er zwar eine IP-Verbindung hat aber keine
funktionierende Default-Route, und bietet sofort das Beenden der
Verbindung an.
Wenn man das wegbekommen hat, ist dein Telefon ohne Internet, kann aber
an den http-port auf der "anderen Seite" der Bluetooth-Verbindung
zugreifen.
Also: Im Prinzip "Bluetooth-Tethering", nur umgekehrt, das Telefon ist
Client, nicht Server, und ohne NAT.
Safari?
Also iPhone?
Vergiss es, da ist alles zugedongelt was BT betrifft.
Ich hab mal ein BT Modul an einen ARM SoC mit RTOS gehangen und das PAN
Profil genutzt.
Mit Android und Win geht das wunderbar, Crapple kann zwar pairen, aber
es wird keine Verbindung aufgebaut.
Jedenfalls wars zu Zeiten vom 8er der Fall.
Zudem brauchste noch einen DHCP Server der eine IP vergeben kann, feste
IPs vergeben auf Handys ist nervig.
Ansonsten wird da kein Webserver "simuliert". Sondern da wird ein
Webserver auf dem STM32 laufen müssen.
Guck dir mal den lwip an.
Da ist alles dabei vom TCP Stack bis zum Webserver und CGI Callbacks.
Kann der Treiber vom STM32WB55 überhaupt das PAN Profil?
Das wird leider eher selten unterstützt.
Ich hatte damals ein externes TI BT Modul genutzt (direkt über HCI) und
bluekitchen als BT Stack.
https://github.com/bluekitchen/btstack
Εrnst B. schrieb:> Dein Telefon kriegt darüber eine IP-Adresse> Dein Telefon meckert, dass er zwar eine IP-Verbindung hat aber keine> funktionierende Default-Route, und bietet sofort das Beenden der> Verbindung an.> Wenn man das wegbekommen hat, ist dein Telefon ohne Internet, kann aber> an den http-port auf der "anderen Seite" der Bluetooth-Verbindung> zugreifen.
Können Android und ios immernoch keine multiplen Verbindungen?
Mw E. schrieb:> Kann der Treiber vom STM32WB55 überhaupt das PAN Profil?
Das muss ich mal nachsehen.
Mw E. schrieb:> Safari?> Also iPhone?> Vergiss es, da ist alles zugedongelt was BT betrifft.
Ich habe ein IPhone5S, also ein ganz altes. Aber ich dachte mir schon,
dass das Probleme machen wird.
Εrnst B. schrieb:> Wenn man das wegbekommen hat, ist dein Telefon ohne Internet, kann aber> an den http-port auf der "anderen Seite" der Bluetooth-Verbindung> zugreifen.
Das ist natürlich auch doof.
Mw E. schrieb:> Können Android und ios immernoch keine multiplen Verbindungen?
Keine Ahnung. Könnte sogar sein, wenn der AP "kooperativ" konfiguriert
ist.
Üblich ist jedoch, für die echte "Plug-n-Play"-Erfahrung, dass der AP
sich per DHCP als Default-Route einträgt, und alle HTTP-Anfragen auf
seinen eigenen Webserver umleitet, "Captive Portal".
Vorteil: Fast Deppensicher: Verbinden, Browser aufmachen, fertig.
Nachteile: HTTPS, HSTS gehen nicht. Default-Route unterbricht das
Internet am Gerät.
Bluetooth schrieb:> Ist es prinzipiell möglich mit Bluetooth einen Webserver zu simulieren?
Web Server und Browser kommunizieren mittels TCP/IP Protokoll. Du musst
daher einen umfangreichen Protokollstack kaufen, der nicht nur einfache
Bluetooth Kommunikation ermöglicht, sondern auch noch noch TCP/IP über
Bluetooth tunnelt. Viele Smartphones kann man so als mobiles Internet
Modem für Laptops verwenden. Diese Funktionalität musst du nachbauen.
Die Frage ist, ob dein Smartphone das überhaupt unterstützt. Mit Linux
und Windows Laptops würde es auf jeden Fall gehen.
Als billige Bastellösung tut es vielleicht auch das Bluetooth SPP
Protokoll in Kombination mit einer UART-zu-TCP/IP Brücke (z.B. socat)
auf dem Laptop. Dann geht aber nur eine IP Verbindung gleichzeitig.
Deinem Web Browser könnte dies zu wenig sein, so dass er Dateien nicht
laden kann, die von der HTML Seite referenziert werden (Bilder, CSS,
Scripte). Manche Browser brauchen mindestens zwei gleichzeitige
Verbindungen zum Server.
Mit mobilen Apple Geräten geht das aber definitiv nicht, die können
nämlich weder Bluetooth SPP, noch kannst du da nach belieben
Fremdsoftware installieren die Apple nicht vorgesehen hat.
Mir wäre das zu sehr von hinten herum durch die Brust. Ich würde da
nicht viel Zeit rein stecken, denn Bluetooth ist Zickig. Irgend etwas
geht immer nicht.
Wie kommst du denn an die Bluetooth Firmware heran? Soweit ich weiß
kostet sie Lizenzgebühren und eine Mitgliedschaft in einem teuren Club.
Hallo Bluetooth,
Dein µController macht ja Bluetooth Low Energy. Dafür gibt es
massenweise generische GATT Clients, mit denen Du Dich sofort und ohne
viel Aufwand mit Deinem (auf Deinem µC implementierten) GATT Server
verbinden kannst und so die Hardware bequem ansteuern kannst. Wir machen
das häufig in Projekten, bei denen wir uns die Bedienelemente an der
Hardware (Displays, Knöpfe etc.) sparen wollen.
Es gibt ein Protokoll zum Umsetzen von BLE auf IP V6
(https://en.wikipedia.org/wiki/6LoWPAN), dazu müsstest Du dann mal
prüfen, ob TI das in seinem BLE stack implementiert hat und ob Dein
Telefon dass umsetzen kann. Wenn Du das aber nicht weiter in die Welt
routen willst, ist das meiner Meinung nach überflüssig.
schöne Grüße,
Torsten