Go Down

Topic: Mydooropener Projekt (Read 951 times) previous topic - next topic

mrlowalowa

Jul 20, 2011, 04:11 pm Last Edit: Jul 21, 2011, 10:38 pm by mrlowalowa Reason: 1
Hallo Leute,

ich hab folgendes Problem.
Meine Haupt Idee ist eigentlich, mein Garagentor über das Internet mittels meines iPhones in Verbindung mit dem App Mydooropener zu öffnen.
Die 'Hardware' hab ich schon richtig zusammen gestöpselt nur ist mein Problem jetzt mehr die Software ;)
Ich bin erstmal darauf gestoßen, das ich meinem Ethernet Shield seine eigene Mac Adresse vom Sticker vergeben muss und nicht die Beispiel Mac :D
Alles bereit gestellt ins Internet gestöpselt, iPhone App meckert nicht mehr das es nichts finden kann, was nur am Port 80 lag, jedoch geht der Rest noch nicht :S

Ich hab jetzt auch schon ein kleines Test Programm für mein Ethernet Shield ausprobiert, was nur im internen Netz laufen soll und es passiert trotzdem nichts. Hier mal der Code dazu :
Code: [Select]

#include <SPI.h>
#include <Ethernet.h>

/* Mats-Vanselow.de

Lizenz (Deutsch): creative commons Namensnennung - Keine kommerzielle Nutzung - Weitergabe unter gleichen Bedingungen 3.0 Unported - http://creativecommons.org/licenses/by-nc-sa/3.0/deed.de
Bei Verwendung und Weitergabe des Quellcodes muss ein Verweis auf den Autor und die Webseite erfolgen. In Begleitdokumentationen ist ebenfalls in angemessener Weise dieser Verweis anzubringen.

License (English): creative commons Attribution-Noncommercial-Share Alike 3.0 Unported - http://creativecommons.org/licenses/by-nc-sa/3.0/
When using and distributing this source code a reference to the author and the web page must take place. In accompanying documents this reference must also be attached.

Code by Mats Vanselow - http://www.mats-vanselow.de

*/

byte mac[] = {0xBl, 0xAa, 0xbl, 0xii, 0xbl, 0xub };           // MAC Adresse des Arduino Boards
byte ip[] = {192, 168, 6, 123 };                              // IP Adresse des Arduino Boards
//byte gateway[] = { 192, 168, 6, XXX };               // Gateway (optional)
//byte subnet[] = { 255, 255, XXX, 0 };             // Subnet Maske (optional)
Server server = Server(80);                       // Port Einstellung (Standard 80)

void setup() {
 Ethernet.begin(mac, ip);//, gateway, subnet);   // Ethernet initialisieren
 server.begin();                                 // Auf Clients warten
}

void loop() {
 Client client = server.available();             // Prüfen, ob Client Seite aufruft
 if (client) {                                   // Seitenaufruf durch User
   server.print("HTTP/1.0 200 OK\r\nServer: arduino\r\nContent-Type: text/html\r\n\r\n");
   server.print("<HTML><HEAD><TITLE>");
   server.print("Arduino Board");
   server.print("</TITLE>");
   server.print("</HEAD><BODY>");
   server.print("<b>Hello World!</b>");
   server.print("</BODY></HTML>");
   delay(3000);                                    // Kurz warten, um Daten zu senden
   client.stop();                                // Verbindung mit dem Client trennen
 }
}


Meine Vermutung liegt jetzt darin, dass das Ethernet Shield nur in einem 192.168.0/1.XXX Subnetz funktionieren kann.
Stimmt das? Kann mir jemand sagen was ich falsch mache?
Wäre sehr freundlich :)
Will nicht schon aufgeben müssen.

MfG
mrlowalowa

squaremeter

#1
Jul 22, 2011, 08:40 am Last Edit: Jul 22, 2011, 09:19 am by squaremeter Reason: 1
Schau dich doch mal in deinem Router Konfigurationsprogramm nach dem Stichwort Portweiterleitung bzw. Dynamischer DNS um.
Das ganze sagt dem Router dann wohin es eine extern (Internet) eintreffende Verbindung intern (Hausnetzwerk) weiterleiten soll.
Für die Dynamische DNS( öffentliche IP adresse) gibt es verschiedene Kostenlose Anbieter(DynDNS.org, ...). Google hilft dir da sicher weiter.
Ob das ganze dann auch funktioniert und ob die DNS adresse zuverlässig weitergeleitet kannst du einfach testen indem du versuchst deinen PC über VNC damit fernzusteuern(vom Nachbar oder Freund aus der nicht in deinem Hausnetzwerk hängt). Wenn das funktioniert einfach die IP im Router auf das Ethernetshield umschreiben und im Iphone die DNS Adresse angeben.

Das ganze trifft natürlich nicht zu wenn du dein Iphone ausschließlich vor dem Haus verwenden willst wo es sich dann mit deinem Wlan Netzwerk verbindet. Dann ist es natürlich wieder ein Hausinterner Befehl und wird über 192.168.x.xxx adressiert.

viel Glück
LG m²

eok

ja, ohne gateway kannst du nur innerhalb des eigenen netzes arbeiten.
trage das gateway ein und schon sollte auch ein zugriff weiter z.b. ins internet möglich sein.
ob du dann aber auch vom internet aus auf die private adresse kommst, hängt von deiner routerkonfiguration ab.
da musst du ggf noch ein nat-mapping eintragen oder der firewall sagen dass die pakete aus dem internet für deinen arduino sind.
auch solltest du wissen ob du eine feste, offizielle hast, oder ob du eine dyndns-adresse brauchst.

wenn du mit dem alles nichts anfangen kannst, dann bitte erst einmal genauer einlesen in die thematik.
denn ohne das grobe wissen frustiert das alles nur weil es nicht funktioniert wie du willst.

...eok

mrlowalowa

Ja ok des mit der dyn dns hab ich hinbekommen. Zumindest teilweise. Wenn ich die im internen Netzwerk eingeb komm ich auf meinen Router und wenn ich die über GSM eingeb kommt nichts. Also über einen normalen Browser. Fernsteuerung muss ich erst noch probieren, mach ich aber heut Abend.

Noch ne Frage zu der Porterweiterung. Ich kann bei meinem Router einen UDP Port aufmachen und einen listen UDP und einen trap UDP. Welchen muss ich da jetz nehmen?
Und vorallem in der Pde von der Webseite muss ich ja Port 80 lassen, weil er nur über den was erkennt :S helft mir mal bitte weiter.
Hab hier leider nicht nur ne öde fritzbox Rum stehen sondern sehr sehr viel anderen Kram.
Danke schon mal

eok

hi mrlowalowa,

genau das meinte ich... natürlich kann ich dir nun das eine oder andere so sagen dass es klappt, aber kapiert hast du es dann leider dennoch nicht. das ist aber die voraussetzung, dass nicht nach dem kleinen schritt dann gleich wieder die nächsten fragen aufpoppen.

und du willst doch dabei was lernen.. oder?

oder anders gefragt...
willst du ein bild selber malen können, oder willst du mit "malen nach zahlen" einfach nur stur was nachmalen? ;-)

dann versuch mal zu verstehen wie das mit den ip's und dem router so funktioniert.
was eine NAT ist...
und vor allem den unterschied "tcp" und "udp"... dann erübrigt sich deine frage von ganz alleine und dir wird die lösung selbst kommen und du wirst merken, dass es eigentlich garnet sooo schwer ist.... denn computer und router sind wahrlich nicht intelligent.. und selbst die können das...  ;-)

...eok (ich weis, ich bin gemein) ;-)

Go Up