kostenloser Webspace werbefrei: lima-city


Hilfe - Arduino Ethernet Smart Home

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    dreamworkindustries

    Kostenloser Webspace von dreamworkindustries

    dreamworkindustries hat kostenlosen Webspace.

    Ich will für ein Schulprojekt ein Smart Home machen, wo man z.B. die Temperatur oder sowas auf einen Webserver auslesen kann.
    Alle Sachen auf Seiten des Webservers funktionieren schon und wenn ich was manuell in die Datenbank eintrage, wird das vom Webserver verarbeitet und dargestellt. Jetzt muss ich nurnoch das mit den Arduino zum laufen bringen, dass er die Daten an die MySQL Datenbank schickt.

    Ich habe jetzt dieses Script und habe das Teilweise aus einen Tutorial übernommen und eig. sollte das funktionieren. Jedoch wird bei mir mehrere Fehlermeldungen angezeigt.
    Ich hoffe ihr könnt mir helfen

    Arduino Quellcode:
    #include <Ethernet.h>
    #include <SPI.h>
    
    byte mac[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };  // MAC-ADRESSE eingeben!
    IPAddress ip(192,168,178,60);
    byte gateway[] = { 192, 168, 178, 1 };                // Gateway eingeben!
    byte subnet[]  = { 255, 255, 255, 0 };
    byte server[] = { 212,83,45,137 };                      // IP des Servers eingeben
    EthernetServer server(80);
    char host[] = "dreamworkindustries.tk";    // DOMAIN eingeben!
    char url[]  = "/arduino_push_data.php";    // Pfad zur PHP-Datei eingeben
    char key[] = "f";    // Kennwort aus PHP-Datei eingeben
    char c;
    
    int Sensor = 0;                    // LM35
    int PowerLED = 3;                  // Power LED
    float Temperatur = 0;              // Variable für Temperatur ;-)
    int temp = 0;                    // Analog-Wert
    
    void setup()
    {
      pinMode(PowerLED, OUTPUT);  
      Serial.begin(9600);            // für Debug-Ausgaben
      Serial.println("Programm gestartet...");
      digitalWrite(PowerLED, HIGH);
      Ethernet.begin(mac, ip, gateway, subnet);  
      delay(5000);                // warten, bis LAN gestartet
    }
    
    void loop()
    {
        digitalWrite(PowerLED, LOW);
        Sensor_lesen();
        Daten_senden();
        delay(900);
        digitalWrite(PowerLED, HIGH);
    
      if (client.available()) 
      {
        char c = client.read();
        Serial.print(c);
      }
      delay(899000);
        client.stop();
        client.flush();
    }
    
    void Sensor_lesen()
    {
      temp = analogRead(Sensor);                  // Analog-Wert auslesen
      Temperatur = (5.0 * temp * 100.0)/1024.0;   // Berechnung der Temperatur in °C
      Serial.print("Temperatur: ");
      Serial.println(Temperatur);
    }
    
    void Daten_senden()
    {
      if (client.connect())  // Verbindung zum Server aufbauen
      {
        Serial.print("Verbunden...sende Daten...");
        client.print("GET ");
        client.print(url);
        client.print("?TEMP=");
        client.print(Temperatur);
        client.print("&key=");
        client.print(key);
        client.println(" HTTP/1.1");
        client.print("Host: ");
        client.println(host);
        client.println();
        Serial.println("fertig!");
      }
      else
      {
        Serial.println(" ***** VERBINDUNGSAUFBAU NICHT MÖGLICH *****");
      }    
    }


    Fehlermeldungen:
    WebServer:36: error: conflicting declaration 'EthernetServer server'
    WebServer:35: error: 'server' has a previous declaration as 'byte server [4]'
    WebServer.ino: In function 'void loop()':
    WebServer:65: error: 'client' was not declared in this scope
    WebServer:71: error: 'client' was not declared in this scope
    WebServer.ino: In function 'void Daten_senden()':
    WebServer:85: error: 'client' was not declared in this scope


    Ich hoffe ihr könnt mir irgentwie dabei helfen... komme echt nicht weiter und verzweifle an den fehlermeldungen
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Also dort ist etwas verbogen:

    Fangen wir mit den einfachen Fehlern an:

    Du referenzierst eine Instanz der Klasse client ohne einen definiert zu haben, das kann nicht stimmen.

    Außerdem verwendest du zwei mal den namen server (einmal für ein bytearray und einmal für eine Instanz der Ethernet lib) das geht nicht.

    Welches Tutorial reproduzierst du denn ?

    Beitrag zuletzt geändert: 23.1.2014 20:42:42 von fatfox
  4. Autor dieses Themas

    dreamworkindustries

    Kostenloser Webspace von dreamworkindustries

    dreamworkindustries hat kostenlosen Webspace.

    Hej danke schonmal für deine Antwort :)
    Ich habe versucht aus diesen Tuts schlau zu werden

    1. http://fluuux.de/2012/09/arduino-mysql-temperatur-sensoren-uber-webserver-auslesen/
    2. http://jleopold.de/2011/03/16/arduino-daten-logger-mysql-php/

    Ich habe beide Quellcodes von den Seiten probiert und beide haben nicht funktioniert.
    Ich benutze einen Arduino Leonardo + Ethernet Shield

    Mittlerweise habe ich es so hinbekommen, dass keine fehlermeldungen mehr kommen, aber es regt sich auch nichts leider ...

    Hier der Quellcode meines jetztigen standes:

    #include <Ethernet.h>
    #include <SPI.h>
    
    byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x82, 0x14 };  // MAC-ADRESSE eingeben!
    byte ip[]  = { 192, 168, 178, 60 };                    // IP-Adresse eingeben!
    byte gateway[] = { 192, 168, 178, 1 };                // Gateway eingeben!
    byte subnet[]  = { 255, 255, 255, 0 };
    byte server[] = {212,83,45,137};                      // IP des Servers eingeben
    EthernetClient client;
    char host[] = "dreamworkindustries.tk";	// DOMAIN eingeben!
    char url[]  = "/arduino_push_data.php";	// Pfad zur PHP-Datei eingeben
    char key[] = "fabi";	// Kennwort aus arduino_push_data.php   -Datei eingeben
    char c;
    
    int wartezeit =9000;       // Wartezeit zwischen messungen, IMMER 1 sec weniger angeben (59 für 60 usw...)
    
    
    	        
    
    
    float TEMP;
    void setup()
    {
    
      Serial.begin(9600);			// für Debug-Ausgaben
      Serial.println("Programm gestartet...");
    
      Ethernet.begin(mac, ip, gateway, subnet);  
      delay(5000);				// warten, bis LAN gestartet
    }
    
    void loop()
    {
    
        Sensor_lesen();
        Daten_senden();
        delay(900);
    
    
      if (client.available()) 
      {
        char c = client.read();
        Serial.print(c);
      }
      delay(wartezeit);     // Upload alle 60 sec. immer 1 sec weniger eintragen!
        client.stop();
        client.flush();
    }
    
    void Sensor_lesen()
    {
      TEMP = 20; 
    }
    
    void Daten_senden()
    {
      if(client.connect(server, 80)>0)  // Verbindung zum Server aufbauen
      {
        Serial.print("Verbunden...sende Daten...");
        client.print("GET ");
        client.print(url);
       
       
        //ab hier meine sachen
        client.print("?TEMP");
        client.print(TEMP);
    
        client.print("&key=");
        client.print(key);
        client.println(" HTTP/1.1");
        client.print("Host: ");
        client.println(host);
        client.println();
        Serial.println("fertig!");
      }
      else
      {
        Serial.println(" ***** VERBINDUNGSAUFBAU NICHT MÖGLICH *****");
      }    
    }



    Vielleicht, ist der ja bisschen besser und leichter zu verbessern.
    Danke für deine Hilfe :)
  5. s**************3

    Keine Ahnung, ob es der einzige Fehler ist, aber falsch ist es:
    client.print("?TEMP");
    muss
    client.print("?TEMP=");

    sein.
    Am besten erst mal die verbindung selbst mit einer festen Zeile, wie z.B.
    client.println("dreamworkindustries.tk/Arduino_push_data.php?TEMP=21&KEY=fabi");

    testen.
    Dann nochmal kritisch schauen, wo print und wo println hinkommt, glaube da sind auch Fehler.

    OT: "TEMP" ist zwar ein schöner Name für die Temperatur, aber ich dachte erst das wäre eine temporäre Variable ;-)

    Beitrag zuletzt geändert: 24.1.2014 16:20:17 von strommanager2013
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!