Den Volkszähler mit dem Arduino "füttern"?

  • Hallo zusammen,
    ich habe vor, die Volkszählerdatenbank mit einem Arduino-Uno zu beschicken.
    Ich habe mein Script, welches auf dem Arduino läuft und mir diverse analoge Werte und digitale Schaltzustände erfasst, bereits dahingehend geändert, dass es einen Wert + die UUID an die middleware.php auf meinem lokalen Webserver schickt.
    Leider gehen keine Daten von da in die SQL-Datenbank. Das bedeutet, dass ich wohl nicht auf dem richtigen Weg bin.


    Weiß jemand von euch, wie man das mit dem Arduino hinbekommt?
    Wäre wirklich für jeden Tipp dankbar.



    Viele Grüße
    Chris

  • Zeig' mal Dein Script,
    insbesondere den HTTP-Aufruf.


    Gruß
    Michael

    Inverter: MPP Solar, PIP2424MS als USV
    Batterien: 24V 450Ah [4x 12V 225Ah, LKW Super Heavy Duty ("Ad", Tschechien)]
    PV: 960W, 4x 240W HedaSolar
    Logger: Sentron PAC3200 + Arduino 2560

  • Hallo Michael,
    danke für die schnelle Antwort.
    Hier der Code: (Übe ein bisschen Nachsicht, ich bin nicht DIE Leuchte im Programmieren, lerne aber jeden Tag dazu)


    Gruß
    Chris

    Einmal editiert, zuletzt von chrisroo ()

  • Wenn ich den Link in den Browser eintrage, dann kommt folgende Meldung zurück:

    Code
    {"version":"0.3","data":{"tuples":[],"uuid":"UUID-Sensor/Kanal","from":0,"to":0,"average":0,"rows":0}}


    Gruß
    Chris

  • Du vermischst in Deinem Source WebServer und WebClient-Sachen. :)


    Dein Arduino soll ja keinen Server spielen, den Du mit einem Browser aufrufen kannst.
    Sondern er fungiert als Client, der Deinen Volkszaehler-Webserver aufrufen soll.


    Also ungefähr so:
    EthernetClient vWebClient;
    String FVZ_SERVER = "Dein VZ-Webserver";
    String vURL = "GET /middleware.php/data/%%UUID%%.json?operation=add&value=%%VALUE%% HTTP/1.1";


    if (vWebClient.connect(FVZ_SERVER.c_str(), 80)){
    Serial.print("Connected,");
    vWebClient.println(vURL);
    vWebClient.println(String(F("Host: ")) + FVZ_SERVER);
    vWebClient.println(F("Connection: close"));
    vWebClient.println();
    }

    Inverter: MPP Solar, PIP2424MS als USV
    Batterien: 24V 450Ah [4x 12V 225Ah, LKW Super Heavy Duty ("Ad", Tschechien)]
    PV: 960W, 4x 240W HedaSolar
    Logger: Sentron PAC3200 + Arduino 2560

  • :danke::danke:
    :) Du hast Recht, dass war ein Skript, bei dem der Arduino den Webserver gespielt hat.
    Ich hab versucht, es "mal eben" so umzustricken, dass die Website der middleware aufgerufen wird. :)


    Dein Skript sieht schon ziemlich komplett aus, oder täusche ich mich?
    Bei mein VZ-Server muss ich wohl noch die IP des Webservers einfügen und die Variable VALUE mit dem analogen Wert füllen.
    Ist das richtig?

  • Und die UUID Deines Kanals - also z.B.:


    String vURL = "GET /middleware.php/data/cc2a5c20-0000-1111-a308-b74b511cc312.json?operation=add&value=1234 HTTP/1.1";


    So muss der fertige Aufruf aussehen.
    Natürlich musst Du per String-Operationen Deine aktuellen Values einfügen (oder getrennte vWebClient.print-Aufrufe machen).


    Aber im ersten Schritt mach erstmal nur den festen String mit festem Value (und richtiger UUID) ob da überhaupt Daten ankommen.


    (Ethernet.begin natürlich nicht vergessen - das muss bleiben)

    Inverter: MPP Solar, PIP2424MS als USV
    Batterien: 24V 450Ah [4x 12V 225Ah, LKW Super Heavy Duty ("Ad", Tschechien)]
    PV: 960W, 4x 240W HedaSolar
    Logger: Sentron PAC3200 + Arduino 2560

  • Danke Michael,
    das war echt super von Dir.
    Ich versuche mal den Code zusammenzufügen.
    Ich hoffe mal, dass ich das hin bekomme. :mrgreen:


    Viele Grüße
    Chris

  • :D:D:danke::danke:
    Hey Michael,
    es hat funktioniert.
    Wenn Du wüsstest, wie lange ich schon daran rumtüftel. :oops::oops::oops:


    Kannst Du mir noch verraten, wie ich jetzt bei value= die Variable mit meinem Wert einfüge?


    Viele Grüße
    Chris

  • Irgendwie schaufelt das Skript immer nur einmal einen Wert rüber, obwohl der Aufruf ja in der LOOP steht.
    Welchen Bock habe ich denn da wieder geschossen? :oops:


    Für value=546 hatte ich vorher value=VALUE eingesetzt. Das hat nicht funktioniert. :oops:
    Gruß
    Chris