Hallo zusammen,
der Grund weshalb ich Ihnen heute ein Projekt mit unserem ESP32DevC Board vorstellen möchte ist nicht sehr erfreulich. Leider gibt es Provider, die zwar Versprechen ländliche Regionen mit schnellem Internet zu versorgen, ihr Versprechen aber nicht halten können. Da wir hauptsächlich im Onlinegeschäft tätig sind heißt ein Verbindungsausfall für uns Zwangspause, dies ist sehr ärgerlich.
Eventuell haben sich schon viele von Ihnen gefragt wieso wir telefonisch nur schlecht erreichbar sind - nun, die Antwort sollte jetzt klar sein.
Damit wir wissen ob wir Online sind oder nicht, habe ich auf die Schnelle einen ESP32 mit RGB-Led konfiguriert welcher unseren Onlinestatus anzeigen soll. Momentan arbeitet mein Kollege an einem Blogbeitrag zur Netzwerküberwachung mithilfe von Nagios, um die Ausfallzeiten zu protokollieren. Dieses Projekt stellen wir in Kürze vor.
Wir brauchen:
- ESP32 NodeMCU DevKit C
- RGB-Led Modul (Optional: 2 Relais und Led-Strip)
- Breadboard Kit 102
Zuerst installieren wir die Libary von pbecchi, der die ESP8266-Libary für den ESP32 angepasst hat, diese finden Sie hier.
Wir laden also die ESP32_ping-master.zip von GitHub und installieren diese wie gewohnt in die Arduino-IDE unter Sketch->Bibliothek einbinden->.Zip-Bibliothek hinzufügen...
Die Verkabelung:
ESP32 | LED-Modul |
GPIO26 | G |
GPIO27 | R |
GND | GND |
Der Code:
/* Author: pbecc */
#undef PROVA_ #include <WiFi.h> #include "ping.h" // the setup function runs once when you press reset or power the board const char ssid[] = "AZ-DELIVERYrep"; // your network SSID (name) const char password[] = "19351384954612657685"; // your network password void setup() { Serial.begin(115200); Serial.print("Connecting t "); pinMode(26, OUTPUT); pinMode(27, OUTPUT); digitalWrite(26, LOW); digitalWrite(27, LOW); Serial.println(ssid); // WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Pinging address: 192.0.43.10"); } void loop() { int ia[4] = { 192,0,43,10 }; int i = 0; while (Serial.available()) { char c = Serial.read(); delay(100); int val = 0; while (c != '.' && c != 10 && c!=255) { if (c >= '0'&& c<='9') { val = val*10+(c-'0'); } c = Serial.read(); } ia[i++] =val ; } IPAddress adr = IPAddress(ia[0], ia[1], ia[2], ia[3]); Serial.printf("Ping : %d . %d . %d . %d ->", ia[0], ia[1], ia[2], ia[3]); if (ping_start(adr, 4, 0, 0, 2)){ Serial.println("OK"); digitalWrite(27, LOW); digitalWrite(26, HIGH); } else { Serial.println("FAILED"); digitalWrite(26, LOW); digitalWrite(27, HIGH); } delay(10000); } int readnu(char s) { char c = Serial.read(); Serial.print(c); int digit = 1,val=0; while (c != s && c != 10&&c>0) { if(c>'0') val += digit*(c - '0'); digit *= 10; c=Serial.read(); Serial.print(int(c)); } Serial.println(digit); return digit; }
Bis zum nächsten Beitrag und einen schönen Feierabend wünscht,
Albert Vu
Team AZ-Delivery
5 Kommentare
Dietmar K.
Hallo,
ich habe versucht Programm zum laufen zu bringen, ich bekomme aber immer Fehlermeldungen
error: stray ‘\240’ in programm
error: stray ‘\302’ in programm
usw
Was könnte dies sein?
Für Tipps wäre ich sehr dankbar.
Viele Grüße
Dietmar
Paddy
Moin!
Könnt Ihr dieses Projekt noch weiter ausbauen und einen Anstoß oder gar eine Lösung bieten, wie man die Daten speichern und dann später auswerten kann?
Moritz S
Vielen Dank für die Kommentare :-)
Nagios kennen wir noch aus Zeiten, in denen wir in großen Rechenzentren gearbeitet haben, allein schon aus Nostalgiegründen möchten wir dieses Projekt umsetzten.
Die rot/grüne Led hängt im Unternehmen an einem sehr zentralen Ort und soll lediglich unseren Mitarbeiten signalisieren wann sie sich stressfrei um anderen Aufgaben zuwenden können.
Alex
Schnelle und einfacher kommt man nicht zu einer vollständigen Netzwerk und Serviceüberwachung – und die Hardware liegt bei Euch im Lager ;-)
https://www.heise.de/ct/ausgabe/2018-19-Raspi-ueberwacht-Server-und-Netzwerkdienste-mit-Check-MK-4147940.html
Ulf Kosack
Wenn Ihr Euch ein Gefallen tun wollt, nehmt nicht mehr Nagios. Der Open-Source-Weg heißt Icinga (https://www.icinga.com/).
Viele Grüße
Ulf