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


von Kaloyan I. (kaloyan_i)


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. (Gast)


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.

von Kaloyan I. (kaloyan_i)


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. (Gast)


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)


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)


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. (Gast)


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)


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. (Gast)


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.

von Kaloyan I. (kaloyan_i)


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. (Gast)


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

von Kaloyan I. (kaloyan_i)


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 !!!

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.