Ankündigung

Einklappen
Keine Ankündigung bisher.

MyStrom Switch und http-get

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    MyStrom Switch und http-get

    Hallo zusammen,
    bisher hatte ich für meine Waschmaschine eine WLAN Steckdose von Gosund (Tasmota) verwendet. Nachdem mir diese jedoch vor ein paar Tagen abgeraucht (eher komplett zu einem Kunstoffklumpen verschmolzen) ist, habe ich mir die Steckdose von MyStrom besorgt. Mit der Abfrage
    Code:
    http://<ip>/report
    über einen Browser bekomme ich wie erwartet einen json String zurück. Die gleiche Abfrage in Edomi mittels HTTP-GET bringt folgenden Fehler:
    Code:
    failed to open stream: HTTP request failed! HTTP/1.1 505 HTTP Version Not Supported[CR][LF]
    Hat jemand eine Idee was ich hier falsch mache, bzw. an was das liegt?

    Beste Grüße
    Alex

    #2
    Zitat von Knallex Beitrag anzeigen
    eher komplett zu einem Kunstoffklumpen verschmolzen
    Glück gehabt. Viele Steckdose sind nur bi 10A (2200W) belastbar. Da kann auch mal schnell die Bude abfackeln. Die mystrom sollte bis 16A (3680W) abkönnen und somit hoffentlich funktionieren.

    Zitat von Knallex Beitrag anzeigen
    Hat jemand eine Idee was ich hier falsch mache, bzw. an was das liegt?
    Das myStrom Device akzeptiert die HTTP Version 1.1 von EDOMI nicht. Vermutlich macht EDOMI ein file_get_contents(). Evtl. hast du noch ein Leerzeichen/-zeilen in der URL? Das könnte auch zu Problemen führen.

    Du kannst mal auf der Kommandozeile ein

    Code:
    curl http://<ip>/report
    versuchen. Ggf. geht das dann auch über einen Shell Befehl.

    Ansonsten sollte auch eine

    Sonoff S55TPF Feuchtraumsteckdose mit 16A

    Kommentar


      #3
      Ja, das wird mir eine Lehre sein!

      Leerzeichen habe ich keine in der url. Wenn ich von meinem Rechner im Terminal
      Code:
      curl http://<ip>/report
      eingebe, dann bekomme ich auch den erwarteten json String zurück: {"power":0,"Ws":0,"relay":false,"temperature":1 5.9 3}%

      Doofe Frage, wenn ich in Edomi das als Shell Befehl absetze, wo wird dann die Antwort empfangen? Bei HTTP-GET kann ja ein KO angegeben werden.

      Das myStrom Device akzeptiert die HTTP Version 1.1 von EDOMI nicht.
      Ich habe hierzu auch den MyStrom support angeschrieben und folgende Antwort erhalten:
      Our device supports HTTP/1.1. If request to the our device is made with other HTTP version than 1.1 then 505 code is returned.
      Das würde doch eher dafür sprechen, das Edomi http v0.9 oder 1.0 verwendet, oder?
      Zuletzt geändert von Knallex; 04.01.2021, 19:58.

      Kommentar


        #4
        Keiner eine Idee, wie ich das Ergebnis von
        Code:
        curl http://192.168.178.33/report
        in ein KO bekomme, so dass ich den json String weiter verarbeiten kann?

        Kommentar


          #5
          Du könntest es über die EDOMI Remote API probieren. Ist aber nicht trivial. Ein Shell Skript, welches zuerst den o.g. curl Befehl aufruft, du das Ergebnis speicherst und es wieder mit curl über die Remote API von EDOMI in ein iKO schreibst (http://edomi-ip/remote?login=remote&pass=remote&koid=###&kovalue=< ERGEBNIS DES ERSTEN CURL AUFRUFS>)

          Kommentar


            #6
            Oder einfach ne vernünftige Steckdose kaufen
            Zum Beispiel eine Sonoff S55TPF: AC 100-240V 50/60Hz 16A Max mit Tasmota. Keine Ahnung ob's die schon fertig geflasht gibt.

            Kommentar


              #7
              Danke für den Tip mit der Remote API, hab so etwas noch nie gemacht - muss ich mich jetzt erstmal reinfuchsen.

              Bzgl. der vernünftigen Steckdose, die von dir genannte Sonoff kann meine ich keine Leistungsmessung und ist daher für meine Zwecke nicht geeignet.

              Kommentar


                #8
                Du kannst natürlich auch einen LBS schreiben. Der macht dann den curl Befehl und gibt das Ergebnis plain auf einen Ausgang, den du dann mit einem JSON-LBS zerlegen kannst.

                Kommentar


                  #9
                  Habe mir jetzt mal diverse LBS's angeschaut und daraus einen eigenen gebastelt. Leider bekomme ich auch hier die gleiche Fehlermeldung aus meinem initialen Post.
                  Hier mal mein Code aus dem Exec Bereich. Was kann hier noch getan werden, das der request funktioniert, schließlich kommt ja im Browser und auf der Kommandozeile ein json-String zurück.
                  PHP-Code:
                  sql_connect();

                  if (
                  $E=logic_getInputs($id)) {
                  logging($id,"LBS started");
                  $url $E[2]['value']; // URL to get content from
                  if($result file_get_contents($url)) {
                  logging($id'$result'$result);
                  logic_setOutput($id1$result);
                  } else {
                  logging($id,"file_get_contents() failed",4);
                  }
                  logging($id,"LBS stopped");
                  }

                  sql_disconnect(); 

                  Kommentar


                    #10
                    Du sollst ja auch CURL nutzen, anstatt file_get_contents.

                    Kommentar


                      #11
                      Richtig - danke, jetzt tut es.

                      Kommentar


                        #12
                        Lese ich das richtig das hier einfach der Status abgefragt wird? oder kann man den Switch auch Ein-/Ausschalten ?

                        Kommentar

                        Lädt...
                        X