Forum: Mikrocontroller und Digitale Elektronik Kommunikation zwischen Paspberry pi und EPS8266


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Kaloyan I. (kaloyan_i)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich habe vor bei mir zu Hause, z.B eine Lampe über mein Handy ein und 
auszuschalten zu können. Ich kann schon über mein Handy über SSH an dem 
Raspberry angeschlossene Lampe ein und ausschalten (ganz bequem über ein 
App). Doch der Pi soll im Zukunft der Master sein und viele Slave 
(EPS8266) Boards ansteuern. Die ganze Sache soll also so ablaufen über 
mein Handy sag ich dem Pi was er tun soll und er sagt dem Slave 
(EPS8266) was er, dann zu tun hat.


So jetzt komm ich zu meine eigentliche Frage.
Wie kann ich am einfachsten zwischen dem Pi und dem EPS8266 Daten (also 
mein Befehl an dem EPS8266) senden. Es soll auch keine große 
Verzögerungen geben.

Ich danke euch schon mal im Vorau.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Im Prinzip genau so, wie mit dem Handy. Dazu eignet sich jede beliebige 
Programmiersprache. Beim Raspberry Pi würde ich es mal mit Python 
versuchen, wenn du noch keinen anderen Favorit hast. Oder ganz 
old-school: Shell Scripte.

: Bearbeitet durch User
von Kaloyan I. (kaloyan_i)


Bewertung
0 lesenswert
nicht lesenswert
ja klar das weiß ich, meine Frage ist wie die Verbindung aufgebaut wird 
zwischen Pi und EPS ich hab mich bisschen schlau gemach und bin auf 
Begriffe gestoßen wie Apche, MQTT usw. doch diese Begriffe sagen mir 
erst mal nicht viel. Kann ich das direkt machen also ohne Server auf dem 
Pi. Wenn ja wie?

:)

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Du hast doch geschrieben, daß Du schon eine Steuerung mit dem Smartphone 
gemacht hast. Wie funktioniert die denn?

Wenn du doch noch gar keine Ahnung hast, dann denke Dir einfach ein 
textbasiertes Protokoll aus, dass du auf einer TCP Socket Verbindung 
nutzt. Da könntest du dann "Licht 3 an" senden, um die Lampe 3 
einzuschalten.

Auf deinem ESP muss dann natürlich ein Programm laufen, dass solche 
kommandos versteht.

Diese Begriffe, die Dir nicht viel sagen, darfst du gerne links liegen 
lassen. Im bereich IOT und Hausautomation kocht sowieso jeder Hersteller 
sein eigenes Süppchen. Dann kannst du das auch.

von Noch einer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Willst du die ESPs selbst programmieren, oder willst du sie als 
WLAN-Modem für Mikrocontroller benutzen?

Am einfachsten, du suchst dir als Übung erst mal eines der Tutorials: 
"Lampe mit Arduino, ESP und Webbrowser einschalten"
z.B. https://arduino-hannover.de/2014/12/11/wifi-kochbuch-mit-esp8266/

Als 2. Schritt bastelst du dir auf dem Raspi ein Script, das diese 
Webaufrufe mit curl oder ähnlichem macht.

Danach hast du genug Überblick, kannst dir die Technologie raus suchen, 
die dir liegt.

von Kaloyan I. (kaloyan_i)


Bewertung
0 lesenswert
nicht lesenswert
ich danke dir,
also die Steuerung über das Smartphone funktioniert so, mit eine App 
kann ich ein Button erstellen und diesen ein Kommando zuweisen, z.B 
/home/pi/lichtaus.sh. Dieses wird an dem Pi gesendet und in dem shell 
script ist mein Programm das ausgeführt wird ( in dem Fall wied ein GPIO 
Pin auf HIGH gesetzt).

das ist schon alles.

aber ich habe kein SSH auf dem Modul(EPS8266) also muss der pi dieses 
Modul über eine ip ansprechen, ich kann ja nicht einfach irgendwas im 
Wlan sende und erwarten, dass das Modul es versteht. Ich brauch so was 
wie SSH für die Verbindung zwischen pi und Wlan Modul.

dass mit mein eigenes "Süppchen" ist eine gute Idee!

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
> Ich brauch so was wie SSH für die Verbindung zwischen
> pi und Wlan Modul.

Du meinst einen IP Socket und einen Listener, der deine Kommandos 
versteht. IP-Socket ist in der Basis-Firmware des ESP Chips enthalten. 
Den Listener musst du selbst programmieren - das ist definitiv kein 
Hexenwerk.

von Kaloyan I. (kaloyan_i)


Bewertung
0 lesenswert
nicht lesenswert
Genau...

ich brauch erst ein "IP Socket" das heißt wenn ich mit mein Pi was sende 
das ich es an eine Adresse im Netzwerk sende.

Und dann ein Programm, dass das gesendete auch versteht und was damit 
anfangen kann, z.B (ln = licht an) wenn ich "ln" sende muss das Modul 
das licht Anschalten das ist dann der Listener oder ?

Aber vom pi brauch ich ein Programm, dass eine nachricht an ein 
bestimmte Adresse senden kann, habt ihr da eine Idee was ich da machen 
kann.

also der IP Socket ist ja für das Modul und für den Pi ?

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Du kannst mit jeder beliebigen Programmiersprache einen IP Socket 
öffnen.

Auf der Kommandozeile benutzt man einen IP Socket mit Netcat (nc), das 
funktioniert grob gesagt wie ssh nur ohne Verschlüsselung.

> Aber vom pi brauch ich ein Programm, dass eine nachricht an ein
> bestimmte Adresse senden kann

Nicht nur das, dein Programm muss an viele bestimmte Adressen senden 
können und es muss Kommandos von deinen Smartphones empfangen können. 
Auch das musst Du Dir selbst schreiben.

Du hast meine Frage immer noch nicht beantwortet:
> Ich kann schon über mein Handy über SSH an dem
> Raspberry angeschlossene Lampe ein und ausschalten
> (ganz bequem über ein App).

Wie hast du das gemacht? Dabei hast du doch sicher irgend etwas gelernt, 
woran man anknüpfen kann.

: Bearbeitet durch User
von Kaloyan I. (kaloyan_i)


Bewertung
0 lesenswert
nicht lesenswert
also die App kann auf dem Raspberry über SSH zugreifen und ihm Kommandos 
in die Konsole schreiben wie z.B (home/pi/ledan.sh) und das auf 
Tastendruck (die App hat tasten und jeder Taste kann ein Kommando 
zugewiesen werden).
den davor habe ich ein Shell Script erstellt der mein Programm aufruft. 
Mein Programm schaltet ein GPIO Pin auf HIGH.


so aber jetzt soll mein Programm kein GPIO pin schalten sonder ein 
Kommando an dem Modul senden.

Wie du siehst können wir bei mein Programm weiter machen den wenn ich 
ein Programm auf dem Raspberry hab dass dem Modul das Kommando sendet, 
kann ich das Programm ohne Probleme aufrufen (denn es ist egal was für 
ein Programm aufrufe ob mein "led.an" oder was anderes)

also schreibe ich viele kleine Programme die aufgerufen werden und ein 
Befehl senden, z.B das die led an geht oder aus geht, das währen schon 2 
Programme und 2 Tasten in meiner App.

hoffe du weißt jetzt wie ich es umgesetzt habe und was ich jetzt 
vorhabe.

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
> aber jetzt soll mein Programm kein GPIO pin schalten sonder ein
> Kommando an dem Modul senden.

Aus deinem Shell Script heraus kannst du netcat aufrufen, um mit einem 
IP Socket zu kommunizieren. Zum Beispiel:

echo "Mach das Licht aus!" | nc 192.168.0.123 23

Falss du eine Verzögerung vor dem Senden des Befehls brauchst:

sleep 2 && echo "Tür zu!" | nc 192.168.0.123 23

: Bearbeitet durch User
von Kaloyan I. (kaloyan_i)


Bewertung
0 lesenswert
nicht lesenswert
das klingt schon mal vielverspechend.
ich werde es dann wenn die Teile da sind aufbauen und ausprobieren, und 
mich dann wieder melden und sagen wie es gelaufen ist.

ich danke vielmals für deine Hilfe !!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.