HTTP Call to a Shelly 1 PM Plus with authorization ends in Error message "Invalid argument 'headers': length should be less than 128!"

Hinweis zur Nutzung von Skripten (für Nutzer)

Die Verwendung von Skripten erfolgt ausdrücklich auf eigene Gefahr. Weder Shelly noch die jeweiligen Autoren oder Entwickler der Skripte übernehmen irgendeine Form der Haftung für mögliche Schäden, Fehlfunktionen, Datenverluste oder anderweitige Beeinträchtigungen, die durch die Nutzung dieser Skripte entstehen könnten. Bitte stellen Sie vor dem Einsatz sicher, dass Sie den Quellcode verstehen und sich der möglichen Auswirkungen bewusst sind. Die Skripte werden ohne Gewähr bereitgestellt und unterliegen keiner regelmäßigen Wartung oder offiziellen Unterstützung.


Hinweis für Entwickler

Wenn Sie eigene Skripte bereitstellen, achten Sie bitte darauf, eine klare Beschreibung, eventuelle Einschränkungen und Sicherheitsaspekte zu dokumentieren. Beachten Sie zudem, dass Nutzer Ihre Skripte grundsätzlich auf eigenes Risiko verwenden. Eine Haftung für Schäden ist ausgeschlossen, sofern diese nicht vorsätzlich oder grob fahrlässig verursacht wurden oder gesetzlich anderweitig geregelt ist.

VPN/Proxy erkannt

Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.

  • Hi,

    i have some issues when calling a Shelly 1 PM Plus from another shelly via HTTP Request:

    i want to switch the shelly off :

                let url = '{"method": "GET", ' +
                  ' "url":"http://admin:asdfasdfasdf@10.2.103.215/rpc/Switch.Set?id=0&on=false", ' +
                  ' "headers": {"Authorization": "Digest username=\\"admin\\", response=\\"6df8a5a2328b4a43eb5abedf0fasdfasdf47f876c85ecf1asdfasdfe9eb5ac33\\", qop=auth, algorithm=SHA-256"}' +
                  '}';
                  if(DEBUG_LIGHT_TOGGLE)
                    print("url = " + url);
                  Shelly.call( 'HTTP.Request',
                  url,
                  function callback(result, error_code, error_message, userdata)
    {
                      if(DEBUG_LIGHT_TOGGLE)
    {
                        print('ANFANG Regal callback off');
                        print(JSON.stringify(result));
                        print(error_code);
                        print(error_message);
                        print(userdata);
                        print(result.body);
    }

                      if(result.body !== undefined)
    {
                        let a = JSON.parse(result.body);
                        if(DEBUG_LIGHT_TOGGLE)
    {
                          print('r.isOn=' + JSON.stringify(a.ison));
                          print('r.brightness=' + JSON.stringify(a.brightness));
    }
    }
                      else
                        print('ERROR: result.body = UNDEFINED');
                      print('ENDE Regal callback turn off');
    },
                  null);

    but in the Logs i can see an error:

    url = {"method": "GET", "url":"http://admin:asdfasdfasdf@10.2.103.215/rpc/Switch.Set?id=0&on=false", "headers": {"Authorization": "Digest username=\"admin\", response=\"6df8aasdfasdfdf0f537eecf7b47f876c85ecf1asdfasdfasdf9eb5ac33\", qop=auth, algorithm=SHA-256"}}

    ANFANG Regal callback off

    null

    -103

    Invalid argument 'headers': length should be less than 128!

    null

    at script_1.js:465

    at api_rpc.js:8

    RPC cb error: type error

    the Shelly 1 PM Plus is configured with authorization via "Device -> Authorization -> auth password".

    if i remove the authorization i do not need to supply the authorization header, so i do not exceed this limit.

    is there a better way to do auth and change the state of the relais?

    thanks for every hint!

    best regards

    Alex