Moin Ein Meshnetzwerk mit den ESP's ist ja dank dem Beispiel "Hello Mesh" recht einfach. Aber wie schaffe ich es einen Laptop (oder Handy) mit in diese Kommunikation einzubinden? Es sind auch nicht viele Daten die ausgetauscht werden sollen: Die ESP's senden alle x Minuten einen gemessenen Wert in das Mesh, der Laptop liest diese aus (am liebsten mit PHP) und sendet einen Wert an den jeweiligen ESP zurück. Hat damit jemand Erfahrung? Gruß
Schau Dir den Quelltext an und verstehe ihn. Soweit ich das sehe, warten alle Nodes darauf, dass sich jemand mit ihnen verbindet. Dann senden sie die hardcodierte Hello-World Nachricht an alle erreichbaren anderen Nodes. Die Nachricht erreicht aber nur diese Nodes. Nodes die weiter weg sind und indirekt mit verbunden sind, empfangen die Nachricht nicht. Aber alle Nodes, die irgend etwas empfangen haben, senden wiederum die in ihnen hardcodierte Nachricht an alle anderen erreichbaren Nodes. Danach blockiert der Node für eine Sekunde und ignoriert alles, was um ihn herum passiert. Eine Node ist ein Access Point mit beliebiger SSID und ein TCP Listener auf IP Adresse 192.168.4.1 Port 4011. Ich denke, das geht am Sinn des vermaschten Netzes vorbei. Zum Einen kannst du damit nicht frei bestimmbare Nachrichten durch das ganze Netz schicken und zum Anderen sehe ich dort keinen sinnvoll funktionierenden Mechanismus, der endlose Wiederholungen verhindert. Bei größen Netzen wird das auffallen, oder auch bei kleinen Netzen wenn du die Blockierzeit verringerst. Auffallen wird der Konzeptfehler, wenn du mal einen anderen Text in das Netz sendest, der NICHT im Quelltext hardcodiert drin steht. Und mach mal das Netz so groß, dass sich nicht alle Nodes direkt erreichen, sondern ein oder zwei Ringe entstehen:
1 | +------------------------<-----------------------+ |
2 | | | |
3 | A----->B----->C------>D----->E----->F----->G-----+ |
4 | | ^ |
5 | | | |
6 | +----->H--------------+ |
Dann bricht das totale Chaos aus, darauf wette ich. Damit dein PC Teil dieses Netzes wird, muss er ebenfalls selbst ein Access Point sein oder mit einem Access Point verbunden sein und die IP Adresse 192.168.4.1 haben. Und er muss einen TCP Listener auf Port 4011 laufen haben - im einfachsten Fall das Programm Netcat (nc). Dieses Beispielprogramm ist typischer Arduino Murks.
Hallo Stefan Danke für die ausführliche Antwort, auch wenn es nicht das ist was ich erwartet hatte. Zur Zeit ist das Mesh nur drei nides groß, später sollen es aber bis zu 50 sein. Kennst du eine andere Methode um mit Laptop und 50 ESPs zu kommunizieren? Gruß
> Kennst du eine andere Methode um mit Laptop und 50 ESPs > zu kommunizieren? Zum Beispiel ein ganz normales WLAN mit einem AP. Aber das wolltest du wohl nicht hören. Mal ein anderer Ansatz, der vielleicht besser zu deiner unbekannten Anwendung passt: Schließe ein ESP Modul an den seriellen Port des PC an, dann kannst du von dort aus steuern, was das Ding auf der Funkschnittstelle machen soll. Eine entsprechende selbst geschriebene µC Software natürlich vorausgesetzt. Was soll denn die Anwendung tun, welche Anforderung kannst du nennen?
Werner P. schrieb: > MQTT Schaue ich mir mal an, kannte ich noch gar nicht. Gibt es damit nicht die Probleme, die Stefan oben dem Mesh zugeschrieben hat? Stefan U. schrieb: > Zum Beispiel ein ganz normales WLAN mit einem AP. Dafür sind die Entfernungen zu groß. ;-) Stefan U. schrieb: > Schließe ein ESP Modul an den seriellen Port des PC an Laptop -> USB -> Seriell -> ESP ist mir eigentlich etwas zu aufwändig, dafür das der Laptop schon eine W-Lan Karte integriert hat. Stefan U. schrieb: > Was soll denn die Anwendung tun, welche Anforderung kannst du nennen? Naja, wie oben schon beschrieben: Es sollen 3 Nodes (NodeMCU), später bis zu 50 Stück, alle 3 Minuten einen Temperaturwert senden und daraufhin einen Stellgröße (int) empfangen. Im "Mittelpunkt" steht ein Laptop, welcher die Temperaturen der einzelnen Nodes speichert, auswertet und daraufhin jedem Node seinen neuen Stellwert zuordnet. Eigentlich ganz einfach.
> und daraufhin einen Stellgröße (int) empfangen.
Also willst du nicht eine eine Hallo Nachricht durch das ganze Netz
schicken, sondern gezielt von jeder Node zu PC senden und vom PC aus
jeder Node einzeln eine gezielte Antwort senden.
Da kannst du diese HelloMesh Klasse völlig in die Tonne kloppen. Solange
du mit TCP/IP arbeiten möchtest, solltest du auch dessen Routing
Methoden einsetzen. Zum Beispiel durch Aufstellen von WLAN Repeatern,
man muss das Rad ja nicht neu erfinden.
Jede Fritz Box (auch die billige für 50 Euro) kann das.
Ja, das ist richtig. Es muss nicht jede Node jede Information haben. Die eigentliche Kommunikation soll nur zwischen dem Laptop und jeder einzelnen Node stattfinden. Aber ne Fritzbox als Repeater ist doch genauso "von hinten durchs Knie ins Auge" wie der serielle Anschluss eines ESPs an den Laptop. Es ist doch die gesamte Fläche mit WLAN abgedeckt, da brauch es doch nicht noch mehr Hardware... Eins noch, die Aufstellung der ESPs wird des öfteren verändert, sodass ich keine festen Routen hinterlegen kann. Sorry, das hatte ich vergessen zu Beginn zu erwähnen.
> Aber ne Fritzbox als Repeater ist doch genauso "von hinten durchs > Knie ins Auge" Nein, denn die Fritzbox nutzt die Mittel, die für WLAN vorgesehen sind. Und damit brauchst du auch nicht so üble Tricks anwenden, wie - Laptop scannt periodisch nach allen AP und versucht, sich mit allen zu verbinden. - Alle Nodes haben die selbe hardcodierte IP Adresse. - Alle Nodes senden dumm an alle anderen, was Endlos-Schleifen provoziert. Und denke an das Timing. Rate mal, wie lange wohl eine Kette von 50 Nodes mit maximalem Abstand bräuchte, um die Nachricht von einem Ende bis zum anderen durch zu reichen, wenn damit jedesmal ein AP Scan und Verbindungsaufbau verbunden ist. Kann gut sein, dass es sogar länger als eine Minte dauert. Das Konzept ist so mies, dass du damit keine gute Bewertung bekommen wirst.
Hallo, je nach Datenmenge und geforderten Antwortzeiten kann durchaus auch ein ESP den Repeater spielen, ist kleiner als eine Fritzbox. Problem ist die Anzahl Clientverbindungen, der ESP kann nur eine "zeitgleich" handeln. Ein MQTT-Broker auf einem RasPi o.ä. als Verwaltung. MQTT bietet eigentlich alles, was hier nötig wäre: Quittungsmöglichkeit, Keep-Alive und Handlingsmöglichkeit, wenn ein Client abhanden kommt ("letzter Wille"), die Möglichkeit, nur aktuelle gesendete Daten zu bekommen oder beim Neu-/Wiederanmelden die letzte Meldung zu bekommen usw. Wäre sicher ein interessantes Projekt und mit einigen NodeMCUs auch preiswert zu testen. Sensor sendet Wert, notfalls mehrmals, bis er vom Broker die Quittung hat usw. Die Frage ist jetzt, wie die Daten verarbeitet werden sollen. Könnte der RasPi vermutlich übernehmen, Anbindungen für MQTT gibt es alle Möglichen. Prinzipiell ist es ja nur ein MQTT-Client, der alle Nachrichten abboniert auswertet und den Stellwert verendet. Kann man zum Test z.B. mit MQTTfx auf dem Notebook testen, beim Broker anmelden und schauen, was alles draußen passiert bzw. erstmal die Werte von Hand senden. Man kann auch Mosquitto als Broker erstmal auf dem Notebook installieren, dann braucht man zum Test außer ein paar NodeMCU garnichts. PS: es sollten sich nie 2 MQTT-Clients mit dem gleichen Namen beim Broker anmelden, es passieren dann durchaus seltsame Dinge... Gruß aus Berlin Michael
:
Bearbeitet durch User
Stefan U. schrieb: > Kann gut sein, dass es sogar länger als eine Minte dauert. Und wenn es drei Minuten Dauert, das ist OK. Michael U. schrieb: > Wäre sicher ein interessantes Projekt und mit einigen NodeMCUs auch > preiswert zu testen. Wenn ich MQTT richtig verstehe, muss dort (wie bei Router-Client) jeder ESP einen direkten Kontakt zum Laptop haben. Um das zu umgehen, war die erste Idee ja das Mesh-Netzwerk
Ganz ehrlich, ich halte nicht viel von dem Ansatz, alle AP's in der Umgebung zu suchen und dann zu kontaktieren. Nichts desto trotz kann es funktionieren. Aber nicht mit diesem HelloMesh Projekt, schreibe Dir da besser eine eigene Logik die deine Anforderungen erfüllt: - Messwerte (nicht hardcodierte Texte) zum PC hin senden - Steuerwert vom PC empfangen - Keine Endlosschleifen
Hallo, Kurt schrieb: > Wenn ich MQTT richtig verstehe, muss dort (wie bei Router-Client) jeder > ESP einen direkten Kontakt zum Laptop haben. das ist richtig. Deshalb ja meine (ungetestete) Idee, strategisch günstig ein paar NoceMCU als reine Repeater in der Gegend zu verteilen. Bei Deinem zu erwartenden Datenaufkommen sollte das eigentlich gehen. Gruß aus Berlin Michael
Vergiss den Stromverbrauch nicht! WLAN ist gut hunrig und dauert auch immer ne Weile, wenn die nachm schlafen sich mit wem auch immer wieder verbinden sollen. Sollen die alle auf Batterie laufen oder Akku oder Netzteil? Um welche Entfernungen handelt es sich später? Vllt ginge was mit BLE? Hans
Schlafen können die nodes bei diesem HelloMesh gar nicht. Sie müssen permanent empfangsbereit sein.
Ja, sie werden über Akkus am Leben gehalten. Eine Laufzeit von ein paar Tagen sollte reichen. Aber es gibt ja noch einen Motor, der mit am Strom hängt. Wie viel Strom der zieht, kann ich leider noch gar nicht sagen. Aber schlafen können die Nodes doch in der Zeit wo nix passiert. Möglicher Ablaufplan: 1.) Alle Nodes senden ihre beiden Messwerte zu dem Laptop 2.) Der Laptop sendet an jede Node einen passenden Stellwert 3.) Jeder Node bestätigt den neu erhaltenen Wert 4.) Der Laptop legt alle für 5 Minuten Schlafen. 6.) Die Nodes wachen auf, siehe 1.) Wie die Nodes ihr Informationen an den Laptop senden und wie die Antwort zurück kommt,ist hier natürlich nicht berücksichtigt!
Hallo, Node wacht auf Meldet sich beim nächstgelegenen AP an *Meldet sich beim MQTT-Broker an. Node schickt den Messwert Node wartet auf den Stellwert Node geht schlafen. *Wenn während des Schalfens ein Stellwert geschickt wurde, bekommt die Node diesen sofort, wenn man das dem MQTT sagt. Man kann sie also auch nach dem Schicken des Messwertes wieder schlafen legen und and z.b. 1min später wieder wecken. Das hängt dann einfach von den nötigen Gegebenheiten ab. Man kann auch alle 3min aufwachen, den "letzten" Stellwert abholen und den neuen Sensorwert schicken. Kommt darauf an, ob man "sofort" reagieren muß oder ob das Spiel: ich schicke einen Meßwert ich bekommen 3min später den Stellwert (für den Messwert von vor 3min) und schicke parallel den aktullen Messwert. Wenn man z.B. Keep-Alive beim Broker dann auf 4 Minuten und einen "letzten Willen" setzt, bekommt man diese Meldung nach 4 Minuten, wenn sich ein Node nicht pünklich gemeldet hat. Gruß aus Berlin Mcihael
Für deinen Plan müssen aber wieder Repeater eingesetzt werden. Und können die nicht auch noch zusätzlich Messwerte aufnehmen und Stellwerte umsetzten?
Hallo, der ESP kann AP und Station gleichzeitig sein, damit für diesen Zweck praktisch Repaeter spielen, da auch noch ein MQTT-Client darauf laufen zu lassen wäre kein Problem. Vielleicht präpariere ich mir hier mal einen ESP als "AP" genau für diesen Zweck und schaue mal. Ich kann den ja erstmal einfach "transparent" zwischen einen meiner MQTT-Clients hängen und über die Entscheidungslogik nachdenken, ob und wann der sich mit meinem AP oder dem ESP-"AP" verbindet. Sind dann ja erstmal hier beide in Reichweits. Noch sagt mir mein Gefühl, daß es gehen könnte, das kann sich nach wenigen Stunden auch ins Gegenteil verkehren. Sowas probiere ich mit der Anfangsidee meist erstmal aus... Mein Testwebserver macht im Moment erstmal alles, was er soll: fallback in eine 2. WLAN, wenn das erste nicht ereichbar ist (theoretisch auch mehrere, ist eine Zeitfrage, da ich im Momet für jeden Verbindungsversuch 10s timeout habe, dann fallback in den AP-Mode. File-Upload/Download geht, editieren der config-Datei geht. Muß noch ein Neustart-Button in die config-Seite und im AP-Mode noch eine Zeitsteuerung, die alle xx Minuten versucht, ob eins der WLANs wieder ereichbar ist und wenn ja, dann wieder AP aus. Das amcht aber jetzt keine Mühe mehr, da kann ich auch mal mit seinem Problem rumspielen. Gruß aus Berlin Michael
Michael U. schrieb: > der ESP kann AP und Station gleichzeitig sein, damit für diesen Zweck > praktisch Repaeter spielen, da auch noch ein MQTT-Client darauf laufen > zu lassen wäre kein Problem. Dann kann der ESP doch auch noch alle 5 Minuten zwei Temperaturen auslesen und kurz darauf einen Motor laufen lassen :-) Michael U. schrieb: > Noch sagt mir mein Gefühl, daß es gehen könnte, Vertraue deinem Gefühl! Ich habe leider erst drei ESPs hier rumliegen. Eigentlich dachte ich, dass ich damit eine Netzwerk aufbaue, welches auch mit mehr Teilnehmern funktioniert. Jetzt bin ich da etwas unsicher geworden. Gruß nach Berlin & Danke für die Unterstützung!
Nochmal ein paar Gedanken zum Datenaustausch: Alle Daten werden über Laufzettel aka Arrays übertragen. Das Array hat für jede Node eine Zeile und eine Kopfzeile für die Konfiguration (Nummer des Arrays). Wenn der erste Node aufwacht misst er die Temperaturen und speichert seine ID und die Messwerte auf dem Laufzettel und schickt diesen in Netzwerk. Empfängt ein Node den Laufzettel, fügt er seine Daten hinzu. Auch der Server empfängt, je nach Position, mehr oder weniger unfertige Laufzettel, aber irgendwann den Kompletten. Jetzt kann er aus den Temperaturen neue Stellwerte berechnen und schickt diese, auf einem Laufzettel, in das Netzwerk. Wenn ein Node den Laufzettel empfängt und seinen Stellwert ändert, schreibt er dies auf den Laufzettel. Wenn ein Node einen vollständig unterschriebenen Laufzettel bekommt, legt er sich für 5 Minuten schlafen. Gruß und gut nacht
Moin Gibt es hier jemand der zufällig eine zweistellige Anzahl von ESp Modulen rumliegen hat? Selbst wenn ich heute bestelle, dauert es bin Mitte Juni, bis ich welche habe...
Hallo, kannst ja mal schauen, ob im EU-Warehouse von BangGood was rumliegt: http://eu.banggood.com/ Preise muß Du selber vergleichen, ist etwas teuerer. Versand knapp 1 Euro, Lieferzeit bisher bei mir bisher immer 1 Woche. Die komplette Seite findest Du unter http://www.banggood.com/ PS: Preise werden mehr nach Lust und Laune in Euro, Dollar, Kronen, Lire, Pfund angezeigt, muß man dann jedesmal wieder umstellen... Gruß aus Berlin Micjaeö
Michael U. schrieb: > kannst ja mal schauen, ob im EU-Warehouse von BangGood was rumliegt: This warehouse can not ship to your location.
Hallo, das ist eines der Geheimnisse von BangGood, vermutlich nicht genug NodeMCU am Lager. ESp8266-12E kann man kaufen. Hatte ich mit Lochrasterplatinen schonmal, ich konnte nur eine Sorte bestellen, warum auch immer... Aus US kann man NodeMCU offenbar bestellen, 7-10 Tage Lieferzeit, keine eigene Erfahrung. Ich nutze da nur das EU-Warehouse, keine Lust, über Zollfreigrenzen nachzudenken. Gruß aus Berlin Michael
Und hier irgendwelche Neuigkeiten? Ich versuche ähnliches aufzubauen.
bei echtem mesh netzwerk müssten alle ESP gleichzeitig AP und Station sein also 50 AP batteriebetrieben müssten die dann auch noch zur gleichen zeit ON sein.. kann mir nicht vorsteleln dass das mit "normalem Wlan" sinnvoll funktioniert.. eher wird man zwischendurch ein paar repeater hinstellen..
Man könnte ja auch tatsächlich zwei ESP pro Schaltung verbauen und diese per UART kommunizieren lassen. Zieht dann aber schnell die Akkus leer.
Es gibt Neuigkeiten von der Front: https://github.com/sfranzyshen/easyMesh http://www.esp8266.com/viewtopic.php?f=6&t=11849&start=32 Hat damit schon jemand Erfahrungen gesammelt?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.