Forum: Mikrocontroller und Digitale Elektronik Bluetooth Empfänger mit iPhone App verbinden/steuern


von Michael (mike567)


Lesenswert?

Hallo,

ich würde gerne vom iPhone aus über Bluetooth ein paar LEDs ein- und 
ausschalten. Gibt es irgendeine Art BT Receiver Chip, den man mit dem 
iPhone koppeln kann und der die Anweisungen irgendwie an einen 
Schaltkreis/Controller weitergibt? Also im einfachsten Fall soll die App 
einen On und Off Button haben und eine LED an- und ausschalten.

Danke!

Michael

von Harald K. (kirnbichler)


Lesenswert?

Hast Du Dir schon Gedanken darüber gemacht, wie Du die dafür nötige App 
auf dem iPhone entwickeln möchtest?

Hast Du Dir das "mfi"-Programm von Apple schon angesehen ("made for 
iPhone"), und welche Einschränkungen Apple beim Anschluss irgendwelcher 
Hardware (und dazu zählt auch BT-Kram) vorsieht?

Die Beschränkungen sind zwar im Laufe der Jahre gelockert worden, aber 
einfach so alles machen ist nach wie vor nicht drin.

https://mfi.apple.com/

von Michael (mike567)


Lesenswert?

Danke für den raschen hilfreichen Hinweis!

Bisher war es erst eine grobe Idee und die Frage, ob es überhaupt 
technisch geht bzw. was die Knackpunkte wären.

Habe noch keine iOS App entwickelt, aber ein paar Erfahrungen mit 
Programmieren und Mikrocontrollern, so dass ich mich eventuell 
durchkämpfen könnte, mit Eurem Support :-)

Also ist Apple das größere Problem als die Technik? Auf den ersten Blick 
sieht das mfi mehr für kommerzielle Produkthersteller aus.. also kurz 
zum Hintergrund: Ich baue Architekturmodelle und will einfach 
Beleuchtung (oder sonst was zum Fernsteuern) einbauen. Einen tieferen 
Sinn hat das nicht, keine Home Automtisierung oder so. Aber da ist Apple 
wohl viel zu restriktiv, zumindest für Endanwender und Bastler.

Würde das vom PC/Windows aus gehen? Und gäbe es denn einen BT Receiver 
Chip (oder wie man das nennt)?

von Wolf17 (wolf17)


Lesenswert?

Darf es auch über WLAN sein? Dann Shelly Relais.
https://shellyparts.de/collections

von Harald K. (kirnbichler)


Lesenswert?

Wenn Du statt BT WLAN verwendest, kannst Du z.B. auch einen 
ESP8266/ESP32 einsetzen. Die können sich sowohl mit einem vorhandenen 
WLAN verbinden als auch selbst eines zur Verfügung stellen und sind 
ausreichend leistungsfähig, daß sie einen Webserver nebst GUI zur 
Steuerung Deiner Beleuchtung zur Verfügung stellen können.

Das wiederum kannst Du dann mit einem iPhone, aber auch mit jedem 
anderen Smartphone oder Tablet nutzen, ohne daß Du irgendwelche Apps 
entwickeln müsstest.

Und wenn es drum geht, hübsche Icons auf der Bedienoberfläche des 
Smartphones zum Aufrufen der Webseite zu haben: Stichwort "webapp". 
Sieht aus wie 'ne App, verhält sich wie 'ne App, ist aber 'ne Webseite.

von Jürgen (temp1234)


Lesenswert?

Portable Web-Apps kann man auch per Cordova realisieren. Das 
funktioniert auf dem iPhone auch mit BLE. Passende BLE-Module sind HM-10 
o.ä. die funktionieren auf der Controller Seite als einfache UART.
Einzige Hürde bei iOS ist halt Apple selbst. Eigene Apps laufen nur eine 
Woche und als AdHock App (wenn mam einen Account für ca. 100€ pro Jahr 
hat)  max. 1 Jahr. Wer mehr will muss komplett über den App-Store.

von Stefan F. (Gast)


Lesenswert?

Für solche Anwendungen wäre das SPP Profil (Serielle Port Emulation) 
naheliegend. Doch leider unterstützt iOS diese nicht.

Ich erinnere mich, dass es zeitweise mal sehr ähnliche funktionierende 
Bluetooth Module gab, aber die sind vom Markt verschwunden. Keine 
Ahnung, warum. Blöd war bei den Produkten, dass sie nur mit iOS 
funktionierten. Andere Smartphones, Tablets und Laptops liefen damit 
nicht.

Mein Eindruck ist, dass es langfristig nur noch über WLAN praktikabel 
sein wird.

Michael schrieb:
> Also ist Apple das größere Problem als die Technik?

Ja

Wir haben in der Firma ein Team, die sich damit auseinander setzen 
müssen. Sie entwickeln Produkte für Energie Management und Monitoring.

> Auf den ersten Blick
> sieht das mfi mehr für kommerzielle Produkthersteller aus..

Der Knackpunkt ist: Ohne Entwickler-Account bekommst du deine Programme 
nicht auf's iPhone. Dafür brauchst du übrigens auch einen Mac, und der 
kleine Mac mini genügt nicht.

Das System ist leider nicht so offen wie bei Android, wo jeder User von 
irgendwo ein apk Paket beziehen kann, um es selbst zu installieren.

von Harald K. (kirnbichler)


Lesenswert?

Stefan F. schrieb:
> Dafür brauchst du übrigens auch einen Mac, und der
> kleine Mac mini genügt nicht.

Seit wann genügt der mini nicht mehr?

von Stefan F. (Gast)


Lesenswert?

Harald K. schrieb:
> Seit wann genügt der mini nicht mehr?

Das kann ich dir nicht genau sagen. Das ist jedenfalls die Info, die ich 
von unserem Projektleiter der App Entwicklung bekommen habe.

Es ging dabei nicht um dessen RAM und CPU Leistung, war mehr ein 
vertragliches Ding.

von Michael (mike567)


Lesenswert?

Danke an alle für die allgemeinen Hinweise und die konkreten 
Produktempfehlungen!

Also WLAN statt BT nutzen und Webseite statt iOS App entwickeln, wären 
die richtigen "Einstiegspunkte". Im Moment habe ich nur eine grobe 
Vorstellung, wie das funktionieren würde, aber werde in diese Richtung 
recherchieren. Ein paar Fragen vorab:

- Wie würde der Zugriff von der Webseite auf das selbst gebastelte 
Device in meinem lokalen WLAN prinzipiell funktionieren? Also dass man 
das irgendwie "freigibt" oder so

- Wo könnte bzw. sollte/müsste der Webserver laufen? Z. B. auf meinem 
lokalen PC oder Hosting im Internet oder auf dem Device selbst? Auch im 
Hinblick die Frage vorher bzgl. Zugriff...

Harald K. schrieb:
> Wenn Du statt BT WLAN verwendest, kannst Du z.B. auch einen
> ESP8266/ESP32 einsetzen. Die können sich sowohl mit einem vorhandenen
> WLAN verbinden als auch selbst eines zur Verfügung stellen und sind
> ausreichend leistungsfähig, daß sie einen Webserver nebst GUI zur
> Steuerung Deiner Beleuchtung zur Verfügung stellen können.

- Welche (Web-)Programmiersprache würdet Ihr für eine simple GUI und die 
Weitergabe der Eingaben über WLAN an das Device empfehlen? Und könnte 
ich die Programmlogik zur Steuerung der Elektronik (z. B. mehrere LEDs 
dimmen) direkt in der Webseite "unterbringen"?

- Und wie würde die "Schnittstelle" auf der anderen Seite funktionieren, 
also zwischen WLAN-Adapter und einem Mikrocontroller zur Steuerung von 
LEDs o. ä.? Wenn ich da z. B. eine Funktion in C zum Dimmen einer LED 
aufrufen möchte, wie könnte ich von der Webseite so was aufrufen...? Mir 
fehlt da noch komplett das Detailverständnis, sorry

Jürgen L. schrieb:
> Portable Web-Apps kann man auch per Cordova realisieren. Das
> funktioniert auf dem iPhone auch mit BLE. Passende BLE-Module sind HM-10
> o.ä. die funktionieren auf der Controller Seite als einfache UART.
> Einzige Hürde bei iOS ist halt Apple selbst. Eigene Apps laufen nur eine
> Woche und als AdHock App (wenn mam einen Account für ca. 100€ pro Jahr
> hat)  max. 1 Jahr. Wer mehr will muss komplett über den App-Store.

Könnte ich so ein HM-10 Modul auch von einer Webseite aus verbinden und 
ansteuern? Dann hätte ich nicht das Problem bzgl. iOS App und App-Store 
etc. und es wäre ggfs. eine BT-Alternative statt WLAN?

DANKE nochmal und einen schönen Sonntag!

: Bearbeitet durch User
von Falk S. (falk_s831)


Lesenswert?

Es gibt (oder gab) glaube ich von Laird BL-Module, die vom iPhone aus 
angesteuert werden konnten. Ich meine die hießen BLE600 oder so.

von Michael (mike567)


Lesenswert?

Falk S. schrieb:
> Es gibt (oder gab) glaube ich von Laird BL-Module, die vom iPhone aus
> angesteuert werden konnten. Ich meine die hießen BLE600 oder so.

Top, ich habe mal spontan bestellt:

https://www.voelkner.de/products/3446432/HM-10-Bluetooth-4.0-BLE-CC2541-Master-Slave-Modul-for-Arduino-iOS-Android.html

In der Beschreibung steht:

"Mit diesem Modul ermöglicht es ihren Mikrocontroller per Bluetooth 
kabellos mit einer Vielzahl von Geräten zu verbinden und seriell Daten 
auszutauschen.Als Slave Modul können PCs, Handys (Android (ab 4.3), 
Windows Mobile und AUCH APPLE ohne Zusatzchip!) serielle Verbindungen zu 
einem Mikrocontroller bspw. Arduino aufnehemen. "

Hört sich vielversprechend an.

Könnte ich damit die Steuerung des Mikrocontrollers also über eine 
selbst programmierte iOS App machen (abgesehen von den 
Apple-Hindernissen bzgl. App-Store etc.) oder alternativ über eine 
Webseite, die ich auf dem iPhone aufrufe?

Unklar ist mir noch, in welcher Sprache und auf welchem Webserver ich so 
eine Seite programmieren könnte und wie dann der Zugriff auf das 
BLE-Modul funktioniert... hätte ich dann eine Art Objekt "BLE-Modul" mit 
den notwendigen Methoden wie connect, send, ...?

Vielleicht habt Ihr ein Stichwort/Link zu den notwendigen 
Kommunikationsprotokollen bzw. zur Integration/Ansteuerung von so einem 
BT-Modul... danke!

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Michael schrieb:
> Wie würde der Zugriff von der Webseite auf das selbst gebastelte
> Device in meinem lokalen WLAN prinzipiell funktionieren? Also dass man
> das irgendwie "freigibt" oder so
>
> - Wo könnte bzw. sollte/müsste der Webserver laufen? Z. B. auf meinem
> lokalen PC oder Hosting im Internet oder auf dem Device selbst? Auch im
> Hinblick die Frage vorher bzgl. Zugriff...

Die Webseite läuft auf dem Device selbst. Wie ich schon schrieb, 
ESP8266/ESP32 sind dafür ausreichend leistungsfähig. Da wird nichts 
"freigegeben", die einzige Entscheidung, die getroffen werden muss, ist, 
ob das Ding in ein vorhandenes WLAN integriert werden soll oder aber ob 
es sein eigenes WLAN aufsspannen soll. Letzteres bedeutet, daß man zum 
Bedienen auch sein Smartphone mit diesem eigenen WLAN verbinden muss.

Es gibt aber auch die Variante, daß so ein Gerät nur in der Anfangsphase 
ein eigenes WLAN aufspannt, und dieses nur zur Vervollständigung der 
Konfiguration genutzt wird, d.h. es wird ein Webformular angezeigt, in 
das man die Zugangsdaten zum bereits vorhandenen WLAN eintragen kann, 
und danach nutzt das Ding das vorhandene WLAN.

Das hier ist ein recht willkürlich ausgesuchtes Beispiel, das so einen 
Webserver und Interaktion mit den I/Os eines ESP8266/ESP32 zeigt:

https://randomnerdtutorials.com/esp32-esp8266-micropython-web-server/

Mit ein bisschen Recherche wirst Du Unmengen an anderen Beispielen 
finden, diese Technik wird sehr, sehr oft verwendet. Auch "Tasmota" ist 
eines dieser zahlreichen Beispiele.

von Michael (mike567)


Lesenswert?

Ah verstehe, danke für die Erläuterung und den aufschlussreichen Link!!

Das scheint genau für meinen Anwendungsfall als "Prototyp" zu passen:

"When you press the ON button, you make a request on the ESP IP address 
followed by /?led=on. The ESP32/ESP8266 on-board LED turns on, and the 
GPIO state is updated on the page."

Dass der Webserver auf dem Device selbst läuft, macht es nun auch für 
mich "logisch". Und ist ja perfekt im Beispiel erklärt, wie man den 
Webserver selbst und die Webseite auf dem Device deployed (das wäre 
meine nächste Frage gewesen, wie bekomme ich da welchen Webserver 
drauf).

Um die LEDs o. ä. anzusteuern, könnte ich dann die 16 GPIO PINs 
benutzen, oder? Und mit Micropython könnte ich vermutlich auch ein PWM 
Dimmen und alles mögliche programmieren, ohne C nutzen zu müssen?

Dann bestelle ich mal die notwendige Hardware und arbeite mich ein.

Nur interessehalber: würde der Ansatz mit Webserver auch in Kombination 
mit so einem BT Baustein funktionieren? In der Produktbeschreibung steht 
"Dieses Bluetooth 4.0 Transceiver-Modul ermöglicht es Ihnen mit iOS und 
Android-Geräten zu kommunizieren". Würde das dann aber nur mit einer iOS 
App funktionieren oder mit einem Webserver auf einem zusätzlichen 
(entsprechend leistungsstarken) Chip? Aber wäre wohl verglichen zu 
ESP8266 eh die umständlichere Lösung...

https://www.roboter-bausatz.de/p/bluetooth-4.0-ble-transceiver-modul-cc2541

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

Wenn es einigermaßen flexibel und komfortabel sein soll, setzt dir einen 
Rechner mit NodeRED und einem MQTT-Broker (Mosquitto) auf.

Dazu reicht ggf. auch ein RaspberryPi oder jeder ältere Rechner, der 
noch irgendwo herumsteht.

Die gängigen WLAN-Aktoren (Shelly & Co) sprechen praktisch alle MQTT. 
Alles, worauf sich Tasmota flashen lässt sowieso.

Das erspart dir das Erstellen einer Webseite und sehr, sehr viel 
Aufwand.
Bedient wird das komplett via Browser, und das geht dann auch von deinem 
iPhone aus.

Zu NodeRED gibts unendlich viele Tutorials, Webseiten und Videos.
Der Einstieg ist wirklich einfach.

: Bearbeitet durch User
von Jürgen (temp1234)


Lesenswert?

Michael schrieb:
> Könnte ich so ein HM-10 Modul auch von einer Webseite aus verbinden und
> ansteuern? Dann hätte ich nicht das Problem bzgl. iOS App und App-Store
> etc. und es wäre ggfs. eine BT-Alternative statt WLAN?

WebBle kann z.Z. nur der Chrome und selbst der kann es nicht unter iOS. 
Also kommst du um sowas wie Cordova nicht herum wenn es BLE sein soll.

von Jürgen (temp1234)


Lesenswert?

Michael schrieb:
> Top, ich habe mal spontan bestellt:
>
> 
https://www.voelkner.de/products/3446432/HM-10-Bluetooth-4.0-BLE-CC2541-Master-Slave-Modul-for-Arduino-iOS-Android.html
>
> In der Beschreibung steht:
>
> "Mit diesem Modul ermöglicht es ihren Mikrocontroller per Bluetooth
> kabellos mit einer Vielzahl von Geräten zu verbinden und seriell Daten
> auszutauschen.Als Slave Modul können PCs, Handys (Android (ab 4.3),
> Windows Mobile und AUCH APPLE ohne Zusatzchip!) serielle Verbindungen zu
> einem Mikrocontroller bspw. Arduino aufnehemen. "
>
> Hört sich vielversprechend an.
>
> Könnte ich damit die Steuerung des Mikrocontrollers also über eine
> selbst programmierte iOS App machen (abgesehen von den
> Apple-Hindernissen bzgl. App-Store etc.) oder alternativ über eine
> Webseite, die ich auf dem iPhone aufrufe?
>
> Unklar ist mir noch, in welcher Sprache und auf welchem Webserver ich so
> eine Seite programmieren könnte und wie dann der Zugriff auf das
> BLE-Modul funktioniert... hätte ich dann eine Art Objekt "BLE-Modul" mit
> den notwendigen Methoden wie connect, send, ...?

Du kannst BLE natürlich mit einer nativen iOS App machen oder als WebApp 
unter Cordova u.ä. Frameworks.
Cordova sorgt dafür, dass die iOS APIs in einem WebBroser als JavaScript 
Funktionen zur Verfügung stehen. Cordova ist eine native iOS App die mit 
Hilfe von Webkit ein Browserfenster anzeigt und das JavaScript Framework 
darin erweitert. Die Einsprungs-html Seite kann, muss aber nicht von 
einem Webserver kommen. Sie kann auch local mit in die App verpackt 
werden.
Das Cordova Pluging BLE Central implementiert die Brücke zwischen der 
Apple BLE-API und JavaScript.
https://github.com/don/cordova-plugin-ble-central
Nur mit dem blanken Browser geht das leider nicht unter iOS.

von Michael (mike567)


Lesenswert?

Vielen Dank, Ihr seid die besten :-) jetzt habe ich für meine 
Problemstellung schon mehrere Ansätze, die funktionieren sollten. Also 
ich habe es so verstanden:

1. WLAN-Verbindung zu ESP8266 mit Webserver und Webseite(n) direkt drauf 
und Programmierung z. B. mit Micropython

2. WebApp unter Cordova mit BLE-Verbindung und Programmierung z. B. mit 
JavaScript

3. NodeRED und MQQT-Broker

Womit könnte ich denn am einfachsten und flexibelsten ein paar 
individuelle Webseiten (mit HTML + JavaScript + ggfs. (Micro)Python) 
erstellen als "Steuerzentrale" mit ein paar Elementen wie Dropdowns, 
Textfeldern und Buttons? Und wie gesagt sollen dann je nach Eingabe auf 
der Webseite z. B. LEDs gedimmt werden.

Harry L. schrieb:
> Wenn es einigermaßen flexibel und komfortabel sein soll, setzt dir
> einen
> Rechner mit NodeRED und einem MQTT-Broker (Mosquitto) auf.

Das heißt, auf einem kleinen zusätzlichen Rechner (im WLAN) würde der 
MQTT-Broker quasi als Middleware laufen, mit der ich mich über Browser 
(vom Handy aus) verbinde und auf der anderen Seite das WLAN Device die 
MQTT Kommandos empfängt?

Harry L. schrieb:
> Das erspart dir das Erstellen einer Webseite und sehr, sehr viel
> Aufwand.

Aber muss ich nicht eine eigene Webseite (oder App) erstellen, wenn 
ich eine individuelle Oberfläche zur Steuerung möchte? Wie würde denn 
die Oberfläche für den Endanwender dann aussehen? Habe in Tutorial nur 
die Oberfläche für den Entwickler gesehen mit der Toolbox mit Nodes und 
Flows etc.. kann ich für den Anwender irgendwie HTML-Seiten etc. 
"einbetten", um Eingaben entgegen zu nehmen und Aktionen zu starten?

: Bearbeitet durch User
von Harry L. (mysth)


Angehängte Dateien:

Lesenswert?

Michael schrieb:
> Womit könnte ich denn am einfachsten und flexibelsten ein paar
> individuelle Webseiten (mit HTML + JavaScript + ggfs. (Micro)Python)
> erstellen als "Steuerzentrale" mit ein paar Elementen wie Dropdowns,
> Textfeldern und Buttons? Und wie gesagt sollen dann je nach Eingabe auf
> der Webseite z. B. LEDs gedimmt werden.

Genau das geht mit NodeRED sehr schön.

Michael schrieb:
> Das heißt, auf einem kleinen zusätzlichen Rechner (im WLAN) würde der
> MQTT-Broker quasi als Middleware laufen, mit der ich mich über Browser
> (vom Handy aus) verbinde und auf der anderen Seite das WLAN Device die
> MQTT Kommandos empfängt?

Genau, wobei dieser kleine Rechner nicht zwangsläufig im WLAN hängen 
muß.
LAN geht genauso und würde ich für den Zweck sogar vorziehen.

Michael schrieb:
> kann ich für den Anwender irgendwie HTML-Seiten etc.
> "einbetten", um Eingaben entgegen zu nehmen und Aktionen zu starten?

Dafür kannst du dir s.g. Dashboards zusammen klicken.
Sieht dann z.B. so aus wie im Anhang.
Dafür musste ich keine einzige Zeile HTML schreiben.

Da siehst du meine Wetterstation und die Steuerung der 
Heimkino-Beleuchtung.

: Bearbeitet durch User
von Rainer S. (enevile) Benutzerseite


Lesenswert?

Bluetooth geht schon, wenn du z.B. die App Blynk runterlädst. Paar 
Sachen und Beschränkung sind kostenlos. Erweiterungen sind 
Einmalzahlungen jenachdem wie groß es werden soll. Geht auch mit WLAN.

Auf dem ESP/Arduino gibt es eine Blynk Bibliothek die du einfach drauf 
lädst. Brauchst nurnoch Hardware z.B. HC-05/06. Das Programmieren tut 
man in der App.

https://www.youtube.com/watch?v=SAX60zOwQyw

von Michael (mike567)


Lesenswert?

Harry L. schrieb:

> Dafür kannst du dir s.g. Dashboards zusammen klicken.
> Sieht dann z.B. so aus wie im Anhang.
> Dafür musste ich keine einzige Zeile HTML schreiben.
>
> Da siehst du meine Wetterstation und die Steuerung der
> Heimkino-Beleuchtung.

Ah top, das war genau meine Frage bzw. Bedenken. Sieht sehr schick aus, 
die Steuerung meiner Modellhaus-Beleuchtung hatte ich mir genau wie bei 
Deinem Heimkino vorgestellt - einziger Unterschied, dass mein Projekt 
ohne wirklichen Sinn und Mehrwert ist, reine Beschäftigungstherapie für 
den Winter :-)

Wenn die GUI-Gestaltung über Tools/Wizard ohne HTML geht, umso besser. 
Könnte man trotzdem - bei Bedarf - an den Source Code ran und ihn 
modifizieren/ergänzen? Bei den grafischen Tools geht das ja nicht immer, 
so dass Anforderungen abseits vom "Standard" kaum umsetzbar sind. Oder 
sind der Source Code und die "Technik drunter" trotzdem zugreifbar - so 
dass ich zwar die Tools nutzen kann, aber trotzdem sehe, was hinten raus 
kommt, und es ggfs. nachbearbeiten kann?

DANKE

von M. K. (sylaina)


Lesenswert?

Lösungen gibt es viele. Ich verwende gern das BLE-Modul RN4871 von 
Microchip als BT2UART-Wandler. Dem kann man dann vom iPhone aus einen 
String senden und ein MC hinter dem BLE-Modul wertet diesen String aus 
und reagiert entsprechend. LEDs ein-/ausschalten, Spannungen messen usw. 
ist damit eigentlich recht einfach umsetzbar. Eigentlich deshalb weil es 
doch einiges an Arbeit ist, dass man in so ein Projekt reinsetzen muss.

: Bearbeitet durch User
von Michael (mike567)


Lesenswert?

M. K. schrieb:
> Dem kann man dann vom iPhone aus einen
> String senden und ein MC hinter dem BLE-Modul wertet diesen String aus
> und reagiert entsprechend.

..und auf dem iPhone WebApp unter Cordova, die aus den Benutzereingaben 
den passenden String für den MC erzeugt? Ich nehme an, in dem String ist 
dann der Aufruf einer C-Funktion auf dem MC codiert?

Hatte zuletzt vor etwa 5 Jahren ein paar kleinere MC Projekte gemacht 
(aber „lokal“ ohne Netzwerk) - muss mich da auch nochmal reinfuchsen.. 
da die Seite LED-Steuerung über MC damals (irgendwann) geklappt hat, bin 
ich zuversichtlich, das wieder hinzukriegen. Nur WLAN/BT sowie iPhone 
(Web)App sind komplett Neuland

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

M. K. schrieb:
> Ich verwende gern das BLE-Modul RN4871 von
> Microchip als BT2UART-Wandler. Dem kann man dann vom iPhone aus einen
> String senden und ein MC hinter dem BLE-Modul wertet diesen String aus
> und reagiert entsprechend.

Das wäre natürlich auch eine Lösung. Und wie man unter iOS mit diesen 
Modulen kommunizieren kann, sieht man hier:

https://www.instructables.com/Simple-IOS-App-for-BLE-Modules/

Voraussetzung aber ist dann natürlich ein iOS-Entwickler-Account und ein 
Rechner, auf dem ein ausreichend aktuelles macOS läuft.

von Al. K. (alterknacker)


Angehängte Dateien:

Lesenswert?

Handys (Android (ab 4.3)
zum ESP32 auch HC-05 und ähnliche Module
Das Prog im Handy sehr einfach zu bedienen.
Nutze ich einige Jahre schon.
Im Handy nur Einstellungen generieren.

MfG
alterknacker

: Bearbeitet durch User
von Michael (mike567)


Lesenswert?

Harald K. schrieb:

> Voraussetzung aber ist dann natürlich ein iOS-Entwickler-Account und ein
> Rechner, auf dem ein ausreichend aktuelles macOS läuft.

Das heißt, dass über eine WebApp so ein BLE Modul nicht steuerbar wäre 
und ich die diskutieren Probleme mit iOS App Entwicklung hätte? Mac habe 
ich leider auch nicht…

Wenn die Oberfläche und Steuerung (Senden Strings an MC) auch von 
Webseite aus ginge, wäre das meine Präferenz. iOS App Entwicklung und 
Deployment scheint mir problematisch für den Hobbygebrauch (?)

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

Michael schrieb:
> önnte man trotzdem - bei Bedarf - an den Source Code ran und ihn
> modifizieren/ergänzen?

Das ist gar kein Problem.
Das gesamte Framework basiert auf JavaScript, und du hast alle 
Möglichkeiten, das deinen Wünschen anzupassen.
Sowohl, was die Funktionalität betrifft, wie auch das Design.
Das Alles geht direkt aus dem Browser heraus.

Den eigentlichen Source von NodeRED musst du dazu nicht anfassen, kannst 
den aber jederzeit um selbst entwickelte Nodes ergänzen.

von Harald K. (kirnbichler)


Lesenswert?

Michael schrieb:
> Mac habe ich leider auch nicht…

Dann vergiss' Bluetooth und nutze WLAN.

Entweder mit vielen Hard- und Softwareschichten (Node Red etc. auf 
separatem Rechner), oder mit direkt auf ESP8266/ESP32 laufender 
Software.

Da musst Du halt selbst etwas Hand anlegen und die Darstellung der 
Webseite gestalten, und Dich gegebenenfalls auch etwas in die 
Funktionsweise von HTML & Co. einarbeiten.

Beispiele wurden Dir ja schon genannt.

von Weingut P. (weinbauer)


Lesenswert?

Stefan F. schrieb:
> Harald K. schrieb:
>> Seit wann genügt der mini nicht mehr?
>
> Das kann ich dir nicht genau sagen. Das ist jedenfalls die Info, die ich
> von unserem Projektleiter der App Entwicklung bekommen habe.
>
> Es ging dabei nicht um dessen RAM und CPU Leistung, war mehr ein
> vertragliches Ding.

Doch, der Mini reicht, mach ich nämlich damit. N anderes Thema ist die 
Hardwarevoraussetzung, X-Code ist n mächtiges Tool, aber RAM-hungrig und 
nicht gerade schlank auf der Platte.
Also unter 8GB RAM und SSD unter 512GB macht keinen Spaß mit X-Code. 
Ansonsten geht das sehrwohl auf dem Mini. Und natürlich darfs kein 
uralter sein, da aufs aktuelle iOS kompiliert werden muss und das kann 
nur n aktuelles X-Code, das natürlich nur auf dem aktuellen MacOS läuft, 
also der Mini mindestens later 2014.

: Bearbeitet durch User
von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Michael schrieb:

> ich würde gerne vom iPhone aus über Bluetooth ein paar LEDs ein- und
> ausschalten. Gibt es irgendeine Art BT Receiver Chip, den man mit dem
> iPhone koppeln kann und der die Anweisungen irgendwie an einen
> Schaltkreis/Controller weitergibt?

Ja, das ist sogar relativ einfach gemacht. Das Protokoll, das Du dafür 
verwenden kannst, nennt sich GATT. Dein "BT Receiver Chip" ist dabei ein 
GATT Server und Dein Telefon ist ein GATT Client.

Die dafür auf dem Telefon nötige Software musst Du nicht selbst 
schreiben, es gibt unzählige, generische GATT Client, für alle 
Betriebssysteme (nRF Connect; BLExplr; LightBlue; etc.)

Als "BT Receiver Chip" kannst Du dann z.B. breakout boards mit 
Mikrocontrollern verwenden, die ein BLE Peripheral haben (z.B. nrf52).

Wenn Du Dich für den nRF52 entscheidest, könntest Du z.B. einfach dieses 
Beispiel hier installieren und bist schon fast fertig: 
https://github.com/TorstenRobitzki/bluetoe/blob/master/examples/blinky_without_encryption.cpp

von Harald K. (kirnbichler)


Lesenswert?

Torsten R. schrieb:
> es gibt unzählige, generische GATT Client

Haben die eine frei konfigurierbare Oberfläche?

von Michael (mike567)


Angehängte Dateien:

Lesenswert?

Torsten R. schrieb:

> Die dafür auf dem Telefon nötige Software musst Du nicht selbst
> schreiben, es gibt unzählige, generische GATT Client, für alle
> Betriebssysteme (nRF Connect; BLExplr; LightBlue; etc.)
>
Wie kann ich bei diesem Ansatz die Bedienoberfläche entwickeln? Könnte 
eine Webseite/WebApp Befehle an den GATT Client schicken, je nach 
Benutzereingabe? Das Beispiel von Harrys Heimkino-Steuerung ist 
bezüglich Oberfläche genau was ich bräuchte...

> Als "BT Receiver Chip" kannst Du dann z.B. breakout boards mit
> Mikrocontrollern verwenden, die ein BLE Peripheral haben (z.B. nrf52).
>
> Wenn Du Dich für den nRF52 entscheidest, könntest Du z.B. einfach dieses
> Beispiel hier installieren und bist schon fast fertig:
> 
https://github.com/TorstenRobitzki/bluetoe/blob/master/examples/blinky_without_encryption.cpp
Würde dieser Beispiel-Code dann in dem GATT Client auf dem Handy laufen?

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Michael schrieb:

> Wie kann ich bei diesem Ansatz die Bedienoberfläche entwickeln? Könnte
> eine Webseite/WebApp Befehle an den GATT Client schicken, je nach
> Benutzereingabe?

Ich denke, jedes Verfahren, dass Du nutzen kannst, um Apps für iOS zu 
schreiben, wird Dir Zugriff auf die BLE API geben. Die ist schon sehr 
essenziell.

> Würde dieser Beispiel-Code dann in dem GATT Client auf dem Handy laufen?

Nein, dass wäre der GATT Server, der auf dem Breakout board laufen 
würde. Auf Deinem Handy würde entweder ein generischer GATT Client 
laufen, oder Du schreibst Dir etwas selbst.

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Harald K. schrieb:
> Torsten R. schrieb:
>> es gibt unzählige, generische GATT Client
>
> Haben die eine frei konfigurierbare Oberfläche?

Zumindest kenne ich keinen, der das erlaubt.

von Michael (mike567)


Lesenswert?

Harald K. schrieb:
> Michael schrieb:
>> Mac habe ich leider auch nicht…
>
> Dann vergiss' Bluetooth und nutze WLAN.
>
Top, danke für die klare Anweisung - war am Schluss von der Vielzahl der 
Möglichkeiten doch etwas überfordert - nun weiß ich die generelle 
Richtung.


> Entweder mit vielen Hard- und Softwareschichten (Node Red etc. auf
> separatem Rechner), oder mit direkt auf ESP8266/ESP32 laufender
> Software.

Wo wäre bei WebApp unter Cordova mit BLE aus Deiner Sicht der "Haken"? 
Bräuchte ich da auch iOS Entwicklerzugang (und ggfs. Mac)?

Eine WebApp, die auf dem Handy läuft und eine Oberfläche bereitstellt 
und die Befehle als String an einen MC schickt, fände ich auch eine gute 
Lösung, falls realisierbar

>
> Da musst Du halt selbst etwas Hand anlegen und die Darstellung der
> Webseite gestalten, und Dich gegebenenfalls auch etwas in die
> Funktionsweise von HTML & Co. einarbeiten.

Verstanden. ESP8266/ESP32 wäre dann aktuell meine Präferenz, da es mir 
ziemlich schlank/basic erscheint.

Würde man die Webseite komplett händisch (mit Texteditor in 
HTML/JavaScript) erstellen oder gibt es da auf die Zielumgebung 
ESP8266/ESP32 abgestimmte Tools? Oder einfach irgendein 
Webseiten-Generator und HTML nachbearbeiten und dann Datei auf 
ESP8266/ESP32 kopieren?

Und läuft auf dem ESP8266/ESP32 ein "vollumfänglicher" Webserver, der 
alle Features unterstützt, oder ist das eine "abgespeckte" Version mit 
entsprechenden Einschränkungen? Das war bei diesem Ansatz etwas meine 
Sorge...

von Harald K. (kirnbichler)


Lesenswert?

Michael schrieb:
> Würde man die Webseite komplett händisch (mit Texteditor in
> HTML/JavaScript) erstellen oder gibt es da auf die Zielumgebung
> ESP8266/ESP32 abgestimmte Tools?

Keine Ahnung. Da wirst Du Dir die Dokumentation ansehen müssen, 
ausgehend von einem der zahlreichen Beispiele.

Michael schrieb:
> Würde man die Webseite komplett händisch (mit Texteditor in
> HTML/JavaScript) erstellen

Vermutlich, weil man dann am besten weiß, was passiert. Das ist kein 
Hexenwerk.

> oder gibt es da auf die Zielumgebung ESP8266/ESP32 abgestimmte Tools?

Keine Ahnung, sieh Dir eines der Beispiele bzw. dessen Dokumentation an.

> Oder einfach irgendein Webseiten-Generator und HTML nachbearbeiten
> und dann Datei auf ESP8266/ESP32 kopieren?

Das dürfte der problematischte aller Wege sein. Vergiss' das besser.

Michael schrieb:
> Und läuft auf dem ESP8266/ESP32 ein "vollumfänglicher" Webserver, der
> alle Features unterstützt

Was ist "vollumfänglich" und was sind "alle Features"? Wenn Du 
cgi-Skripting mit PHP und 'ner fetten Datenbank suchst, dann ganz sicher 
nicht.

von Stefan F. (Gast)


Lesenswert?

Michael schrieb:
> Und läuft auf dem ESP8266/ESP32 ein "vollumfänglicher" Webserver, der
> alle Features unterstützt

Java EE Anwendungen kann er jedenfalls nicht ausführen.

von Michael (mike567)


Lesenswert?

Stefan F. schrieb:
> Michael schrieb:
>> Und läuft auf dem ESP8266/ESP32 ein "vollumfänglicher" Webserver, der
>> alle Features unterstützt
>
> Java EE Anwendungen kann er jedenfalls nicht ausführen.

...hatte wohl ein falsches Verständnis von "Webserver" in diesem 
Kontext.

Wenn ich die Beispiele richtig verstehe, wird der Webserver je nach 
Anwendungsfall auch selbst programmiert und umfasst neben dem Auslesen 
des Request/Headers auch die auszuführende Logik/Aktionen und die 
HTML-Seite selbst. Also nicht ein bestimmter Standard-Webserver, sondern 
Webserver inkl. Webseite und Logik sind anwendungsspezifisch (und extrem 
schlank) - so mein Verständnis.

Bei einem etwas umfassenderen Projekt (mit mehreren HTML-Seiten und 
vielleicht einem Navigationsmenü) kann man das vermutlich auf mehrere 
Dateien/Funktionen aufteilen (zwecks besserer Übersicht), oder? Eben nur 
händisch alles, aber dann ist es auch transaparent

von Harald K. (kirnbichler)


Lesenswert?

Michael schrieb:
> Also nicht ein bestimmter Standard-Webserver, sondern
> Webserver inkl. Webseite und Logik sind anwendungsspezifisch (und extrem
> schlank) - so mein Verständnis.

Richtig. Genau so.

> Bei einem etwas umfassenderen Projekt (mit mehreren HTML-Seiten und
> vielleicht einem Navigationsmenü) kann man das vermutlich auf mehrere
> Dateien/Funktionen aufteilen (zwecks besserer Übersicht), oder?

Wieder richtig, genau so.

von Al. K. (alterknacker)


Lesenswert?


von Harald K. (kirnbichler)


Lesenswert?

Al. K. schrieb:
> https://www.kai-morich.de/android/

Welchen Teil von iPhone-App hast Du verstanden?

von M. K. (sylaina)


Lesenswert?

Michael schrieb:
> Ich nehme an, in dem String ist
> dann der Aufruf einer C-Funktion auf dem MC codiert?

Jepp, der Mikrocontroller kann ein rudimentäres SCPI-Protokoll, die 
zugehörige App muss lediglich die Benutzereingabe in dieses Protokoll 
überführen damit es der Mikrocontroller auch verstehen kann aber das ist 
ja ne leichte Übung ;)

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
Noch kein Account? Hier anmelden.