Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Shelly 1 via JavaScript Ansteuern

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Shelly 1 via JavaScript Ansteuern

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 2 Kommentatoren 572 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • N Offline
    N Offline
    NeueKlasse
    schrieb am zuletzt editiert von
    #1

    Hallo Zusammen, ich möchte gerne meinen Shelly 1 (der als Fussbodenheizungsregler dient) per ioBroker ansteuern, leider sind die benoetigten Variablen nicht einfach im Shelly CoAP erreichbar..

    habe nun ueber den Shelly Technical Support herausbekommen das man dies ueber einen HTTP Post machen soll:

    Email vom Technical Service:

    Temperature automation values can be set only via POST requests.
    They don't support GET requests.

    You have to send a POST request to http://DEVICEIP/settings/ext_temperature/0 with FormData as a payload that contained the following values:

    • relay0_overtemp_threshold_tC: OVERTEMP_VALUE
    • relay0_undertemp_threshold_tC: UNDERTEMP_VALUE
    • relay0_overtemp_act: relay_on
    • relay0_undertemp_act: disabled

    Nun habe ich vor das ueber dieses Skript laufen zu lassen, leider Klappt das mit dem POST Request
    noch nicht so wie ich gerne moechte...

    Welchen Fehler habe ich hier noch drin?

    var idOvertemp = '0_userdata.0.ShellyFBH.RelayOvertemp';
    var idUndertemp = '0_userdata.0.ShellyFBH.RelayUndertemp';
    var idActOvertemp = '0_userdata.0.ShellyFBH.RelaySettedOvertemp';
    var idActUndertemp = '0_userdata.0.ShellyFBH.RelaySettedUndertemp';
    
    on({id: idOvertemp, change: "ne"}, async function (obj) {
    
    var nOvertemp = parseFloat(idOvertemp);
    var nUndertemp = parseFloat(idUndertemp);
    
    var request = require('request');
    request.post({
        url:     'http://192.168.178.29/settings/ext_temperature/0',
        form:    { relay0_overtemp_threshold_tC: nOvertemp }
    }, function(error, response, body) {
        if (error) log(error, 'error');
    });
    
    });
    

    Danke und Gruss

    paul53P 1 Antwort Letzte Antwort
    0
    • N NeueKlasse

      Hallo Zusammen, ich möchte gerne meinen Shelly 1 (der als Fussbodenheizungsregler dient) per ioBroker ansteuern, leider sind die benoetigten Variablen nicht einfach im Shelly CoAP erreichbar..

      habe nun ueber den Shelly Technical Support herausbekommen das man dies ueber einen HTTP Post machen soll:

      Email vom Technical Service:

      Temperature automation values can be set only via POST requests.
      They don't support GET requests.

      You have to send a POST request to http://DEVICEIP/settings/ext_temperature/0 with FormData as a payload that contained the following values:

      • relay0_overtemp_threshold_tC: OVERTEMP_VALUE
      • relay0_undertemp_threshold_tC: UNDERTEMP_VALUE
      • relay0_overtemp_act: relay_on
      • relay0_undertemp_act: disabled

      Nun habe ich vor das ueber dieses Skript laufen zu lassen, leider Klappt das mit dem POST Request
      noch nicht so wie ich gerne moechte...

      Welchen Fehler habe ich hier noch drin?

      var idOvertemp = '0_userdata.0.ShellyFBH.RelayOvertemp';
      var idUndertemp = '0_userdata.0.ShellyFBH.RelayUndertemp';
      var idActOvertemp = '0_userdata.0.ShellyFBH.RelaySettedOvertemp';
      var idActUndertemp = '0_userdata.0.ShellyFBH.RelaySettedUndertemp';
      
      on({id: idOvertemp, change: "ne"}, async function (obj) {
      
      var nOvertemp = parseFloat(idOvertemp);
      var nUndertemp = parseFloat(idUndertemp);
      
      var request = require('request');
      request.post({
          url:     'http://192.168.178.29/settings/ext_temperature/0',
          form:    { relay0_overtemp_threshold_tC: nOvertemp }
      }, function(error, response, body) {
          if (error) log(error, 'error');
      });
      
      });
      

      Danke und Gruss

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @neueklasse
      Zeilen 8,9:

         var nOvertemp = parseFloat(obj.state.val);
         var nUndertemp = parseFloat(getState(idUndertemp).val);
      

      Zeile 11 kann entfallen.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      N 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @neueklasse
        Zeilen 8,9:

           var nOvertemp = parseFloat(obj.state.val);
           var nUndertemp = parseFloat(getState(idUndertemp).val);
        

        Zeile 11 kann entfallen.

        N Offline
        N Offline
        NeueKlasse
        schrieb am zuletzt editiert von
        #3

        @paul53
        Danke fuer die Optimierung,

        im Protokoll:

        18:02:24.129	info	javascript.0 (235) script.js.User_Scripts.ShellyFBHControl: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
        18:02:29.405	info	javascript.0 (235) script.js.User_Scripts.ShellyFBHControl: getState(id=0_userdata.0.ShellyFBH.RelayUndertemp, timerId=undefined) => {"val":0,"ack":true,"ts":1680101118307,"q":32,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1680101118307}
        

        an den Werten der Shelly Page ändert sich leider noch nichts...
        Over Under Temp Relay ON OFF.jpg

        N 1 Antwort Letzte Antwort
        0
        • N NeueKlasse

          @paul53
          Danke fuer die Optimierung,

          im Protokoll:

          18:02:24.129	info	javascript.0 (235) script.js.User_Scripts.ShellyFBHControl: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
          18:02:29.405	info	javascript.0 (235) script.js.User_Scripts.ShellyFBHControl: getState(id=0_userdata.0.ShellyFBH.RelayUndertemp, timerId=undefined) => {"val":0,"ack":true,"ts":1680101118307,"q":32,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1680101118307}
          

          an den Werten der Shelly Page ändert sich leider noch nichts...
          Over Under Temp Relay ON OFF.jpg

          N Offline
          N Offline
          NeueKlasse
          schrieb am zuletzt editiert von NeueKlasse
          #4

          @neueklasse

          anbei sieht man die Ausgabe des Shellys wenn ich auf SAVE gehe, Addresse, Payload Daten...
          bisher hatte ich noch keinen erfolg..

          Address.jpg Payload.jpg

          auch nicht wenn beim Payload das vom Shelly Support geschriebene 'relay0' wegfaellt...

          N 1 Antwort Letzte Antwort
          0
          • N NeueKlasse

            @neueklasse

            anbei sieht man die Ausgabe des Shellys wenn ich auf SAVE gehe, Addresse, Payload Daten...
            bisher hatte ich noch keinen erfolg..

            Address.jpg Payload.jpg

            auch nicht wenn beim Payload das vom Shelly Support geschriebene 'relay0' wegfaellt...

            N Offline
            N Offline
            NeueKlasse
            schrieb am zuletzt editiert von NeueKlasse
            #5

            @neueklasse habe jetzt herausgefunden das das Skript soweit funktioniert! (via Insomnia funktioniert der Post request und die Temperaturen aendern sich..)

            Nun zum eigentlichen Problem:
            ich konnte noch nicht herausfinden wie ich die authentifizierung im Javascript durchfuehre, mir fehlt schlichtweg die Zeile in der ich passwort und username eintragen kann, wie hat das auszusehen?

            erledigt, Loesung: http://user:pw@LINK......

            N 1 Antwort Letzte Antwort
            0
            • N NeueKlasse

              @neueklasse habe jetzt herausgefunden das das Skript soweit funktioniert! (via Insomnia funktioniert der Post request und die Temperaturen aendern sich..)

              Nun zum eigentlichen Problem:
              ich konnte noch nicht herausfinden wie ich die authentifizierung im Javascript durchfuehre, mir fehlt schlichtweg die Zeile in der ich passwort und username eintragen kann, wie hat das auszusehen?

              erledigt, Loesung: http://user:pw@LINK......

              N Offline
              N Offline
              NeueKlasse
              schrieb am zuletzt editiert von NeueKlasse
              #6

              @neueklasse

              zu diesem Post, nun ist request.post veraltet und wurde durch httpPost ersetzt...

              das sieht dann im Script so aus:

              httpPost('http://admin:passwort@ip/settings/ext_temperature/0', 
              { 
                  "overtemp_threshold_tC": nOvertemp , 
                  "undertemp_threshold_tC": nUndertemp 
              }, 
              (error, response) => {
                  if (!error) {
                      console.log(response.statusCode);
                      console.log(response.data);
                      console.log(response.headers);
                  } else {
                      console.error(error);
                  }
              });
              

              leider klappt es mit der Übertragung nicht mehr, ich habe ein paar verschiedene Varianten getestet, ohne Erfolg..

              folgendes zeigt die Konsole:

              script.js.User_Scripts.ShellyFBHControl: httpPost(config={"method":"post","url":"http://ip/settings/ext_temperature/0","responseType":"text","responseEncoding":"utf8","timeout":2000,"auth":{"username":"admin","password":"passwort"},"headers":{"User-Agent":"Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0"},"data":{"overtemp_threshold_tC":22,"undertemp_threshold_tC":21}}, data=[object Object])
              

              vorher waren die Variablen unter form: , laut der Konsole ist es nun unter data:

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              335

              Online

              32.5k

              Benutzer

              81.7k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe