Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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
    23
    1
    1.3k

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

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

Shelly 1 via JavaScript Ansteuern

Scheduled Pinned Locked Moved JavaScript
6 Posts 2 Posters 572 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    NeueKlasse
    wrote on last edited by
    #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 Reply Last reply
    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
      wrote on last edited by
      #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 Reply Last reply
      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
        wrote on last edited by
        #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 Reply Last reply
        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
          wrote on last edited by 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 Reply Last reply
          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
            wrote on last edited by 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 Reply Last reply
            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
              wrote on last edited by 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 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              674

              Online

              32.5k

              Users

              81.7k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Home
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe