Shelly Plus 2 PM - im Skript Werte von Shelly H&T aus der Cloud auslesen

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.

  • Hallo 🙂 Leider bin ich noch Neuling und habe mit dem Thema schon länger zu kämpfen:

    Ich habe ein Shelly Plus 2 PM und einen Shelly H&T.

    Nun möchte ich im Shelly Script die aktuellen Daten von der Shelly H&T auslesen, da ich in Abhängigkeit von Temp. und Luftfeuchte die Ausgänge schalten will.

    Ich habe gefühlt schon alles möglichen Programmvarianten probiert, aber es hat nichts geklappt.
    Hätte jemand einen Code für mich bzw. kann mir helfen?

    Vielen Dank!!! 🙂

    If english is needed:

    Hi 🙂 Unfortunately I'm still a newbie and have been struggling with this issue for a while:

    I have a Shelly Plus 2 PM and a Shelly H&T.

    Now I want to read out the current data from the Shelly H&T in the Shelly script, as I want to switch the outputs depending on the temperature and humidity.

    I have tried every possible program variant, but nothing has worked.
    Does anyone have a code for me or can help me?

    Thank you very much!!! 🙂

  • Hallo, ich stand vor der gleichen Herausvorderung!

    Direkt aus dem H&T auslesen geht schon mal nicht, weil der nämlich meistens pennt.

    Wenn er nicht pennt, dann kann er allerdings Webhooks / Actions auslösen.

    Allerdings sind diese offensichtlich eingeschränkt, denn der Versuch Werte direkt an anderes shellies zu übergeben, scheitert an "Ungültige Aktion".

    http://[shellyIP]/rpc/Script.Eval?id=1&code='setTemperature(${ev.tC})'
    http://[shellyIP]/rpc/KVS.Set?key="eventTemperatureSalon"&value=${ev.tC}'

    werden also gnadenlos abgelehnt. WARUM EIGENTLICH? :cursing:

    Next Stop: Cloud!

    Also gut, dann also den Wert aus der Cloud auslesen. Grundsätzlich ist das hier dokumentiert:

    https://shelly-api-docs.shelly.cloud/cloud-control-api/communication

    Nur dummerweise falsch! :cursing:

    Denn anders als in der Seite beschrieben (Object temperature / humidity) funktioniert nur

     let url = 'https://[myServer]/device/status?&id=[myDeviceID]&auth_key=[myAuthKey]';
     Shelly.call('HTTP.GET', 
       {url: url},
       function (result, error_code, error_msg, userdata) {
         if (error_code != 0) {
           log('Error while getting value from the cloud: ' + error_msg); 
         } else {
           log(result.code);
           let oResponseBody = JSON.parse(result.body);
           log(oResponseBody.isok);
                  let oTemperature = oResponseBody.data.device_status['temperature:0'],
           let oHumidity = oResponseBody.data.device_status['humidity:0'];
           log('Temperature: ' + oTemperature.tC + ' Humidity: ' + oHumidity.rh);
         };      
       }
     );

    Ist übrigens auch mit POST möglich.

     let url = 'https://[myServer]/device/status';
     let body = JSON.stringify({id: [myDeviceID], auth_key: [myAuthKey]});
     Shelly.call('HTTP.POST', 
       {url: url, body: body},
       function (response) {
         let oResponseBody = JSON.parse(response.body);
         log(oResponseBody.isok);
              let oTemperature = oResponseBody.data.device_status['temperature:0'];
         let oHumidity = oResponseBody.data.device_status['humidity:0'];
         log('Temperature: ' + oTemperature.tC + ' Humidity: ' + oHumidity.rh);
        }
     );


    Vielleicht hilfts ja! Auf das euer Smarthome allzeit gut temperiert ist!

    3 Mal editiert, zuletzt von akreienbring (17. Juli 2024 um 10:49)