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 @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
                                        • besterquester
                                          besterquester Developer @besterquester last edited by besterquester

                                          @besterquester
                                          New adapter in iobroker available.
                                          https://github.com/Chris-1965/ioBroker.huum-sauna

                                          Discussions and tests under
                                          https://forum.iobroker.net/topic/51593/test-adapter-iobroker-huum-sauna-v0-1-5-github-latest#

                                          regards Chris

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          906
                                          Online

                                          31.9k
                                          Users

                                          80.2k
                                          Topics

                                          1.3m
                                          Posts

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