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

      ohne den Parameter "?targetTemperature=80" bzw. die url "api.huum.eu/action/home/start?targetTemperature=80"

      klappt es nicht - kann die übergabe der Temperatur als "Parameter" funktionieren?

      Danke

      ckossendey 1 Reply Last reply Reply Quote 0
      • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            451
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

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