Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Edimax WLAN Steckdose schalten

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Edimax WLAN Steckdose schalten

    This topic has been deleted. Only users with topic management privileges can see it.
    • uweklatt
      uweklatt last edited by

      Hallo,

      ich versuche gerade, meine Edimax SP-2101W über Javascript zu schalten.

      Im Prinzip muss man dazu eine Datei per HTTP-PUT senden.

      Ich habe ein PHP-Script, das bereits funktioniert:

      ! function do_post_request( $url, $query_string) { $params = array( 'http' => array( 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded\r\n" . "Content-Length: " . strlen($query_string) . "\r\n", 'content' => $query_string ) ); ! $context = stream_context_create( $params ); $contents = file_get_contents( $url, false, $context ); return $contents; } $url = 'http://user:passwort@192.168.x.y:10000/smartplug.cgi'; $request = '<smartplug id="edimax"><cmd id="setup"><device.system.power.state>ON</device.system.power.state></cmd></smartplug>'; $response = do_post_request($url, $request); !
      Die URL lautet:````
      http://user:passwort@192.168.x.y:10000/smartplug.cgi

      Gesendet wird zum Einschalten:
      

      <smartplug id="edimax"><cmd id="setup"><device.system.power.state>ON</device.system.power.state></cmd></smartplug>

      Ausschalten:
      

      <smartplug id="edimax"><cmd id="setup"><device.system.power.state>OFF</device.system.power.state></cmd></smartplug>

      
      Mein JS-Code:
      

      var request = require('request');
      request(
      { method: 'PUT',
      url: 'http://user:passwort@192.168.x.y:10000/smartplug.cgi',
      headers: "'content-type': 'application/x-www-form-urlencoded'",
      body: '<smartplug id="edimax"><cmd id="setup"><device.system.power.state>ON</device.system.power.state></cmd></smartplug>'
      },
      function (error, response, body)
      {
      console.log('error: '+ response.statusCode)
      console.log(body)
      }
      )

      
      Ich bekomme den Statuscode 200, aber die "Payload" scheint nicht korrekt anzukommen.
      
      Zumindest schaltet der Edimax im Ggensatz zur PHP-variante nicht um.
      
      Fehlt da eine passende Codierung?
      
      Tschau
      
      Uwe
      1 Reply Last reply Reply Quote 0
      • uweklatt
        uweklatt last edited by

        Hallo,

        ich habe es inzwischen selbst lösen können!

        Statt "PUT" muss "POST" als Methode gewählt werden…

        Also folgender Code funktioniert:

        var request = require('request');
          request(
            { method: 'POST',
              url: 'http://user:passwort@192.168.x.y:10000/smartplug.cgi',
              body: '<smartplug id="edimax"><cmd id="setup"><device.system.power.state>ON</device.system.power.state></cmd></smartplug>'
            },  
            function (error, response, body) 
            {
              console.log('error: '+ response.statusCode)
              console.log(body)
            }
          )
        
        

        Evtl. ist das allgemein hilfreich.

        Tschau

        Uwe

        1 Reply Last reply Reply Quote 0
        • O
          Orbitson last edited by

          Hi, bin absoluter Anfänger in Sachen Java, gibt es eventuell ein fertigen Script um die Aktuelle Leistung abzufragen?

          Mit freundlichen Grüßen

          1 Reply Last reply Reply Quote 0
          • uweklatt
            uweklatt last edited by

            Hallo,

            mit neuster Edimax Firmware funktioniert das oben Genannte leider nicht mehr!

            Ansonsten kann man aber auf gleicher Art auch die aktuelle Leistung abfragen.

            Infos dazu findest Du z.B. hier:

            https://sun-watch.net/index.php/eigenve … -protokoll

            Dazu habe ich leider kein fertiges Script.

            Tschau

            Uwe

            A 1 Reply Last reply Reply Quote 0
            • O
              Orbitson last edited by

              Bekomm da leider keine Daten. 😞

              1 Reply Last reply Reply Quote 0
              • O
                Orbitson last edited by

                Habe jetzt etwas für Node red gefunden was auch bei der aktuellen Version laufen soll. Nur bekomme ich das leider nicht zum laufen.

                https://github.com/johnwalicki/Node-RED … w.json#L21

                Kennst du dich da Eventuell aus?

                1 Reply Last reply Reply Quote 0
                • hg6806
                  hg6806 Most Active last edited by

                  Hat mittlerweile jemand eine Lösung wie man die EdiMax Steckdose schalten kann?

                  Am besten wäre es mit einem On/Off Widget zu schalten.

                  1 Reply Last reply Reply Quote 0
                  • A
                    amgxda @uweklatt last edited by

                    @uweklatt @Orbitson

                    Das Thema ist zwar etwas älter, aber vielleicht ist das ja für den ein oder anderen doch von Interesse, Verbrauchsdaten aus den Edimax 2101W Steckdosen auszulesen.

                    Der folgende Code-Schnipsel läuft hier sowohl unter 2101W V1, Firmware 2.08, als auch unter 2101W V2 3.0.0. Unter V1 nehmt ihr das Passwort aus der EdiLife App. Für die V2 müsst ihr die Anleitung hier befolgen, um das Passwort zu ermitteln: https://github.com/mwittig/edimax-smartplug/issues/17

                    Alle 3 Min. die Verbrauchswerte in einen Datenpunkt schreiben:

                    schedule("*/3 * * * *", function () {
                        exec('curl --digest -u admin:1234 -s POST "http://admin:1234@192.168.1.115:10000/smartplug.cgi" -d \'<SMARTPLUG id="edimax"><CMD id="get"><NOW_POWER><Device.System.Power.NowCurrent></Device.System.Power.NowCurrent><Device.System.Power.NowPower></Device.System.Power.NowPower></NOW_POWER></CMD></SMARTPLUG>\'',
                    		function (error, stdout, stderr) {
                                const regex = /.NowPower>(\d.{0,1}\d+).*/gm;
                                const str = stdout;
                                let m;
                                while ((m = regex.exec(str)) !== null) {
                                    // This is necessary to avoid infinite loops with zero-width matches
                                    if (m.index === regex.lastIndex) {
                                        regex.lastIndex++;
                                    }
                                    // The result can be accessed through the `m`-variable.
                                    m.forEach((match, groupIndex) => {
                                        //console.log(`Found match, group ${groupIndex}: ${match}`);
                                        setState('javascript.0.Strom.edimax_2_strom_xml', match, true);
                                    });
                                    
                                }
                                //log(stdout + " - " + stderr);
                               //setState('javascript.0.Strom.edimax_1_strom_xml', "0", true);
                            });
                    });
                    
                    maxkueng created this issue in mwittig/edimax-smartplug

                    open Edimax SP2101W V2 with firmware 3.00c works fine. See instructions on how to obtain the password. #17

                    C 1 Reply Last reply Reply Quote 0
                    • C
                      ck_coke @amgxda last edited by

                      @amgxda

                      Vielen Dank für das Skript. Läuft soweit gut bei mir. Habe bei meinen Edimax mit Firmware 3.0 das Passwort "heraus gelesen" und im Skript eingetragen. Daten kommen und werden in den Datenpunkt geschrieben. Probleme habe ich nur beim weiter verwenden des Datenpunktes mit folgendem Skript:

                      on({id: "javascript.0.Strom.edimax_2_strom_xml", change: "ne"}, function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        if ((obj.state ? obj.state.val : "") <= 32 && (obj.oldState ? obj.oldState.val : "") > 32) {
                          console.log('Neuer Wert ist kleiner');
                          console.log('ALT: ' + obj.oldState.val);
                          console.log('NEU: ' + obj.state.val);
                        } else {
                          console.log('Neuer Wert ist größer');
                          console.log('ALT: ' + obj.oldState.val);
                          console.log('NEU: ' + obj.state.val);    
                        }
                      });
                      

                      Ich denke es liegt daran das in der Schleife von Deinem Skript jeweils zwei "Ergebnisse" direkt hintereinander in den Datenpunkt geschrieben werden. Group 0 und Group 1. Der erste ist die komplette Rückmeldung aus dem Curl und die zweite nur das was von der RegEx ausgefiltert wurde (übrigens ohne Nachkommastellen). Da ich mich hierzu leider noch zu wenig auskenne wäre meine Frage ob Du das Skript vielleicht so umbauen könntest das nur das Ergebnis der RegEx also Group 1 (ob mit oder ohne Nachkommastellen ist mir persönlich egal) in den Datenpunkt geschrieben wird?
                      Dann würde mein Skript und damit eine Alarmierung wenn die Waschmaschine fertig ist funktionieren 😉

                      Vielen Dank vorab!!!

                      S 1 Reply Last reply Reply Quote 0
                      • S
                        slkschlumpf @ck_coke last edited by

                        Hallo zusammen,

                        wie könnte ich dann eine Steckdose Edimax mit Firmware 3.0 per Befehl ein und aus schalten ?

                        1 Reply Last reply Reply Quote 0
                        • hg6806
                          hg6806 Most Active last edited by

                          Zu dem (alten) Thread habe ich auch noch eine Frage.
                          Muss man den Datenpunkt erst anlegen?

                          javascript.0.Strom.edimax_2_strom_xml
                          

                          Wenn ja wie? Also boolean zumindest wird nichts geschrieben.

                          1 Reply Last reply Reply Quote 0
                          • hg6806
                            hg6806 Most Active last edited by hg6806

                            Hallo nochmal,

                            leider läuft das Ganze noch immer nicht.

                            Grundlegend erst einmal, wie kann man überhaupt die FW Version sehen?
                            Die App meldet immer nur, dass man die Version überprüfen kann und dass sie aktuell ist.

                            S 1 Reply Last reply Reply Quote 0
                            • S
                              schuellerf @hg6806 last edited by

                              @hg6806 Ich bin der Anleitung https://github.com/mwittig/edimax-smartplug/issues/17 gefolgt und der Befehl im telnet "nvc all" hat dann auch so infos

                              Run.FW.Version=3.00c
                              oder
                              Device.Configuration.HW.ModelName=SP2101W_V2
                              ... diese Werte sind von mir natürlich...

                              Das Passwort so herausfinden ist sehr mühsam - aber muss man ja nur einmal machen....
                              Das ganze per "curl" abholen ist da schon schlimmer. Ich verwende gerade den Adapter "linux-control" um den curl Befehl auf einem SSH server auszuführen - ich hoffe es gibt bald eine bessere Möglichkeit.
                              Ich habe aber weder einen EdiMax Adapter, noch einen einfachen HTTP adapter gefunden der dieses XML schicken und parsen könnte.

                              maxkueng created this issue in mwittig/edimax-smartplug

                              open Edimax SP2101W V2 with firmware 3.00c works fine. See instructions on how to obtain the password. #17

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              965
                              Online

                              31.8k
                              Users

                              80.0k
                              Topics

                              1.3m
                              Posts

                              7
                              13
                              3642
                              Loading More Posts
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes
                              Reply
                              • Reply as topic
                              Log in to reply
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              The ioBroker Community 2014-2023
                              logo