Shelly HTTP request über Arduino

  • Hallo liebes Forum,

    für ein Uni Projekt werden verschiedene Shellys (momentan Shelly Plugs sowie Shelly1PM) über HTTP Requests angesteuert die Frage hat aber nichts mit den konkreten Modellen zu tun sondern ist von allgemeiner Natur weshalb ich mal ins Forum schreibe wo am meisten los ist.

    Die HTTP Requests sollen sowohl über einen Python Socket Server auf einem Raspberry PI als auch einen Arduino welcher ins Wlan eingebunden ist geschaltet werden.

    Über den Python socket Server funktioniert soweit alles, die Zeile Code lautet dort:

    Code
    r = requests.get("http://192.168.0.150/relay/0?turn=toggle", verify=False)

    Über den Arduino kriege ich es leider noch nicht hin einen funktionierenden HTTP request an den Shelly zu schicken.

    (Ich weiß dass das vielleicht eher eine Frage fürs Arduino Forum ist dort bin ich ebenfalls unterwegs aber vielleicht hat ja hier jemand schon einmal etwas ähnliches gemacht)

    Ich verwende die Wifi Bibliothek WIFININA.

    Der Relevante Code aus dem Arduino sieht so aus:

    Code
     if(client.connect("192.168.0.150",80)){
          Serial.println("connected");
          client.print("GET /relay/0?turn=toggle");
     }

    Er verbindet sich sogar mit dem Shelly allerdings schaltet das Relay nicht, ich vermute momentan dass es daran liegt dass ich als Port 80 eingegeben habe (ich muss einen Port angeben) dieser sollte laut einer Recherche allerdings auch richtig sein deshalb weiß ich momentan nicht so ganz weiter..

    Vielleicht hat ja jemand von euch eine Idee?


    Wenn ich schon dabei bin noch eine sehr einfach Frage:

    Gibt es eine Möglichkeit Logs von dem Shelly zu sehen?

    Also zu welchen Uhrzeiten das Relais geschaltet wurde, wie hoch die Stromaufnahme war etc.?

    Viele Grüße

    Alexander

    Einmal editiert, zuletzt von Loetauge (6. April 2022 um 18:06) aus folgendem Grund: Code in Codetag gebettet

  • client.print("GET /relay/0?turn=toggle");

    wieso hast du die IP vor dem "/relay...." weggelassen? Vll hab ich aber auch keine Ahnung.

  • Probier mal folgendes, oben im Code definierst du den Shelly,
    char shelly[] = "192.168.0.150";

    an der Stelle, wo du verbinden willst dann

    Code
    if (client.connect(shelly, 80)) {
        Serial.println("connected to Shelly");
        client.println("GET /relay/0?turn=toggle HTTP/1.1");
        client.println();
     }

    Ich kenne die Library nicht und hab auch Ewigkeiten kein C++ mehr angepackt, aber ich würde vermuten, dass im GET Request die HTTP-Protokollversion mitgegeben werden muss, also HTTP/1.1
    zudem ist der Datentyp ein anderer, in deinem Code dürfte es ein String sein, in der Library wird aber der Datentyp char genutzt.

    >100 Shellies, darunter so gut wie alles was der Hersteller produziert hat. ;)
    :!: ich beantworte grundsätzlich keine Fragen per persönlicher Nachricht:!:

  • vielen Dank hast mir den Tag gerettet klappt auf anhieb. :)

    Edit: wohl doch noch nicht zu 100% als ich das erste mal getestet habe lief alles ohne Probleme. Als ich danach ein paar Sachen im Code geändert habe geht es wieder nicht?


    Doppelt edit: Läuft doch alles hab vergessen dass ich toggle auf off geändert habe :DD

    Ich versuche das Problem mal weiter einzugrenzen Router neustart etc.

    Kann noch einer was dazu sagen wie es mit Logs oder ähnlichem vom Shelly aussieht?

    2 Mal editiert, zuletzt von Alexander96 (6. Oktober 2020 um 10:08)

  • Dieses Thema enthält 2 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.