Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. HUUM Saunasteuerung

    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

    HUUM Saunasteuerung

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

      @ckossendey der Hersteller hatte mir diesen Aufruf empfohlen:

      curl --user username:password https://api.huum.eu/action/home/start -d targetTemperature=70 -v
       
      
      Gargano 1 Reply Last reply Reply Quote 0
      • Gargano
        Gargano @ckossendey last edited by Gargano

        @ckossendey Das ist das curl Kommando , funktioniert das denn ?
        Der Unterschied zu dem axios ist nur das eine, daß die Temperature beim Curl ohne Hochkomma ist
        Zeig mal den Log vrom Script
        Auch kann es sein, daß die Sauna kein JSON versteht. In dem Fall müßte dann data so aussehen (in Anlehnung an dem Curl Befehl) :

        let data = 'targetTemperature='+temperature;
        
        ckossendey 1 Reply Last reply Reply Quote 0
        • ckossendey
          ckossendey @Gargano last edited by

          @gargano

          cko@MacBook-Pro HUUM % node posthuum.js
          Error: Request failed with status code 401
              at createError (/Users/cko/Desktop/HUUM/node_modules/axios/lib/core/createError.js:16:15)
              at settle (/Users/cko/Desktop/HUUM/node_modules/axios/lib/core/settle.js:17:12)
              at IncomingMessage.handleStreamEnd (/Users/cko/Desktop/HUUM/node_modules/axios/lib/adapters/http.js:260:11)
              at IncomingMessage.emit (node:events:381:22)
              at endReadableNT (node:internal/streams/readable:1307:12)
              at processTicksAndRejections (node:internal/process/task_queues:81:21) {
            config: {
              url: 'https://api.huum.eu/action/home/start',
              method: 'post',
              data: '{"auth":{"username":"user","password":"pass"},"params":{"targetTemperature":"50"}}',
              headers: {
                Accept: 'application/json, text/plain, */*',
                'Content-Type': 'application/json;charset=utf-8',
                'User-Agent': 'axios/0.21.1',
                'Content-Length': 103
              },
              transformRequest: [ [Function: transformRequest] ],
              transformResponse: [ [Function: transformResponse] ],
              timeout: 0,
              adapter: [Function: httpAdapter],
              xsrfCookieName: 'XSRF-TOKEN',
              xsrfHeaderName: 'X-XSRF-TOKEN',
              maxContentLength: -1,
              maxBodyLength: -1,
              validateStatus: [Function: validateStatus]
            },
            request: <ref *1> ClientRequest {
              _events: [Object: null prototype] {
                abort: [Function (anonymous)],
                aborted: [Function (anonymous)],
                connect: [Function (anonymous)],
                error: [Function (anonymous)],
                socket: [Function (anonymous)],
                timeout: [Function (anonymous)],
                prefinish: [Function: requestOnPrefinish]
              },
              _eventsCount: 7,
              _maxListeners: undefined,
              outputData: [],
              outputSize: 0,
              writable: true,
              destroyed: false,
              _last: true,
              chunkedEncoding: false,
              shouldKeepAlive: false,
              _defaultKeepAlive: true,
              useChunkedEncodingByDefault: true,
              sendDate: false,
              _removedConnection: false,
              _removedContLen: false,
              _removedTE: false,
              _contentLength: null,
              _hasBody: true,
              _trailer: '',
              finished: true,
              _headerSent: true,
              _closed: false,
              socket: TLSSocket {
                _tlsOptions: [Object],
                _secureEstablished: true,
                _securePending: false,
                _newSessionPending: false,
                _controlReleased: true,
                secureConnecting: false,
                _SNICallback: null,
                servername: 'api.huum.eu',
                alpnProtocol: false,
                authorized: true,
                authorizationError: null,
                encrypted: true,
                _events: [Object: null prototype],
                _eventsCount: 10,
                connecting: false,
                _hadError: false,
                _parent: null,
                _host: 'api.huum.eu',
                _readableState: [ReadableState],
                _maxListeners: undefined,
                _writableState: [WritableState],
                allowHalfOpen: false,
                _sockname: null,
                _pendingData: null,
                _pendingEncoding: '',
                server: undefined,
                _server: null,
                ssl: [TLSWrap],
                _requestCert: true,
                _rejectUnauthorized: true,
                parser: null,
                _httpMessage: [Circular *1],
                [Symbol(res)]: [TLSWrap],
                [Symbol(verified)]: true,
                [Symbol(pendingSession)]: null,
                [Symbol(async_id_symbol)]: 3,
                [Symbol(kHandle)]: [TLSWrap],
                [Symbol(kSetNoDelay)]: false,
                [Symbol(lastWriteQueueSize)]: 0,
                [Symbol(timeout)]: null,
                [Symbol(kBuffer)]: null,
                [Symbol(kBufferCb)]: null,
                [Symbol(kBufferGen)]: null,
                [Symbol(kCapture)]: false,
                [Symbol(kBytesRead)]: 0,
                [Symbol(kBytesWritten)]: 0,
                [Symbol(connect-options)]: [Object],
                [Symbol(RequestTimeout)]: undefined
              },
              _header: 'POST /action/home/start HTTP/1.1\r\n' +
                'Accept: application/json, text/plain, */*\r\n' +
                'Content-Type: application/json;charset=utf-8\r\n' +
                'User-Agent: axios/0.21.1\r\n' +
                'Content-Length: 103\r\n' +
                'Host: api.huum.eu\r\n' +
                'Connection: close\r\n' +
                '\r\n',
              _keepAliveTimeout: 0,
              _onPendingData: {},
              agent: Agent {
                _events: [Object: null prototype],
                _eventsCount: 2,
                _maxListeners: undefined,
                defaultPort: 443,
                protocol: 'https:',
                options: [Object],
                requests: {},
                sockets: [Object],
                freeSockets: {},
                keepAliveMsecs: 1000,
                keepAlive: false,
                maxSockets: Infinity,
                maxFreeSockets: 256,
                scheduling: 'lifo',
                maxTotalSockets: Infinity,
                totalSocketCount: 1,
                maxCachedSessions: 100,
                _sessionCache: [Object],
                [Symbol(kCapture)]: false
              },
              socketPath: undefined,
              method: 'POST',
              maxHeaderSize: undefined,
              insecureHTTPParser: undefined,
              path: '/action/home/start',
              _ended: true,
              res: IncomingMessage {
                _readableState: [ReadableState],
                _events: [Object: null prototype],
                _eventsCount: 3,
                _maxListeners: undefined,
                socket: [TLSSocket],
                httpVersionMajor: 1,
                httpVersionMinor: 1,
                httpVersion: '1.1',
                complete: true,
                rawHeaders: [Array],
                rawTrailers: [],
                aborted: false,
                upgrade: false,
                url: '',
                method: null,
                statusCode: 401,
                statusMessage: 'Unauthorized',
                client: [TLSSocket],
                _consuming: false,
                _dumped: false,
                req: [Circular *1],
                responseUrl: 'https://api.huum.eu/action/home/start',
                redirects: [],
                [Symbol(kCapture)]: false,
                [Symbol(kHeaders)]: [Object],
                [Symbol(kHeadersCount)]: 16,
                [Symbol(kTrailers)]: null,
                [Symbol(kTrailersCount)]: 0,
                [Symbol(RequestTimeout)]: undefined
              },
              aborted: false,
              timeoutCb: null,
              upgradeOrConnect: false,
              parser: null,
              maxHeadersCount: null,
              reusedSocket: false,
              host: 'api.huum.eu',
              protocol: 'https:',
              _redirectable: Writable {
                _writableState: [WritableState],
                _events: [Object: null prototype],
                _eventsCount: 2,
                _maxListeners: undefined,
                _options: [Object],
                _ended: true,
                _ending: true,
                _redirectCount: 0,
                _redirects: [],
                _requestBodyLength: 103,
                _requestBodyBuffers: [],
                _onNativeResponse: [Function (anonymous)],
                _currentRequest: [Circular *1],
                _currentUrl: 'https://api.huum.eu/action/home/start',
                [Symbol(kCapture)]: false
              },
              [Symbol(kCapture)]: false,
              [Symbol(kNeedDrain)]: false,
              [Symbol(corked)]: 0,
              [Symbol(kOutHeaders)]: [Object: null prototype] {
                accept: [Array],
                'content-type': [Array],
                'user-agent': [Array],
                'content-length': [Array],
                host: [Array]
              }
            },
            response: {
              status: 401,
              statusText: 'Unauthorized',
              headers: {
                server: 'nginx',
                date: 'Mon, 12 Apr 2021 12:54:40 GMT',
                'content-type': 'text/html; charset=UTF-8',
                'transfer-encoding': 'chunked',
                connection: 'close',
                'x-powered-by': 'PHP/7.4.15',
                'access-control-allow-origin': '*',
                'www-authenticate': 'Basic realm="HUUM api"'
              },
              config: {
                url: 'https://api.huum.eu/action/home/start',
                method: 'post',
                data: '{"auth":{"username":"user","password":"pass"},"params":{"targetTemperature":"50"}}',
                headers: [Object],
                transformRequest: [Array],
                transformResponse: [Array],
                timeout: 0,
                adapter: [Function: httpAdapter],
                xsrfCookieName: 'XSRF-TOKEN',
                xsrfHeaderName: 'X-XSRF-TOKEN',
                maxContentLength: -1,
                maxBodyLength: -1,
                validateStatus: [Function: validateStatus]
              },
              request: <ref *1> ClientRequest {
                _events: [Object: null prototype],
                _eventsCount: 7,
                _maxListeners: undefined,
                outputData: [],
                outputSize: 0,
                writable: true,
                destroyed: false,
                _last: true,
                chunkedEncoding: false,
                shouldKeepAlive: false,
                _defaultKeepAlive: true,
                useChunkedEncodingByDefault: true,
                sendDate: false,
                _removedConnection: false,
                _removedContLen: false,
                _removedTE: false,
                _contentLength: null,
                _hasBody: true,
                _trailer: '',
                finished: true,
                _headerSent: true,
                _closed: false,
                socket: [TLSSocket],
                _header: 'POST /action/home/start HTTP/1.1\r\n' +
                  'Accept: application/json, text/plain, */*\r\n' +
                  'Content-Type: application/json;charset=utf-8\r\n' +
                  'User-Agent: axios/0.21.1\r\n' +
                  'Content-Length: 103\r\n' +
                  'Host: api.huum.eu\r\n' +
                  'Connection: close\r\n' +
                  '\r\n',
                _keepAliveTimeout: 0,
                _onPendingData: {},
                agent: [Agent],
                socketPath: undefined,
                method: 'POST',
                maxHeaderSize: undefined,
                insecureHTTPParser: undefined,
                path: '/action/home/start',
                _ended: true,
                res: [IncomingMessage],
                aborted: false,
                timeoutCb: null,
                upgradeOrConnect: false,
                parser: null,
                maxHeadersCount: null,
                reusedSocket: false,
                host: 'api.huum.eu',
                protocol: 'https:',
                _redirectable: [Writable],
                [Symbol(kCapture)]: false,
                [Symbol(kNeedDrain)]: false,
                [Symbol(corked)]: 0,
                [Symbol(kOutHeaders)]: [Object: null prototype]
              },
              data: 'Please enter username and password'
            },
            isAxiosError: true,
            toJSON: [Function: toJSON]
          }
          cko@MacBook-Pro HUUM % 
          
          1 Reply Last reply Reply Quote 0
          • Gargano
            Gargano last edited by

            @ckossendey sagte in HUUM Saunasteuerung:

            statusCode: 401,
            statusMessage: 'Unauthorized',

            stimmt denn Dein Passwort und Username ?

            ckossendey 1 Reply Last reply Reply Quote 0
            • ckossendey
              ckossendey @Gargano last edited by

              @gargano

              ja, die stimmen mit dem curl befehl im terminal klappt es auch mit den gleichen zugangsdaten. Kann man auch per javascript den curl request machen?

              Danke!

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

                @ckossendey
                Das ist jetzt die 1 zu1 Übersetzung des curl Befehls

                
                "use strict"
                
                let temperature
                temperature = 50;
                
                let data = 'targetTemperature='+ temperature;
                
                const axios = require('axios');
                const urlstart = "https://api.huum.eu/action/home/start";
                
                axios.post(urlstart,data, 
                    {auth:        {username: 'user',  password: 'pass' }     
                    })
                  .then(function (response) {
                    console.log(response.data);
                  })
                  .catch(function (error) {
                    console.log(error);
                  });
                
                 
                
                 
                
                
                ckossendey K 2 Replies Last reply Reply Quote 0
                • ckossendey
                  ckossendey @Gargano last edited by

                  @gargano

                  so klappt es!!

                  DANKE

                  1 Reply Last reply Reply Quote 0
                  • B
                    bye08 last edited by

                    @ckossendey
                    Hi, ich habe auch die Huum Saunasteuerung könntest du mal bitte das ganze Script Posten? Und eventuell ein kleinwenig beschreiben, wie und wo ich das Einbinden muss.
                    Gruß
                    Bye08

                    1 Reply Last reply Reply Quote 0
                    • K
                      kukoratsch @Gargano last edited by

                      @gargano sagte in HUUM Saunasteuerung:

                      @ckossendey
                      Das ist jetzt die 1 zu1 Übersetzung des curl Befehls

                      
                      "use strict"
                      
                      let temperature
                      temperature = 50;
                      
                      let data = 'targetTemperature='+ temperature;
                      
                      const axios = require('axios');
                      const urlstart = "https://api.huum.eu/action/home/start";
                      
                      axios.post(urlstart,data, 
                          {auth:        {username: 'user',  password: 'pass' }     
                          })
                        .then(function (response) {
                          console.log(response.data);
                        })
                        .catch(function (error) {
                          console.log(error);
                        });
                      
                       
                      
                       
                      
                      

                      Hallo an alle. Ich biete um Hilfe
                      Ich habe auch die Huum Saunasteuerung.
                      curl Befehls von Gargano, funktioniert bei mir auch, danke dafür.
                      wie kann ich denn eine Variable Datenpunkt Temperatur in curl Befehls schreiben lassen statt feste Zahl temperature = 50
                      damit ich über Vis Temperatur angeben kann.

                      1 Reply Last reply Reply Quote 0
                      • K
                        kukoratsch last edited by

                        Ich habe Versucht mit
                        let temperature
                        temperature = '0_userdata.0.huum.TempSauna';
                        bekomme aber Fehlermeldung

                        javascript.0 (9551) script.js.common.Sauna.Sauna_Start_plus_Temperatur_test: {'message':'Request failed with status code 400','name':'Error','stack':'Error: Request failed with status code 400\n at createError (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/createError.js:16:15)\n at settle (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/settle.js:17:12)\n at IncomingMessage.handleStreamEnd (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/adapters/http.js:269:11)\n at IncomingMessage.emit (events.js:412:35)\n at IncomingMessage.emit (domain.js:470:12)\n at endReadableNT (internal/streams/readable.js:1317:12)\n at processTicksAndRejections (internal/process/task_queues.js:82:21)','config':{'url':'https://api.huum.eu/action/home/start','method':'post','data':'targetTemperature=0_userdata.0.huum.TempSauna','headers':{'Accept':'application/json, text/plain, */*','Content-Type':'application/x-www-form-urlencoded','User-Agent':'axios/0.21.4','Content-Length':45},'auth':{'username':UN','password':'PW'},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1,'transitional':{'silentJSONParsing':true,'forcedJSONParsing':true,'clarifyTimeoutError':false}}}
                        
                        Gargano 1 Reply Last reply Reply Quote 0
                        • Gargano
                          Gargano @kukoratsch last edited by

                          @kukoratsch temperature=getState('0_userdata.0.huum.TempSauna').val

                          K 1 Reply Last reply Reply Quote 1
                          • K
                            kukoratsch @Gargano last edited by

                            @gargano
                            danke jetzt funktioniert es englisch

                            K 1 Reply Last reply Reply Quote 0
                            • K
                              kukoratsch @kukoratsch last edited by kukoratsch

                              @Gargano Was muss ich noch verändern das bei aktualisierte Temperatur das curl Befehls noch ein Mal verschickt wird ohne Taster Heizung an zu drücken. Danke.

                              function script1() {
                              
                              "use strict"
                              
                              let temperature
                              temperature=getState('0_userdata.0.huum.TempSauna').val
                              
                              let data = 'targetTemperature='+ temperature; 
                              const axios = require('axios');
                              const urlstart = "https://api.huum.eu/action/home/start";
                               
                              axios.post(urlstart,data, 
                                  {auth:        {username: 'username',  password: 'password'}     
                                  })
                                .then(function (response) {
                                  console.log(response.data);
                                })
                                .catch(function (error) {
                                  console.log(error);
                                });
                                }   
                              on({id: '0_userdata.0.huum.HeizungAn', change: "ne"}, script1); // Triggert auf Wert true
                              
                              Gargano 1 Reply Last reply Reply Quote 0
                              • Gargano
                                Gargano @kukoratsch last edited by Gargano

                                @kukoratsch sagte in HUUM Saunasteuerung:

                                Was muss ich noch verändern das bei aktualisierte Temperatur das curl Befehls noch ein Mal verschickt wird ohne Taster Heizung an zu drücken.

                                Das gleiche wie bei dem Event Taster :

                                on({id:['0_userdata.0.huum.HeizungAn','0_userdata.0.huum.TempSauna'], change: "ne"}, script1); // Triggert auf Veränderung
                                
                                
                                K 1 Reply Last reply Reply Quote 1
                                • K
                                  kukoratsch @Gargano last edited by

                                  @gargano so klappt es!!
                                  Dankeschön

                                  kmidt 1 Reply Last reply Reply Quote 0
                                  • kmidt
                                    kmidt @kukoratsch last edited by

                                    @kukoratsch hallo. Ich habe ebenfalls eine huum Steuerung. Wo und wie kann man den Adapter einbinden in IOB ?

                                    Danke schön mL im vorraus

                                    K 1 Reply Last reply Reply Quote 0
                                    • K
                                      kukoratsch @kmidt last edited by kukoratsch

                                      @kmidt
                                      als erstes im Javascript Adapter unter zusätzlich NPM Module 'axios' eintragen
                                      Mit dem Script erstellst du Datenpunkte und fragst die ab.
                                      username und passwort ins Script eintragen

                                      
                                      
                                      "use strict"
                                      
                                      const axios = require('axios');
                                      
                                      const url = 'https://api.huum.eu/action/home/status';
                                      
                                      const mySchedule = '*/5 * * * *';
                                      
                                      createState("0_userdata.0.huum.maxHeatingTime", false)
                                      createState("0_userdata.0.huum.statusCode", false)
                                      createState("0_userdata.0.huum.door", false)
                                      createState("0_userdata.0.huum.config", false)
                                      createState("0_userdata.0.huum.light", false)
                                      createState("0_userdata.0.huum.temperature", false)
                                      createState("0_userdata.0.huum.date", false) 
                                      
                                      function getHuum () { 
                                      
                                         axios.get(url, 
                                         	{ auth: {
                                                 username: 'Name',
                                                 password: 'Pass' 
                                         		}
                                         	})
                                         	.then (function(response) {
                                         		   console.log(response.data);
                                      
                                         		// console.log(response.data.statusCode);
                                         		// console.log(response.data.config);
                                         		// console.log(response.data.light);
                                         		// console.log(response.data.paymentEndDate);
                                         		// console.log(response.data.temperature);
                                         		 
                                         		setState("0_userdata.0.huum.maxHeatingTime", response.data.maxHeatingTime);
                                         		setState("0_userdata.0.huum.statusCode", response.data.statusCode);
                                         		setState("0_userdata.0.huum.door", response.data.door);
                                         		setState("0_userdata.0.huum.config", response.data.config);
                                         		setState("0_userdata.0.huum.light", response.data.light);
                                         		setState("0_userdata.0.huum.temperature", response.data.temperature);
                                         		setState("0_userdata.0.huum.date", response.headers.date)
                                         	})
                                      
                                         	.catch(function(error) {
                                      
                                         	console.log('Error '+error);
                                         	
                                         });
                                      };
                                      
                                      schedule(mySchedule, function () { // wird alle 5 min. ausgelöst
                                          getHuum();
                                      
                                      });
                                      
                                      

                                      mit dem zweiten Script kannst du Temperatur einstellen

                                      function script1() {
                                      
                                      "use strict"
                                      
                                      let temperature
                                      temperature=getState('0_userdata.0.huum.TempSauna').val
                                      
                                      let data = 'targetTemperature='+ temperature; 
                                      const axios = require('axios');
                                      const urlstart = "https://api.huum.eu/action/home/start";
                                       
                                      axios.post(urlstart,data, 
                                          {auth:        {username: 'name',  password: 'Pass'}     
                                          })
                                        .then(function (response) {
                                          console.log(response.data);
                                        })
                                        .catch(function (error) {
                                          console.log(error);
                                        });
                                        }   
                                      
                                      on({id:['0_userdata.0.huum.HeizungAn','0_userdata.0.huum.TempSauna'], change: "ne"}, script1); // Triggert auf Veränderung
                                      
                                      

                                      noch zwei Datenpunkte erstellen
                                      0_userdata.0.huum.HeizungAn und 0_userdata.0.huum.TempSauna

                                      besterquester 1 Reply Last reply Reply Quote 0
                                      • besterquester
                                        besterquester Developer @kukoratsch last edited by

                                        @kukoratsch : Ist es auch möglich den Dampf zu regeln falls er angeschlossen ist ?
                                        lg Chris

                                        K 1 Reply Last reply Reply Quote 0
                                        • K
                                          kukoratsch @besterquester last edited by

                                          @besterquester
                                          Hier die Infos zur API
                                          https://github.com/horemansp/HUUM

                                          besterquester 1 Reply Last reply Reply Quote 0
                                          • besterquester
                                            besterquester Developer @kukoratsch last edited by

                                            @kukoratsch Danke dir für den Link. Den hatte ich schon. Aus dieser Beschreibung ist leider nicht ersichtlich ob die Feuchtigkeit humidity geändert werden kann wie die Temperatur.

                                            lG Chris

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            795
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            28
                                            2712
                                            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