Brauche Hilfe mein Webclient funktioniert nicht

vor 28 weeks 17 hours von com-cat

Ich Habe hier ein Arduino Ethernet (ähnlich UNO) disen möchte ich als Webclient betreiben. Er soll mir Werte in eine SQL Datenbank schreiben über php Die Seite liegt auf einem Xampp Server im Lokalen netz.

Ich werde nun nicht meine richtigen IP darstellen aber mal um es zu verdeutlichen

DSL Router (Gateway) 192.168.2.2
Xampp Rechner 192.168.2.254
Arduino 192.168.2.253
Passwort hat die Seite nicht

die Seite liegt auf dem rechner unter htdocs/strom/php/neuer_wert.php

mein Quellext:

#include <SPI.h>
#include <Ethernet.h> 
 
//ETHERNET-SETTINGS
byte mac[]     = { 0x5D, 0xA2, 0xFA, 0x2D, 0x76, 0x7C };    // MAC-Adresse des Arduino
byte ip[]      = { 192, 168, 2, 253 };                     // IP-Adresse des Arduino
byte gateway[] = { 192, 168, 2,  2 };                    // Gateway
byte subnet[]  = { 255, 255, 255, 0 };                    // SubNet
byte server[]  = { 192, 168, 2, 254 };                     // IP-Adresse des Servers
 
EthernetClient client;
 
 
char host[]    = "server-pc";                      // Domain
char url[]     = "/strom/PHP/wert_eintragen.php"; // Pfad zur PHP-Datei
char key[]     = "MEINPASSWORT123";                     // Kennwort aus PHP-Datei
char c;                                                     // Variable für Rückgabe des Servers
 
long Interval  = 60;
int zaehler_1 = ;                                // Verbrauchszähler 1
int zaehler_2 = ;                                // Verbrauchszähler 2
int laufzeit = millis();                              // Laufzeit des Systems in ms
int speicherzeit = ;                            //  
 
 
void setup(void)
{
 
 
attachInterrupt(, zaehlen1,RISING);              //Interrupt reagiert auf steigene Flanke am Pin2
attachInterrupt(1, zaehlen2,RISING);              //Interrupt reagiert auf steigene Flanke am Pin3
}
 
 
void loop(void)
{
   Serial.print(speicherzeit);
   Serial.print(laufzeit);
if (laufzeit > speicherzeit + 15000) // Jede 5 min
  {
   Serial.print("intervall");  
  speicherzeit = laufzeit;                         // setzt die Seicherzeit auf die Laufzeit um
  speichern();                                     // Speichert den verbrauch auf dem Server 
  }
 
 
}
 
 
//-------------------------------------- INTERRUPT Routine ----------------------------------------
void zaehlen1() //INTERRUPT Routine zum Zählen der Impulse an S0 <1>
 {
 zaehler_1++;
 }
 
void zaehlen2()//INTERRUPT Routine zum Zählen der Impulse an S0 <2>
 {
 zaehler_2++;
 } 
 //-------------------------------------- auf Server Speichern ------------------------------------
 
 void speichern()
 {
if (client.connect(server, 80))
  {
    Serial.print("Verbunden...sende Daten...");
    client.print("GET ");
    client.print(url);
    client.print("?Impulse=");
    client.print(zaehler_1);
    client.print("&IDENTID=1");
    client.println(" HTTP/1.1");
    client.print("Host: ");
    client.println(host);
    client.println();
    Serial.println("fertig!");
  }
   zaehler_1 = ;                                   // nach speichern wird der Zähler auf 0 gesetzt 
   zaehler_2 = ;                                   // nach speichern wird der Zähler auf 0 gesetzt
  }

Ähnliche Posts

5 Antworten auf “Brauche Hilfe mein Webclient funktioniert nicht ”


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
  1. uwe sagt:

    "mein Webclient funktioniert nicht" ist schon mal ein guter Ansatz aber bitte beschreib die Symptome Deines Problems genauer.

    attachInterrupt(, zaehlen1,RISING); fehlt Pinangabe
    Serial.print(speicherzeit); funktioniert ohne Serial.begin nicht
    zaehler_1 = ; // nach speichern wird der Zähler auf 0 gesetzt wirklich?

    Bitte einen lauffähigen Sketch einfügen.
    Bist Du sicher daß das PHP-File funktioniert?
    Grüße Uwe

    Login or register to post comments

  1. com-cat sagt:

    Sorry wurde wohl nicht mit kopiert :(

    Also der Fehler ist das er bis 15000 hoch läuft und dann abbricht im Monitor ist nur noch intervall zu sehen auch die beispiele mit dem Webclient aus dem Program klappen nicht
    :-(

    Im Serial monitor kommt nur das die verbindung nicht geklappt hat

    An Pingen via command und IP klappt

    Login or register to post comments

  1. com-cat sagt:

    So habe raus gefunden das man im SDKarten Slot KEINE karte haben sollte damit es mit den Beispielen klappt.

    Der Fehler liegt bei mir bei der Statischen IP vergabe
    sprich hier:

    das Klappt:
    if (Ethernet.begin(mac) == 0) {
    Serial.println("Fehlgeschlagen ! Bitte mit DHCP Starten!");
    for(;;);

    das nicht:
    Ethernet.begin(mac ,ip ,gateway);

    ________________________________________________________________________________________

    Wie bekomme ich noch eine übergabe bestätigung hin ??

    Login or register to post comments

  1. com-cat sagt:

    Hab es hin bekommen nur der untere Teil gefällt mir noch nicht
    ich würde gerne von der PHP seite in rückgabewert erhalten damit ich die Variable datenübertragung 1 und 2 wieder auf 0 setzen kann. somit spare ich mir auch die 5 sek wartezeit

    oder einer eine bessere idee??

     #include <SPI.h>
        #include <Ethernet.h>
     
        long speicher_interval  = 15000;                  // Intervall zum Speichern der Daten 10sek  
        int datenuebertragung1 = 0;                        
        int datenuebertragung2 = 0;
        int zaehler_1 = 0;                                // gezählte Impulse Verbrauchszähler 1 Pin 2
        int zaehler_2 = 0;                                // gezählte Impulse Verbrauchszähler 2 Pin 3
     
        int speicherzeit = 0;                            //
     
     
        byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
        IPAddress server(192,168,2,254);                                   //IP-Adresse des Servers
        EthernetClient client;                                             // Soll im Client Modus laufen 
     
        void setup() {
     
          attachInterrupt(0, zaehlen1,RISING);              //Interrupt reagiert auf steigene Flanke am Pin2
          attachInterrupt(1, zaehlen2,RISING);              //Interrupt reagiert auf steigene Flanke am Pin3
     
          Serial.begin(9600);                                               // Serielle Schnittstelle öffnen
           // start der Ethernet verbindung:
          if (Ethernet.begin(mac) == 0) {
            Serial.println("Fehlgeschlagen ! Bitte mit DHCP Starten!");
            for(;;);
          }
          delay(1000);                                                       // warten auf Initalisierung des Ethernet
     
          } 
     
     
     
          void loop()
          {
            if(millis()>speicherzeit + speicher_interval)
            {
            speichern();
            }
             //char c = client.read(); // 
            //Serial.print(c);        
            }
     
     
         //-------------------------------------- INTERRUPT Routine ----------------------------------------
        void zaehlen1() //INTERRUPT Routine zum Zählen der Impulse an S0 <1>
        {
        zaehler_1++;
        }
        void zaehlen2()//INTERRUPT Routine zum Zählen der Impulse an S0 <2>
        {
        zaehler_2++;
        } 
      //_----------------------------------------------
        void speichern()
         {
         Serial.println("Daten werden Ausgelesen");
         datenuebertragung1 = zaehler_1;
         zaehler_1 = 0;
         datenuebertragung1 = zaehler_2;
         zaehler_2 = 0;
     
           Serial.println("verbinden...");
              if (client.connect(server, 80)) {
     
     
                Serial.println("Verbunden...Sende Daten Zähler 1");
     
              client.print("GET /Strom/PHP/wert_eintragen.php?Impulse=");
              client.print(datenuebertragung1);
              client.println("&IdentID=1&Kommentar=-"); // Übertrag Zähler 1
              client.stop();
              }
              else {
             Serial.println("Achtung! Keine Verbindung zum Server");
              }
             delay(5000);
     
             if (client.connect(server, 80)) { 
              Serial.println("Verbunden...Sende Daten Zähler 2");
     
              client.print("GET /Strom/PHP/wert_eintragen.php?Impulse=");
              client.print(datenuebertragung2);
              client.println("&IdentID=2&Kommentar=-"); // Übertrag Zähler 1
              client.stop();
            }
     
              else {
            Serial.println("Achtung! Keine Verbindung zum Server");
          }
          delay(5000);
          }
    [code]

    Login or register to post comments

  1. uwe sagt:

    Du verbrauchst so viel RAM-Speicher.
    Du kannst die Texte mit F()in den Flash abspeichern: (ab IDE 1.0.1)
    zB statt: client.print("GET /Strom/PHP/wert_eintragen.php?Impulse=");
    client.print(F("GET /Strom/PHP/wert_eintragen.php?Impulse="));

    Grüße Uwe

    Login or register to post comments