ich habe keine Ahnung ob das, was ich mir ausgedacht habe möglich ist.
Ich stelle mir das so vor.
Auf dem Smartphone läuft FireFox.
Dafür möchte ich eine HTML-Seite erstellen mit einigen Tastern und einfachen Text-Rückmeldungen.
Ich rufe in FF diese Seite auf.
Drücke eine Taste und werde mit einer bestimmten IP zum Mega2560 WebServer verbunden.
Dieser verlangt jetzt ein PassWort. Dem Nachgekommen; bin ich mit dem Mega verbunden.
Nun drücke ich eine andere Taste, die LED 13 einschalten soll.
Es wird wieder nach einem Passwort gefragt, richtig eigegeben- und LED 13 leuchtet.
Das erste PassWort für die Verbindung zum Mega.
Das zweite Passwort für die Kontrolle über den Mega.
Hintergrund ist folgender:
Ich möchte mir einen AV-Server einrichten der nicht 24/7 läuft.
Der Mega soll das Ding ein- und ausschalten können, mit Rückmeldung.
Was brauche ich an HarWare um mit dem SmartPhone am Mega die LED 13 schalten zu können.
Würde mir ein Mega ADK etwas erleichtern?
Was könnt ihr mir sicheres und sauber laufendes empfehlen, um den Mega mit dem NetzWerk/Internet
zu verbinden?
Gruß und Dank
Andreas
Dann stellt sich natürlich noch die Frage, warum es ein Mega sein soll. Für eine LED kannst auch einen Uno oder einen Nano verwenden. Eine kleine Seite wird auch auf dem Uno/Nano Platz finden. Auch für den Nano gibt es Aufsteckboards die das verkabeln ganz einfach machen Page Not Found - Aliexpress.com.
ESP32 Modul verlink ich keines da es von diesesn auch massig Varianten gibt, und auf den Formfaktor wo ich mich eingeschossen habe, der Upload nur mit Tastendruck klappt.
Wenn es nur vom Smartphone aus gehen muss, empfehle ich dir Blynk. Das in Verbindung mit einer Funksteckdose Sonoff S20 auf ESP8265 Basis. Dann hast du das ganze ansprechend und schnell gelöst. Und musst nicht an 230V fummeln.
Oder eben mit Webseite, der ESP8265 in der Steckdose verhält sich genauso wie ein ESP8266.
Hallo,
kein Funk, nur Kabel. Mega 2560 weil ich den kenne, und ich weiß aus langzeit Erfahrung das
der zuverlässig läuft.
Die LED 13 ist nur ein Beispiel. Wenn ich es schaffe, die wie in #0 zu schalten, dann bekomme
ich auch den Rest hin.
Ich habe das "Arduino Ethernet Shield 2" entdeckt, das wäre ja schon etwas.
Was ist denn von dem Ding zu halten. Macht ja einen ordentlichen Eindruck.
An 220V will ich nicht fummeln. Ich greife den Ein/Aus-Schalter des Rechner an. Ein kurzer
Impuls zum hochfahren, ein langer zum runterfahren.
Dann prüfe ich die 5v des Netzteil. So könnte ich zweifelsfrei den Zustand feststellen.
Auf den Mega ADK bin ich gekommen, weil der USB hat. Man könnte so eine Tastatur simulieren
und den Rechner darüber steuern. Denke ich mir.
Gruß und Dank
Andreas
Ich habe ein paar S20 im Einsatz, bisher keine Probleme. Aber wenn du an den Ein/Aus-Knopf willst und Netzwerkkabel dort kein Problem ist, dann reicht sogar ein Uno. Und nimm ein Shield mit dem W5100 Chip. Aber weder Uno noch Mega beherrschen eine gute Verschlüsselung. Also von außen zugreifen dann nur mit VPN.
noiasca:
Du sollst nur die ENC28j60 Module meiden.
:o
Ach - jetzt lese ich das hier... leider ein paar Stunden zu spät. Soeben ein ENC28j60 Modul erworben...
Ich wollte ja ein W5100 (weil schon ein paar Mal damit erfolgreich gearbeitet), gab es aber nicht, sondern nur die Alternative: ENC28j60.
Naja, hat auch kein Vermögen gekostet.
:o
Was sind denn die wesentlichen Gründe, die gegen ENC28j60 sprechen?
Ich hab's nichts bestellt, sondern im Geschäft gekauft - manchmal bin ich ein wenig altmodisch und vor allem ungeduldig...
Und deshalb halte ich das Ding ja schon in Händen.
Bei mir haben sich die Sketche mit dem ENC28j60 nach ein paar Tagen immer aufgehängt. Mit dem w5100 hatte ich diese Probleme nie.
Dazu kommt eben das bereits erwähnte Problem mit dem Speicher, insbesondere beim 328 uC.
Ich hab die Teile noch rumliegen. In der Zwischenzeit gibt es ha such erschwingliche W5100 Boards. Aber hauptsächlich benutze ich inzwischen aber die verschiedensten ESP Varianten.
Also ich würde dir NodeMCU empfehlen, ich nutze den gerade auch in meinem Projekt.
Du kannst den mit der Arduino IDE programmieren, verbraucht wenig und kostet nur 7€.
Mit Blynk kannst du den dann steuern übers Handy, das ist auch kostenlos.
Der NodeMCU hat einen Analogen Eingang, da könntest du dann die 5V Leitung mit messen.
Zur Stabilität vill noch, ich hatte den quasi 24/7 in Betrieb an einer PS4 wegen Jailbreak ^^, also Zuverlässigkeit wäre auch gegeben.
// Raumluftueberwachung_Mega V1.1
//Erstellt unter Arduino IDE 1.8.9
#include <SPI.h> // Library fuer Serielle Ausgaben
#include <Ethernet.h> // Netzwerkfunktion
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Vorgabe MAC Adresse, Gerät hat keine
IPAddress ip(192,168,2,177); //Voreingestellte IP
IPAddress gateway(192, 168, 2, 1); //IP Adresse des DHCP bzw. Routers
IPAddress subnet(255, 255, 255, 0); // Subnetz Maske
EthernetServer server(80); // Initialisieren des Server mit Port 80
char Link[]= "http://192.168.2.100"; // Link als Charakter Variable
int const led = 6; // I/O Ausgangs-Pin 6
int receivedInt = -1; // receivedInt nicht in verwendung da Uerbagabe von NodeMCU nicht stattfindet
void setup() { // Einmalige Aufruf-Funktion
// Serielle Kommunikation (fuer den Seriellen Monitor)
Serial.begin(115200);
while (!Serial) {
; // warte
}
// starte Ethernet Verbindung pinMode für die LED und den Server:
Ethernet.begin(mac, ip); // Initialisieren Ethernetfunktion mit Mac und IP-Adresse
pinMode(led, OUTPUT); // Initialisiere Ausgangsbetrieb
server.begin(); // Starten des Webservers
Serial.print("Server an IP: "); // Serielle Textausgabe
Serial.println(Ethernet.localIP()); // Ausgabe der IP des Arduino Mega bzw. Shields
Serial.print("Webserver Mega2560 Shield gestartet");
}
//buffer ist ein String, welcher die Clientdaten zwischenspeichert
String buffer = "";
void loop() { // Wiederkehrende funktionen
EthernetClient client = server.available(); //Abhoeren auf Clients
if (client) { // Wenn Client verbunden
Serial.println("new client"); // Serielle Textausgabe
boolean currentLineIsBlank = true;
while (client.connected()) { // Client Schleife wiederkehrend fuer das Steuern des Relais
if (client.available()) {
//WICHTIG: client enthält Daten um das Relais zu Steuern
char c = client.read();
//WICHTIG: buffer String erweitern mit jedem loop Durchgang.
buffer+=c;
if (c == '\n' && currentLineIsBlank) {
// http rückgabe an Client
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>"); // Grundgeruest Webseite
client.println("<html><head><title> Arduino Webserver</title><meta charset=\"UTF-8\" /></head>"); // Ueberschrift 1 an TAB im Browser
client.println("<body><h1> Arduino Webserver</h1><ul>"); // Ueberschrift 2 Webseite
client.println("<body><h1>Raumklima Überwachung</h1><ul>"); // Ueberschrift 3 Webseite
// meta refresh tag hinzufügen, welcher alle 5 Sekunden den Browser refresht.
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
//entweder LED an (ON und grüne Schrift) oder aus (OFF und rote Schrift).
if (digitalRead(led)) {
client.print("Lüfter ist <font color = 'green'> AN </font>");
} else {
client.print("Lüfter ist <font color = 'red'> AUS </font>");
}
client.println("
"); // Break fuer Buttonabfrage
//Senden an server
client.print("<FORM action =\"http://192.168.2.177/\">"); // Empfang der Daten bzw. Zustaende der Buttons zum Server
// client.print("<FORM action =\"http://192.168.2.100/\">"); // nicht verwendete Formaabfrage des NodeMCU, nur eine Formabfrage möglich
client.print("<P> <INPUT type =\"radio\" name =\"status\" value =\"1\">AN"); //Input An gewaehlt bzw. Status
client.print("<P> <INPUT type =\"radio\" name =\"status\" value =\"0\">AUS"); //Input Aus gewahlt bzw. Status
client.print("<P> <INPUT type =\"submit\" value =\"Submit\"> </FORM>"); //Freigabe bzw. Status Submit Button
client.print("<iframe width=640 height=360 src="); // Ein Rahmen für Iframe funktion Webseite in Webseite anzeigen
client.print(Link); // Link is not between quotes! // Link -> IP Adresse Char des NodeMCU
client.println(" frameborder=0 allowfullscreen></iframe>"); //
client.println("<body>");
client.println("</body>");
client.println("</html>");
break;
}
if (c == '\n') {
buffer = "";
currentLineIsBlank = true;
}
else if (c == '\r') {
/*
* WICHTIG: durchsucht den buffer String nach der Char-
* folge "GET /?status=1" und falls vorhanden
* wird Code ausgeführt.
*/
if(buffer.indexOf("GET /?status=1")>=0){
Serial.println("Lüfter An Status=1");
digitalWrite(led,HIGH);
}
/*
* WICHTIG: durchsucht den buffer String nach der
* Charfolge "GET /?status=0" und falls vorhanden
* wird Code ausgeführt.
*/
if(buffer.indexOf("GET /?status=0")>=0){
Serial.println("Luefeter Aus status=0");
digitalWrite(led,LOW);
}
if (buffer.indexOf("GET /?receivedInt") >= 0) { // GET receivetInt nicht aktiv da keine zweite Form->GET
Serial.println(F("da ist was gekommen"));
uint16_t start = buffer.indexOf("GET /?receivedInt=");
receivedInt = buffer.substring(start+19).toInt();
Serial.print(F("--> receivedInt=")); Serial.println(receivedInt);
}
buffer = "";
}
}
}
// Gibt dem Webbrowser Zeit, die Daten zu erhalten.
delay(1);
// Schließe Connection:
client.stop();
Wobei man aber auch sagen muss, dass der Mega 2560 mit Shield W5100 nur 4 Verbindungen (laut Hersteller) halten kann. Also mehrere geöffnete Webseiten von verschiedenen Clients, da wirds dann schwierig.
Die Zeilen mit dem iframe kannst du löschen, ich hatte da die Webseite des ESP8266 noch zusätzlich implementiert.
client.print("<iframe width=640 height=360 src="); // Ein Rahmen für Iframe funktion Webseite in Webseite anzeigen
client.print(Link); // Link is not between quotes! // Link -> IP Adresse Char des NodeMCU
client.println(" frameborder=0 allowfullscreen></iframe>");
Wenn es ohne Kabelgefummel nur mit WLAN funktionieren soll und ohnehin weniger Ausgänge gebraucht werden kannst du das auch für den ESP umschreiben.
Hallo,
Funk möchte ich ja nicht, externe App´s auch nicht. Das muß in meinen Händen bleiben.
Mit HTML und Java kann man schon ansprechende Seiten aufbauen, die dann nur noch
gefüllt werden müssen.
Wenn ich das richtig verstanden habe, dann nehmen die W5xxx einem etwas SketchArbeit ab.
Speicherplatz wird auch etwas geschont, das hört sich doch gut an.
Also habe ich mir zum üben das Arduino Ethernet Shield 2 geholt. Draufstecken und fertig.
Danach habe ich die Beispiele probiert- und das läuft. Ist schon ein wenig unheimlich was
heute als "privater" alles möglich ist.
Meine LED kann ich auch ein/ausschalten, Werte empfangen/senden funktioniert auch. Das ist
weit mehr, als ich in dieser kurzen Zeit zu hoffen gewagt habe.
Zum üben ist das Shield ideal, aber sonst... Ich werde es durch eine W5100 Platine ersetzen,
wenn ich denn eine ohne Funk finde.
Den Sketch von Gala30 werde ich mal probieren, mal sehen was da rüberkommt.
Also, vielen Dank für eure Hilfe.
Gruß und Spaß
Andreas