NEWS


  • Hallo, ich bin neu hier und habe eine Frage / Bitte..

    Ich würde gerne meine Saunasteuerung in iobroker integrieren. Die Steuerung ist per API ansprechbar. In Nodered hatte ich es auch schonmal geschafft per Get Befehl geschafft. Nun will ich aber auf iobroker umsteigen. Ich vermute es geht nur per Skript - aber ich komme damit nicht zurecht.

    Kann mir jemand helfen? Hier die Infos zur API https://github.com/horemansp/HUUM

    Vielen Dank!


  • @ckossendey Das wäre der erste Schritt :
    im Javascript Adapter unter zusätzlich NPM Module 'axios' eintragen

    username und passwort ins Script eintragen . Dann sollte schonmal ein JSON String zurück kommen

    const axios = require('axios');
    
    const url = 'https://api.huum.eu/action/home/status';
    
    
    async function getHuum () {
        const err = await axios
        .get(url, {
            auth: {
                username: 'foo',
                password: 'baz' 
            }
        })
        .then (function(response) {
        console.log(response.data);
        })
        .catch(function(error) {
        console.log('Error '+error);
        });
    }
    
    getHuum ();
    
    
                
    

  • @gargano

    Danke dir! Ich habe es ein wenig umgebaut und nun bekomme ich die Werte auch schon als Objekte angezeigt. Hier mein Code:

    '*/10 * * * *'
    "use strict"
    
    const axios = require('axios');
    
    const url = 'https://api.huum.eu/action/home/status';
    
    
    createState("huum.maxHeatingTime")
    createState("huum.statusCode")
    createState("huum.door")
    createState("huum.config")
    createState("huum.light")
    createState("huum.temperature")
    createState("huum.date")
    
    
    
    axios.get(url, { auth: {
            username: 'user',
            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("huum.maxHeatingTime", response.data.maxHeatingTime);
    setState("huum.statusCode", response.data.statusCode);
    setState("huum.door", response.data.door);
    setState("huum.config", response.data.config);
    setState("huum.light", response.data.light);
    setState("huum.temperature", response.data.temperature);
    setState("huum.date", response.headers.date);
    
    
        })
    
        .catch(function(error) {
        console.log('Error '+error);
        
    });
    
    
    

    ISt das grundsätzlich in Ordnung so? Danke


  • @ckossendey Damit die Funktion periodisch aufgefufen wird braucht es noch ein Schedule. Außerdem sollten Userdata unter '0_userdata.0' gespeichert werden und bei createState Rolle und Typ angeben.

    
    "use strict"
     
    const axios = require('axios');
     
    const url = 'https://api.huum.eu/action/home/status';
    
    const mySchedule = '*/10 * * * *';
     
    createState("huum.maxHeatingTime")
    createState("huum.statusCode")
    createState("huum.door")
    createState("huum.config")
    createState("huum.light")
    createState("huum.temperature")
    createState("huum.date")
     
     
    function getHuum () { 
    	axios.get(url, 
    		{ auth: {
    			username: 'user',
    			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("huum.maxHeatingTime", response.data.maxHeatingTime);
    			setState("huum.statusCode", response.data.statusCode);
    			setState("huum.door", response.data.door);
    			setState("huum.config", response.data.config);
    			setState("huum.light", response.data.light);
    			setState("huum.temperature", response.data.temperature);
    			setState("huum.date", response.headers.date);
    
    		})
    	 
    		.catch(function(error) {
    		console.log('Error '+error);
    		
    	});
    };
    
    schedule(mySchedule, function () { // wird alle 10 min. ausgelöst
         getHuum();
    });
     
    
    

  • @gargano Danke! ich hab das mal umgesetzt!

    Nun noch eine Frage zum Post Befehl, ich habe das ganze wie unten aufgesetzt - bekomme aber immer die Meldung: data: 'Please enter username and password'

    Kannst du dir das erklären?

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

    Den get Befehl habe ich wie folgt umgebaut:

    "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.huumstatusCode", 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: 'user',
                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);
    		
    	});
    };
    
         getHuum();
    
     
     
    
    

Suggested Topics

1.9k
Online

38.3k
Users

43.8k
Topics

611.7k
Posts