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.
    • 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
                                          • 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

                                            932
                                            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