Arduino Forum

International => Deutsch => Topic started by: BA2017 on Jun 15, 2017, 03:33 pm

Title: Signal von Arduino an Android App
Post by: BA2017 on Jun 15, 2017, 03:33 pm
Hallo,

hat jemand einen Tipp, wie man ein Signal eines Arduinos auf einer Mobile App anzeigen lässt?
Zum Beispiel beim Unterbrechen einer Lichtschranke wird ein grüner Kreis auf der App angezeigt o.ä.
Würde das ganze gerne über ein Netzwerk verbinden.

Bis jetzt habe ich leider überall nur Hinweise dazu gefunden, wie man einen Arduino mit einer App steueren kann, aber nicht andersrum.

Ich bin für jede Hilfe dankbar.
Title: Re: Signal von Arduino an Android App
Post by: HotSystems on Jun 15, 2017, 06:05 pm
Muss es eine App sein oder geht auch ein Browser ?
Title: Re: Signal von Arduino an Android App
Post by: Schuppeste on Jun 15, 2017, 06:11 pm
Kommt immer drauf an wie und wo..

Handy bleibt ja nur GSM, WLAN, Bluetooth.

Wenn es wegen der Reichweite nicht über Bluetooth gehen sollte dann geht nur WLAN..

Für WLAN gibt es mehrere Möglichkeiten.

1. Arduino via Serial an ESP8266 als eigener Server. (App holt dort seine Daten ab, ohne Html)
2. Arduino via Serial an ESP8266 über einen Server mit der App verbunden.
3. Wenn es nicht viel mehr darstellen soll, Arduino direkt am ESP8266 ohne Atmega.

Für alle drei Fälle sind die Basic Examples sogar mit Apps dabei genau Dein Wunsch, googeln hilft da ungemein :D
Title: Re: Signal von Arduino an Android App
Post by: Derfips on Jun 15, 2017, 07:08 pm
ich habe es für meinen Esp8266 mit Pushbullet (https://www.pushbullet.com/) hinbekommen. Die Laufzeit bis zum eintreffen der Pushnachricht beträgt ungefähr 2 - 3 Sekunden. Bei Intresse kann ich den Code gerne posten.
Gruß Fips
Title: Re: Signal von Arduino an Android App
Post by: BA2017 on Jun 20, 2017, 10:49 am
Vielen Dank für Eure Antworten!

@Schuppeste, dein 2. Vorschlag war auch mein erster Gedanke. Ich denke ich werde es so versuchen, falls ich weitere Fragen habe werde ich mich noch einmal melden.

@Derfips, mit Pushbullet habe ich noch nie gearbeitet, hört sich aber interessant an! Ich würde mir den Code gerne anschauen wenn das OK ist.

Beste Grüße
Title: Re: Signal von Arduino an Android App
Post by: SherIock on Jun 22, 2017, 03:37 pm
Womit ich gerne arbeite ist Processing. Eine sehr simple Programmiersprache basierend auf Java. Du kannst über die Processing PDE simple Apps für Android selbst schreiben, oder über die APDE direkt auf deinem Smartphone Apps für selbiges schreiben.
Auch dafür gibt es viele simple Beispiele wie du die Kommunikation über WLAN oder Bluetooth regeln kannst.
Title: Re: Signal von Arduino an Android App
Post by: Derfips on Jun 22, 2017, 10:02 pm
Entschuldige das ich erst jetzt Antworte habs wohl überlesen.
Du musst diese Bibliothek einfügen
Code: [Select]
#include <WiFiClientSecure.h>
Diese Variablen
Code: [Select]
const int httpsPort = 443;
const char* host = "api.pushbullet.com";
const char* PushBulletAPIKEY = "o.W5oQro3Eod1pOv5BJ2IDNXsSiJ20xjpy"; //Bekommt ihr von eurem Pushbullet-Konto
// Verwenden Sie den Webbrowser zum Anzeigen und Kopieren
// SHA1 fingerprint of the certificate
const char* fingerprint = "E7:06:F1:30:B1:5F:25:72:00:4D:99:F0:ED:90:4D:F9:60:D3:FB:75"; //got it using https://www.grc.com/fingerprints.htm

Diese Funktion schickt die Nachricht
Code: [Select]
void Pushbullet() {               // Push Nachricht zum Klingelkasten schicken
   WiFiClientSecure client;
  if (!client.connect(host, httpsPort))  return;
  String messagebody = "{\"type\": \"note\", \"title\": \"Push vom ESP\", \"body\": \"Licht ";
  messagebody += Zeitstempel;
  messagebody +=  "\"}\r\n";
  client.print(String("POST ") + "/v2/pushes HTTP/1.1\r\n" + "Host: " + host + "\r\n" +
               "Authorization: Bearer " + PushBulletAPIKEY + "\r\n" +
               "Content-Type: application/json\r\n" + "Content-Length: " +
               String(messagebody.length()) + "\r\n\r\n");
  client.print(messagebody);
   Serial.println("request sent");
  while (client.available() == 0);    //Druckt Antwort
   while (client.available()) {
     String line = client.readStringUntil('\n');
    Serial.println(line);
   }
}

die muss natürlich im programm(loop) bei auslösen eines Ereignisses mit
Code: [Select]
Pushbullet(); aufgerufen werden