Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. [Frage] Samsung Klimaanlage Adapter

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    5
    1
    150

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    176

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    875

[Frage] Samsung Klimaanlage Adapter

Scheduled Pinned Locked Moved ioBroker Allgemein
36 Posts 17 Posters 8.1k Views 12 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    stoepselinho
    wrote on last edited by
    #24

    wo bekommt man denn den Token her?

    B 1 Reply Last reply
    0
    • S stoepselinho

      wo bekommt man denn den Token her?

      B Offline
      B Offline
      bishop
      wrote on last edited by
      #25

      @stoepselinho

      Hier Installation Punkt 4

      1 Reply Last reply
      0
      • S Offline
        S Offline
        stoepselinho
        wrote on last edited by
        #26

        aber wie genau macht man das da?
        ich sehe unter my device die Klimaanlage. ist das dann die Network ID?

        und was genau muss man in die config.json schreiben?

        B 1 Reply Last reply
        0
        • S stoepselinho

          aber wie genau macht man das da?
          ich sehe unter my device die Klimaanlage. ist das dann die Network ID?

          und was genau muss man in die config.json schreiben?

          B Offline
          B Offline
          bishop
          wrote on last edited by
          #27

          @stoepselinho
          einfach bei dem Link den ich gepostet habe, bei 4. auf token klicken und sich mit dem SamsungAcc oder Smartthing Acc anmelden.Dann sollte man sich ein Token erstellen lassen können!

          1 Reply Last reply
          0
          • B bishop

            @schranzistor
            Danke für die Info, gleich mal probiert und siehe da DP sind da :)

            Hast du eine Info über die DP, Temp einstellen z.b. funktioniert bei mir nicht.

            S Offline
            S Offline
            Schranzistor
            wrote on last edited by
            #28

            @bishop
            Hi bei mir lassen sich auch nicht alle Punkte steuern.... (vielleicht kommt da noch was)
            Oder du Fragst mal beim Entwickler nach.

            Aber für mich reicht der Ein/Aus Punkt "Daweil" vollkommen aus, da ich im Haus Externe Temperatur Sensoren habe,
            und ich damit recht gut reagieren kann.

            MFG

            K 1 Reply Last reply
            0
            • S Schranzistor

              @bishop
              Hi bei mir lassen sich auch nicht alle Punkte steuern.... (vielleicht kommt da noch was)
              Oder du Fragst mal beim Entwickler nach.

              Aber für mich reicht der Ein/Aus Punkt "Daweil" vollkommen aus, da ich im Haus Externe Temperatur Sensoren habe,
              und ich damit recht gut reagieren kann.

              MFG

              K Offline
              K Offline
              Koenigpils
              wrote on last edited by
              #29

              @schranzistor

              Hallo iobroker

              Ich brauche Hilfe komme alleine nicht weiter.
              Homebridge mit plugin ist installiert aber ich kann unter Objekte keine Klimaanlage finden.
              Für Tipps währe ich sehr dankbar.
              2022-03-30 14:11:42.992 - error: javascript.0 (800) Alias subscription error. Please check your alias definitions: sourceId=system.adapter.ham.0.inputCount, sourceObj={"_id":"system.adapter.ham.0.inputCount","type":"state","common":{"name":"ham.0 events input counter","desc":"State's inputs in 15 seconds","type":"number","read":true,"write":false,"role":"state","unit":"events/15 seconds"},"native":{},"from":"system.adapter.ham.0","ts":1648624294193,"acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"},"user":"system.user.admin"}
              2022-03-30 16:02:27.453 - info: host.iobroker-pi "system.adapter.ham.0" enabled
              2022-03-30 16:02:27.727 - info: host.iobroker-pi instance system.adapter.ham.0 started with pid 11727
              2022-03-30 16:02:32.348 - info: ham.0 (11727) starting. Version 4.0.2 in /opt/iobroker/node_modules/iobroker.ham, node: v14.19.0, js-controller: 4.0.21
              2022-03-30 16:02:32.406 - info: ham.0 (11727) Need to install/update homebridge@1.3.4
              2022-03-30 16:02:32.409 - info: ham.0 (11727) npm install homebridge@1.3.4 --production --loglevel error (System call)
              2022-03-30 16:03:46.259 - info: ham.0 (11727) + homebridge@1.3.4
              added 291 packages from 163 contributors and audited 292 packages in 67.465s

              2022-03-30 16:03:47.664 - info: ham.0 (11727)
              50 packages are looking for funding
              run npm fund for details

              2022-03-30 16:03:47.668 - info: ham.0 (11727) found 0 vulnerabilities

              2022-03-30 16:03:47.737 - info: ham.0 (11727) Install/Update the following Libraries: homebridge-samsung-air-conditioner-smart-things
              2022-03-30 16:03:47.739 - info: ham.0 (11727) Install/Update homebridge-samsung-air-conditioner-smart-things
              2022-03-30 16:03:47.740 - info: ham.0 (11727) All Libraries installed/updated
              2022-03-30 16:13:59.632 - info: host.iobroker-pi stopInstance system.adapter.ham.0 (force=false, process=true)
              2022-03-30 16:13:59.648 - info: ham.0 (11727) Got terminate signal TERMINATE_YOURSELF
              2022-03-30 16:13:59.649 - info: host.iobroker-pi stopInstance system.adapter.ham.0 send kill signal
              2022-03-30 16:13:59.653 - info: ham.0 (11727) cleaned everything up...
              2022-03-30 16:13:59.668 - info: ham.0 (11727) terminating
              2022-03-30 16:13:59.671 - info: ham.0 (11727) Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason
              2022-03-30 16:14:00.315 - info: host.iobroker-pi instance system.adapter.ham.0 terminated with code 11 (ADAPTER_REQUESTED_TERMINATION)
              2022-03-30 16:14:02.798 - info: host.iobroker-pi instance system.adapter.ham.0 started with pid 12639
              2022-03-30 16:14:08.197 - info: ham.0 (12639) starting. Version 4.0.2 in /opt/iobroker/node_modules/iobroker.ham, node: v14.19.0, js-controller: 4.0.21
              2022-03-30 16:14:08.286 - info: ham.0 (12639) Need to install/update homebridge@1.3.4
              2022-03-30 16:14:08.294 - info: ham.0 (12639) Install/Update the following Libraries: homebridge-samsung-air-conditioner-smart-things
              2022-03-30 16:14:08.296 - info: ham.0 (12639) Install/Update homebridge-samsung-air-conditioner-smart-things
              2022-03-30 16:14:08.299 - info: ham.0 (12639) All Libraries installed/updated
              2022-03-30 16:39:46.032 - info: info.0 (1204) Reading/updating systemdata.
              2022-03-30 16:39:47.517 - info: info.0 (1204) cpu Temp res = {"main":55.844,"cores":[],"max":55.844,"socket":[],"chipset":null}
              2022-03-30 16:47:50.887 - info: admin.0 (2425) Request actual repository...
              2022-03-30 16:4

              1 Reply Last reply
              0
              • the-masterplanT Offline
                the-masterplanT Offline
                the-masterplan
                wrote on last edited by the-masterplan
                #30

                Bei mir hat das mit HomeBridge auch irgendwie nicht geklappt. Habe mir dann drei Javascripts mit entsprechenden Datenpunkten erstellt, um die WindFree Anlagen zu steuern. Nutze dafür die API von Samsung. Man muss sich einmal einen Token ("HIER_TOKEN_EINTRAGEN") generieren und zusammen mit der jeweiligen Geräte ID ("ID_DER_JEWEILIGEN_INNENEINHEIT") in den in den Skripten hinterlegen:
                Skript zum Abrufen von Daten:

                schedule('*/10 * * * * *',function(){
                	var request = require("request")
                	var settings = {
                	  "url": "https://api.smartthings.com/v1/devices/ID_DER_JEWEILIGEN_INNENEINHEIT/status",
                	  "method": "GET",
                	  "timeout": 0,
                	  "headers": {
                		"Authorization": "Bearer HIER_TOKEN_EINTRAGEN"
                	  }
                	};
                	request(settings, function(error, response, body){        
                		var jsonresult = JSON.parse(body);
                		var maincomp = jsonresult.components.main	
                           setState('0_userdata.0.Klimaanlagen.Gästezimmer.Temperatur', maincomp.temperatureMeasurement.temperature.value, true);
                		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.relative_Luftfeuchtigkeit', maincomp.relativeHumidityMeasurement.humidity.value, true);
                		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.Modus', maincomp.airConditionerMode.airConditionerMode.value, true);
                           setState('0_userdata.0.Klimaanlagen.Gästezimmer.Soll-Temperatur', maincomp.thermostatCoolingSetpoint.coolingSetpoint.value, true);
                		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.Zusatz-Modus_(Windfree)', maincomp["custom.airConditionerOptionalMode"].acOptionalMode.value, true);
                		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.Gebläsegeschwindigkeit', maincomp.airConditionerFanMode.fanMode.value, true);
                		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.Gebläse-Oszillation', maincomp.fanOscillationMode.fanOscillationMode.value, true);
                           setState('0_userdata.0.Klimaanlagen.Gästezimmer.Switch', maincomp.switch.switch.value, true);
                    });
                });
                

                Skript zum schreiben von Daten:

                on({id: new RegExp('0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Gebläse-Oszillation' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Gebläsegeschwindigkeit' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Modus' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Soll-Temperatur' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Switch' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Zusatz-Modus_\\(Windfree\\)' + "$"), change: "ne"}, async function (obj) {
                
                var https = require('follow-redirects').https;
                var fs = require('fs');
                
                var options = {
                 'method': 'POST',
                 'hostname': 'api.smartthings.com',
                 'path': '/v1/devices/ID_DER_JEWEILIGEN_INNENEINHEIT/commands',
                 'headers': {
                   'Authorization': 'Bearer  HIER_TOKEN_EINTRAGEN',
                   'Content-Type': 'application/json'
                 },
                 'maxRedirects': 20
                };
                
                var req = https.request(options, function (res) {
                 var chunks = [];
                
                 res.on("data", function (chunk) {
                   chunks.push(chunk);
                 });
                
                 res.on("end", function (chunk) {
                   var body = Buffer.concat(chunks);
                 });
                
                 res.on("error", function (error) {
                   console.error(error);
                 });
                });
                var postData = JSON.stringify({
                 "commands": [
                   {
                     "component": "main",
                     "capability": "thermostatCoolingSetpoint",
                     "command": "setCoolingSetpoint",
                     "arguments": [
                       getState("0_userdata.0.Klimaanlagen.Gästezimmer.Soll-Temperatur").val
                     ]
                   },
                    {
                     "component": "main",
                     "capability": "switch",
                     "command": getState("0_userdata.0.Klimaanlagen.Gästezimmer.Switch").val,
                     "arguments": [
                     ]
                   },
                        {
                         "component": "main",
                         "capability": "airConditionerMode",
                         "command": "setAirConditionerMode",
                         "arguments": [
                              getState("0_userdata.0.Klimaanlagen.Gästezimmer.Modus").val
                           ]
                       },
                   {
                         "component": "main",
                         "capability": "airConditionerFanMode",
                         "command": "setFanMode",
                         "arguments": [
                           getState("0_userdata.0.Klimaanlagen.Gästezimmer.Gebläsegeschwindigkeit").val
                         ]
                       },
                        {
                         "component": "main",
                         "capability": "custom.airConditionerOptionalMode",
                         "command": "setAcOptionalMode",
                         "arguments": [
                           getState("0_userdata.0.Klimaanlagen.Gästezimmer.Zusatz-Modus_(Windfree)").val
                         ]
                       },
                        {
                         "component": "main",
                         "capability": "fanOscillationMode",
                         "command": "setFanOscillationMode",
                         "arguments": [
                          getState("0_userdata.0.Klimaanlagen.Gästezimmer.Gebläse-Oszillation").val
                         ]
                       }
                
                 ]
                });
                
                req.write(postData);
                
                req.end();});
                


                Skript zur automatischen Ausschalten des Displays der Inneneinheit:

                schedule('* * * * *',function(){
                var https = require('follow-redirects').https;
                var fs = require('fs');
                
                var options = {
                 'method': 'POST',
                 'hostname': 'api.smartthings.com',
                 'path': '/v1/devices/ID_DER_JEWEILIGEN_INNENEINHEIT/commands',
                 'headers': {
                   'Authorization': 'Bearer HIER_TOKEN_EINTRAGEN',
                   'Content-Type': 'application/json'
                 },
                 'maxRedirects': 20
                };
                
                var req = https.request(options, function (res) {
                 var chunks = [];
                
                 res.on("data", function (chunk) {
                   chunks.push(chunk);
                 });
                
                 res.on("end", function (chunk) {
                   var body = Buffer.concat(chunks);
                 });
                
                 res.on("error", function (error) {
                   console.error(error);
                 });
                });
                
                var postData = JSON.stringify({
                 "commands": [
                   {
                     "component": "main",
                     "capability": "execute",
                     "command": "execute",
                     "arguments": [
                       "mode/vs/0",
                       {
                         "x.com.samsung.da.options": [
                           "Light_On"
                                     ]
                       }
                     ]
                   }
                 ]
                });
                
                req.write(postData);
                
                req.end();
                });
                

                Ein Datenpunkt sieht dann z.B. so aus:

                {
                 "_id": "0_userdata.0.Klimaanlagen.Gästezimmer.Gebläsegeschwindigkeit",
                 "type": "state",
                 "common": {
                   "name": "Gebläsegeschwindigkeit",
                   "role": "",
                   "type": "string",
                   "desc": "Manuell erzeugt",
                   "states": "auto:Auto;low:langsam;medium:mittel;high:schnell;turbo:Turbo",
                   "read": true,
                   "write": true
                 }
                

                Mann muss für jede Inneneinheit alle drei Skripte anlegen und laufen lassen und ebenso die Dtaenpunkte. Sicher nicht die eleganteste Lösung und mit etwas Arbeit für das Anlegen verbunden, aber es funktioniert bei mir seit 2 Jahren sehr zuverlässig. Vielleicht kann man auch einen Adapter draus machen, aber davon habe ich (noch) keine Ahnung.

                Die richtigen Bezeichnungen für die unterschiedlichen Modi kann ich bei Bedarf nachliefern, lassen sich aber auch über die Datenpunkte auslesen

                Zum Testen von weiteren Befehlen, die ich noch nicht drin habe, kann ich Postman empfehlen. Damit kann man (auch wenn man keine Ahnung von REST hat) recht einfach Befehle an die Anlagen schicken und Daten abrufen.

                B 2 Replies Last reply
                0
                • the-masterplanT the-masterplan

                  Bei mir hat das mit HomeBridge auch irgendwie nicht geklappt. Habe mir dann drei Javascripts mit entsprechenden Datenpunkten erstellt, um die WindFree Anlagen zu steuern. Nutze dafür die API von Samsung. Man muss sich einmal einen Token ("HIER_TOKEN_EINTRAGEN") generieren und zusammen mit der jeweiligen Geräte ID ("ID_DER_JEWEILIGEN_INNENEINHEIT") in den in den Skripten hinterlegen:
                  Skript zum Abrufen von Daten:

                  schedule('*/10 * * * * *',function(){
                  	var request = require("request")
                  	var settings = {
                  	  "url": "https://api.smartthings.com/v1/devices/ID_DER_JEWEILIGEN_INNENEINHEIT/status",
                  	  "method": "GET",
                  	  "timeout": 0,
                  	  "headers": {
                  		"Authorization": "Bearer HIER_TOKEN_EINTRAGEN"
                  	  }
                  	};
                  	request(settings, function(error, response, body){        
                  		var jsonresult = JSON.parse(body);
                  		var maincomp = jsonresult.components.main	
                             setState('0_userdata.0.Klimaanlagen.Gästezimmer.Temperatur', maincomp.temperatureMeasurement.temperature.value, true);
                  		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.relative_Luftfeuchtigkeit', maincomp.relativeHumidityMeasurement.humidity.value, true);
                  		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.Modus', maincomp.airConditionerMode.airConditionerMode.value, true);
                             setState('0_userdata.0.Klimaanlagen.Gästezimmer.Soll-Temperatur', maincomp.thermostatCoolingSetpoint.coolingSetpoint.value, true);
                  		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.Zusatz-Modus_(Windfree)', maincomp["custom.airConditionerOptionalMode"].acOptionalMode.value, true);
                  		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.Gebläsegeschwindigkeit', maincomp.airConditionerFanMode.fanMode.value, true);
                  		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.Gebläse-Oszillation', maincomp.fanOscillationMode.fanOscillationMode.value, true);
                             setState('0_userdata.0.Klimaanlagen.Gästezimmer.Switch', maincomp.switch.switch.value, true);
                      });
                  });
                  

                  Skript zum schreiben von Daten:

                  on({id: new RegExp('0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Gebläse-Oszillation' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Gebläsegeschwindigkeit' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Modus' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Soll-Temperatur' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Switch' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Zusatz-Modus_\\(Windfree\\)' + "$"), change: "ne"}, async function (obj) {
                  
                  var https = require('follow-redirects').https;
                  var fs = require('fs');
                  
                  var options = {
                   'method': 'POST',
                   'hostname': 'api.smartthings.com',
                   'path': '/v1/devices/ID_DER_JEWEILIGEN_INNENEINHEIT/commands',
                   'headers': {
                     'Authorization': 'Bearer  HIER_TOKEN_EINTRAGEN',
                     'Content-Type': 'application/json'
                   },
                   'maxRedirects': 20
                  };
                  
                  var req = https.request(options, function (res) {
                   var chunks = [];
                  
                   res.on("data", function (chunk) {
                     chunks.push(chunk);
                   });
                  
                   res.on("end", function (chunk) {
                     var body = Buffer.concat(chunks);
                   });
                  
                   res.on("error", function (error) {
                     console.error(error);
                   });
                  });
                  var postData = JSON.stringify({
                   "commands": [
                     {
                       "component": "main",
                       "capability": "thermostatCoolingSetpoint",
                       "command": "setCoolingSetpoint",
                       "arguments": [
                         getState("0_userdata.0.Klimaanlagen.Gästezimmer.Soll-Temperatur").val
                       ]
                     },
                      {
                       "component": "main",
                       "capability": "switch",
                       "command": getState("0_userdata.0.Klimaanlagen.Gästezimmer.Switch").val,
                       "arguments": [
                       ]
                     },
                          {
                           "component": "main",
                           "capability": "airConditionerMode",
                           "command": "setAirConditionerMode",
                           "arguments": [
                                getState("0_userdata.0.Klimaanlagen.Gästezimmer.Modus").val
                             ]
                         },
                     {
                           "component": "main",
                           "capability": "airConditionerFanMode",
                           "command": "setFanMode",
                           "arguments": [
                             getState("0_userdata.0.Klimaanlagen.Gästezimmer.Gebläsegeschwindigkeit").val
                           ]
                         },
                          {
                           "component": "main",
                           "capability": "custom.airConditionerOptionalMode",
                           "command": "setAcOptionalMode",
                           "arguments": [
                             getState("0_userdata.0.Klimaanlagen.Gästezimmer.Zusatz-Modus_(Windfree)").val
                           ]
                         },
                          {
                           "component": "main",
                           "capability": "fanOscillationMode",
                           "command": "setFanOscillationMode",
                           "arguments": [
                            getState("0_userdata.0.Klimaanlagen.Gästezimmer.Gebläse-Oszillation").val
                           ]
                         }
                  
                   ]
                  });
                  
                  req.write(postData);
                  
                  req.end();});
                  


                  Skript zur automatischen Ausschalten des Displays der Inneneinheit:

                  schedule('* * * * *',function(){
                  var https = require('follow-redirects').https;
                  var fs = require('fs');
                  
                  var options = {
                   'method': 'POST',
                   'hostname': 'api.smartthings.com',
                   'path': '/v1/devices/ID_DER_JEWEILIGEN_INNENEINHEIT/commands',
                   'headers': {
                     'Authorization': 'Bearer HIER_TOKEN_EINTRAGEN',
                     'Content-Type': 'application/json'
                   },
                   'maxRedirects': 20
                  };
                  
                  var req = https.request(options, function (res) {
                   var chunks = [];
                  
                   res.on("data", function (chunk) {
                     chunks.push(chunk);
                   });
                  
                   res.on("end", function (chunk) {
                     var body = Buffer.concat(chunks);
                   });
                  
                   res.on("error", function (error) {
                     console.error(error);
                   });
                  });
                  
                  var postData = JSON.stringify({
                   "commands": [
                     {
                       "component": "main",
                       "capability": "execute",
                       "command": "execute",
                       "arguments": [
                         "mode/vs/0",
                         {
                           "x.com.samsung.da.options": [
                             "Light_On"
                                       ]
                         }
                       ]
                     }
                   ]
                  });
                  
                  req.write(postData);
                  
                  req.end();
                  });
                  

                  Ein Datenpunkt sieht dann z.B. so aus:

                  {
                   "_id": "0_userdata.0.Klimaanlagen.Gästezimmer.Gebläsegeschwindigkeit",
                   "type": "state",
                   "common": {
                     "name": "Gebläsegeschwindigkeit",
                     "role": "",
                     "type": "string",
                     "desc": "Manuell erzeugt",
                     "states": "auto:Auto;low:langsam;medium:mittel;high:schnell;turbo:Turbo",
                     "read": true,
                     "write": true
                   }
                  

                  Mann muss für jede Inneneinheit alle drei Skripte anlegen und laufen lassen und ebenso die Dtaenpunkte. Sicher nicht die eleganteste Lösung und mit etwas Arbeit für das Anlegen verbunden, aber es funktioniert bei mir seit 2 Jahren sehr zuverlässig. Vielleicht kann man auch einen Adapter draus machen, aber davon habe ich (noch) keine Ahnung.

                  Die richtigen Bezeichnungen für die unterschiedlichen Modi kann ich bei Bedarf nachliefern, lassen sich aber auch über die Datenpunkte auslesen

                  Zum Testen von weiteren Befehlen, die ich noch nicht drin habe, kann ich Postman empfehlen. Damit kann man (auch wenn man keine Ahnung von REST hat) recht einfach Befehle an die Anlagen schicken und Daten abrufen.

                  B Offline
                  B Offline
                  bishop
                  wrote on last edited by
                  #31

                  @maximilian-garbe

                  hast du aktuell das Script noch am laufen? Ich versuche mich gerade daran, aber wenn ich dein Script zum abrufen der Daten starte bekomme ich ein:

                  javascript.0
                  2022-06-10 11:13:00.190	error	Error in request callback: SyntaxError: Unexpected end of JSON input
                  
                  schedule('*/10 * * * * *',function(){
                  	var request = require("request")
                  	var settings = {
                  	  "url": "https://api.smartthings.com/v1/devices/8bfb8f48-6b2h-4235-a53c-ab5a58a8abgf/status",
                  	  "method": "GET",
                  	  "timeout": 0,
                  	  "headers": {
                  		"Authorization": "Bearer ad3ade5e-c833-4559-bc95-d85d4f14928d"
                  	  }
                  	};
                  	request(settings, function(error, response, body){        
                  		var jsonresult = JSON.parse(body);
                  		var maincomp = jsonresult.components.main	
                             setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Temperatur', maincomp.temperatureMeasurement.temperature.value, true);
                  		   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.relative_Luftfeuchtigkeit', maincomp.relativeHumidityMeasurement.humidity.value, true);
                  		   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Modus', maincomp.airConditionerMode.airConditionerMode.value, true);
                             setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Soll-Temperatur', maincomp.thermostatCoolingSetpoint.coolingSetpoint.value, true);
                  		   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Zusatz-Modus_(Windfree)', maincomp["custom.airConditionerOptionalMode"].acOptionalMode.value, true);
                  		   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Gebläsegeschwindigkeit', maincomp.airConditionerFanMode.fanMode.value, true);
                  		   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Gebläse-Oszillation', maincomp.fanOscillationMode.fanOscillationMode.value, true);
                             setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Switch', maincomp.switch.switch.value, true);
                      });
                  });
                  

                  token und id sind geändert!

                  Centurytt 0C 1 Reply Last reply
                  0
                  • the-masterplanT the-masterplan

                    Bei mir hat das mit HomeBridge auch irgendwie nicht geklappt. Habe mir dann drei Javascripts mit entsprechenden Datenpunkten erstellt, um die WindFree Anlagen zu steuern. Nutze dafür die API von Samsung. Man muss sich einmal einen Token ("HIER_TOKEN_EINTRAGEN") generieren und zusammen mit der jeweiligen Geräte ID ("ID_DER_JEWEILIGEN_INNENEINHEIT") in den in den Skripten hinterlegen:
                    Skript zum Abrufen von Daten:

                    schedule('*/10 * * * * *',function(){
                    	var request = require("request")
                    	var settings = {
                    	  "url": "https://api.smartthings.com/v1/devices/ID_DER_JEWEILIGEN_INNENEINHEIT/status",
                    	  "method": "GET",
                    	  "timeout": 0,
                    	  "headers": {
                    		"Authorization": "Bearer HIER_TOKEN_EINTRAGEN"
                    	  }
                    	};
                    	request(settings, function(error, response, body){        
                    		var jsonresult = JSON.parse(body);
                    		var maincomp = jsonresult.components.main	
                               setState('0_userdata.0.Klimaanlagen.Gästezimmer.Temperatur', maincomp.temperatureMeasurement.temperature.value, true);
                    		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.relative_Luftfeuchtigkeit', maincomp.relativeHumidityMeasurement.humidity.value, true);
                    		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.Modus', maincomp.airConditionerMode.airConditionerMode.value, true);
                               setState('0_userdata.0.Klimaanlagen.Gästezimmer.Soll-Temperatur', maincomp.thermostatCoolingSetpoint.coolingSetpoint.value, true);
                    		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.Zusatz-Modus_(Windfree)', maincomp["custom.airConditionerOptionalMode"].acOptionalMode.value, true);
                    		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.Gebläsegeschwindigkeit', maincomp.airConditionerFanMode.fanMode.value, true);
                    		   setState('0_userdata.0.Klimaanlagen.Gästezimmer.Gebläse-Oszillation', maincomp.fanOscillationMode.fanOscillationMode.value, true);
                               setState('0_userdata.0.Klimaanlagen.Gästezimmer.Switch', maincomp.switch.switch.value, true);
                        });
                    });
                    

                    Skript zum schreiben von Daten:

                    on({id: new RegExp('0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Gebläse-Oszillation' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Gebläsegeschwindigkeit' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Modus' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Soll-Temperatur' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Switch' + "$|" + '0_userdata\\.0\\.Klimaanlagen\\.Gästezimmer\\.Zusatz-Modus_\\(Windfree\\)' + "$"), change: "ne"}, async function (obj) {
                    
                    var https = require('follow-redirects').https;
                    var fs = require('fs');
                    
                    var options = {
                     'method': 'POST',
                     'hostname': 'api.smartthings.com',
                     'path': '/v1/devices/ID_DER_JEWEILIGEN_INNENEINHEIT/commands',
                     'headers': {
                       'Authorization': 'Bearer  HIER_TOKEN_EINTRAGEN',
                       'Content-Type': 'application/json'
                     },
                     'maxRedirects': 20
                    };
                    
                    var req = https.request(options, function (res) {
                     var chunks = [];
                    
                     res.on("data", function (chunk) {
                       chunks.push(chunk);
                     });
                    
                     res.on("end", function (chunk) {
                       var body = Buffer.concat(chunks);
                     });
                    
                     res.on("error", function (error) {
                       console.error(error);
                     });
                    });
                    var postData = JSON.stringify({
                     "commands": [
                       {
                         "component": "main",
                         "capability": "thermostatCoolingSetpoint",
                         "command": "setCoolingSetpoint",
                         "arguments": [
                           getState("0_userdata.0.Klimaanlagen.Gästezimmer.Soll-Temperatur").val
                         ]
                       },
                        {
                         "component": "main",
                         "capability": "switch",
                         "command": getState("0_userdata.0.Klimaanlagen.Gästezimmer.Switch").val,
                         "arguments": [
                         ]
                       },
                            {
                             "component": "main",
                             "capability": "airConditionerMode",
                             "command": "setAirConditionerMode",
                             "arguments": [
                                  getState("0_userdata.0.Klimaanlagen.Gästezimmer.Modus").val
                               ]
                           },
                       {
                             "component": "main",
                             "capability": "airConditionerFanMode",
                             "command": "setFanMode",
                             "arguments": [
                               getState("0_userdata.0.Klimaanlagen.Gästezimmer.Gebläsegeschwindigkeit").val
                             ]
                           },
                            {
                             "component": "main",
                             "capability": "custom.airConditionerOptionalMode",
                             "command": "setAcOptionalMode",
                             "arguments": [
                               getState("0_userdata.0.Klimaanlagen.Gästezimmer.Zusatz-Modus_(Windfree)").val
                             ]
                           },
                            {
                             "component": "main",
                             "capability": "fanOscillationMode",
                             "command": "setFanOscillationMode",
                             "arguments": [
                              getState("0_userdata.0.Klimaanlagen.Gästezimmer.Gebläse-Oszillation").val
                             ]
                           }
                    
                     ]
                    });
                    
                    req.write(postData);
                    
                    req.end();});
                    


                    Skript zur automatischen Ausschalten des Displays der Inneneinheit:

                    schedule('* * * * *',function(){
                    var https = require('follow-redirects').https;
                    var fs = require('fs');
                    
                    var options = {
                     'method': 'POST',
                     'hostname': 'api.smartthings.com',
                     'path': '/v1/devices/ID_DER_JEWEILIGEN_INNENEINHEIT/commands',
                     'headers': {
                       'Authorization': 'Bearer HIER_TOKEN_EINTRAGEN',
                       'Content-Type': 'application/json'
                     },
                     'maxRedirects': 20
                    };
                    
                    var req = https.request(options, function (res) {
                     var chunks = [];
                    
                     res.on("data", function (chunk) {
                       chunks.push(chunk);
                     });
                    
                     res.on("end", function (chunk) {
                       var body = Buffer.concat(chunks);
                     });
                    
                     res.on("error", function (error) {
                       console.error(error);
                     });
                    });
                    
                    var postData = JSON.stringify({
                     "commands": [
                       {
                         "component": "main",
                         "capability": "execute",
                         "command": "execute",
                         "arguments": [
                           "mode/vs/0",
                           {
                             "x.com.samsung.da.options": [
                               "Light_On"
                                         ]
                           }
                         ]
                       }
                     ]
                    });
                    
                    req.write(postData);
                    
                    req.end();
                    });
                    

                    Ein Datenpunkt sieht dann z.B. so aus:

                    {
                     "_id": "0_userdata.0.Klimaanlagen.Gästezimmer.Gebläsegeschwindigkeit",
                     "type": "state",
                     "common": {
                       "name": "Gebläsegeschwindigkeit",
                       "role": "",
                       "type": "string",
                       "desc": "Manuell erzeugt",
                       "states": "auto:Auto;low:langsam;medium:mittel;high:schnell;turbo:Turbo",
                       "read": true,
                       "write": true
                     }
                    

                    Mann muss für jede Inneneinheit alle drei Skripte anlegen und laufen lassen und ebenso die Dtaenpunkte. Sicher nicht die eleganteste Lösung und mit etwas Arbeit für das Anlegen verbunden, aber es funktioniert bei mir seit 2 Jahren sehr zuverlässig. Vielleicht kann man auch einen Adapter draus machen, aber davon habe ich (noch) keine Ahnung.

                    Die richtigen Bezeichnungen für die unterschiedlichen Modi kann ich bei Bedarf nachliefern, lassen sich aber auch über die Datenpunkte auslesen

                    Zum Testen von weiteren Befehlen, die ich noch nicht drin habe, kann ich Postman empfehlen. Damit kann man (auch wenn man keine Ahnung von REST hat) recht einfach Befehle an die Anlagen schicken und Daten abrufen.

                    B Offline
                    B Offline
                    bishop
                    wrote on last edited by
                    #32

                    @the-masterplan

                    kannst du mir bitte helfen mit deinem Schreiben Script!?!

                    er reagiert auf keine änderung der Datenpunkte. Sie werden alle geschrieben und ändern sich auch.
                    Aber wenn ich den Datenpunkt selber ändere tut sich nichts.

                    1 Reply Last reply
                    0
                    • S Schranzistor

                      Hi
                      das Thema ist schon etwas älter, aber ich bin bei der suche auf dieses gestoßen.

                      Anscheinend gibt es einige Wege diese in IOB zu integrieren, ist aber mit etwas aufwand verbunden....
                      Dieser weg ist meines Erachtens wirklich einfach.
                      Deswegen wollte ich mal Feedback geben wie ich sie in eingebunden habe.

                      Meine 2 Samsung Windfree Geräte sind in der Smartthings APP und diese lassen sich jetzt über den HAM Adapter mit diesem Plugin Steuern homebridge-samsung-air-conditioner-smart-things
                      Auf dieser Seite ist eigentlich alles recht einfach erklärt.
                      Plugin im HAM installieren und dort dann den Token eintragen, den Rest macht das Plugin.
                      Mann bekommt dann im IOB Objekte zum steuern

                      MFG

                      M Offline
                      M Offline
                      marc_ackermann
                      wrote on last edited by
                      #33

                      @schranzistor ich bekomme es leider nicht gebacken… HAM Adapter installiert, Plugin installiert, Token erstellt und alles aus der Sample Config in die Konfiguration (inkl. Token) kopiert.

                      Aber irgendwie wird die AC nicht angezeigt. Könntest du freundlicherweise Deine Config hier posten? Es ist schon die Config in den Einstellungen von Adapter oder?IMG_8727.jpeg IMG_8726.jpeg IMG_8725.jpeg IMG_8724.jpeg

                      1 Reply Last reply
                      0
                      • B bishop

                        @maximilian-garbe

                        hast du aktuell das Script noch am laufen? Ich versuche mich gerade daran, aber wenn ich dein Script zum abrufen der Daten starte bekomme ich ein:

                        javascript.0
                        2022-06-10 11:13:00.190	error	Error in request callback: SyntaxError: Unexpected end of JSON input
                        
                        schedule('*/10 * * * * *',function(){
                        	var request = require("request")
                        	var settings = {
                        	  "url": "https://api.smartthings.com/v1/devices/8bfb8f48-6b2h-4235-a53c-ab5a58a8abgf/status",
                        	  "method": "GET",
                        	  "timeout": 0,
                        	  "headers": {
                        		"Authorization": "Bearer ad3ade5e-c833-4559-bc95-d85d4f14928d"
                        	  }
                        	};
                        	request(settings, function(error, response, body){        
                        		var jsonresult = JSON.parse(body);
                        		var maincomp = jsonresult.components.main	
                                   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Temperatur', maincomp.temperatureMeasurement.temperature.value, true);
                        		   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.relative_Luftfeuchtigkeit', maincomp.relativeHumidityMeasurement.humidity.value, true);
                        		   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Modus', maincomp.airConditionerMode.airConditionerMode.value, true);
                                   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Soll-Temperatur', maincomp.thermostatCoolingSetpoint.coolingSetpoint.value, true);
                        		   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Zusatz-Modus_(Windfree)', maincomp["custom.airConditionerOptionalMode"].acOptionalMode.value, true);
                        		   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Gebläsegeschwindigkeit', maincomp.airConditionerFanMode.fanMode.value, true);
                        		   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Gebläse-Oszillation', maincomp.fanOscillationMode.fanOscillationMode.value, true);
                                   setState('0_userdata.0.Klimaanlagen.Schlafzimmer.Switch', maincomp.switch.switch.value, true);
                            });
                        });
                        

                        token und id sind geändert!

                        Centurytt 0C Offline
                        Centurytt 0C Offline
                        Centurytt 0
                        wrote on last edited by Centurytt 0
                        #34

                        @bishop

                        Hast du den Fehler gefunden ? die Frage kann ich aber auch selber beantworten. Das hätte so nie geklappt.

                        Hier der Code der funktioniert:

                        const request = require("request");
                        
                        // Define your SmartThings API configuration
                        const smartThingsConfig = {
                          url: "https://api.smartthings.com/v1/devices/xxxxxx/status",
                          method: "GET",
                          timeout: 0,
                          headers: {
                            Authorization: "Bearer xxxxxxx",
                          },
                        };
                        
                        // Function to make the API request and set states
                        function fetchDataAndSetStates() {
                          let response; // Declare response variable here
                        
                          request(smartThingsConfig, function (error, res, body) {
                            response = res; // Assign the response to the variable
                        
                            if (error) {
                              console.error("Error making the request:", error);
                              return;
                            }
                        
                            const statusCode = response.statusCode;
                            if (statusCode === 401) {
                              console.error("Unauthorized access: Check your authorization token.");
                              // You might want to take additional actions here, such as obtaining a new token.
                            } else if (statusCode !== 200) {
                              console.error(`Received non-200 status code: ${statusCode}`);
                              // Handle other non-200 status codes as needed.
                              return;
                            }
                        
                            try {
                              const jsonResult = JSON.parse(body);
                              const mainComp = jsonResult.components.main;
                        
                              // Check if the expected properties exist before accessing them
                                
                             setState('0_userdata.0.Klimaanlage.Klima.Temperatur', mainComp.temperatureMeasurement.temperature.value, true);
                             setState('0_userdata.0.Klimaanlage.Klima.relative_Luftfeuchtigkeit', mainComp.relativeHumidityMeasurement.humidity.value, true);
                             setState('0_userdata.0.Klimaanlage.Klima.Modus', mainComp.airConditionerMode.airConditionerMode.value, true);
                             setState('0_userdata.0.Klimaanlage.Klima.Soll-Temperatur', mainComp.thermostatCoolingSetpoint.coolingSetpoint.value, true);
                             setState('0_userdata.0.Klimaanlage.Klima.Zusatz-Modus_(Windfree)', mainComp["custom.airConditionerOptionalMode"].acOptionalMode.value, true);
                             setState('0_userdata.0.Klimaanlage.Klima.Gebläsegeschwindigkeit', mainComp.airConditionerFanMode.fanMode.value, true);
                             setState('0_userdata.0.Klimaanlage.Klima.Gebläse-Oszillation', mainComp.fanOscillationMode.fanOscillationMode.value, true);
                             setState('0_userdata.0.Klimaanlage.Klima.Switch', mainComp.switch.switch.value, true);
                        
                          // Repeat the same checks for other properties...
                        
                            } catch (parseError) {
                              console.error("Error parsing API response as JSON:", parseError);
                              console.error("Response body:", body); // Log the response body for debugging
                            }
                          });
                        }
                        
                        // Schedule the fetchDataAndSetStates function to run every 10 seconds
                        setInterval(fetchDataAndSetStates, 10000);
                        
                        
                        T 1 Reply Last reply
                        0
                        • Centurytt 0C Centurytt 0

                          @bishop

                          Hast du den Fehler gefunden ? die Frage kann ich aber auch selber beantworten. Das hätte so nie geklappt.

                          Hier der Code der funktioniert:

                          const request = require("request");
                          
                          // Define your SmartThings API configuration
                          const smartThingsConfig = {
                            url: "https://api.smartthings.com/v1/devices/xxxxxx/status",
                            method: "GET",
                            timeout: 0,
                            headers: {
                              Authorization: "Bearer xxxxxxx",
                            },
                          };
                          
                          // Function to make the API request and set states
                          function fetchDataAndSetStates() {
                            let response; // Declare response variable here
                          
                            request(smartThingsConfig, function (error, res, body) {
                              response = res; // Assign the response to the variable
                          
                              if (error) {
                                console.error("Error making the request:", error);
                                return;
                              }
                          
                              const statusCode = response.statusCode;
                              if (statusCode === 401) {
                                console.error("Unauthorized access: Check your authorization token.");
                                // You might want to take additional actions here, such as obtaining a new token.
                              } else if (statusCode !== 200) {
                                console.error(`Received non-200 status code: ${statusCode}`);
                                // Handle other non-200 status codes as needed.
                                return;
                              }
                          
                              try {
                                const jsonResult = JSON.parse(body);
                                const mainComp = jsonResult.components.main;
                          
                                // Check if the expected properties exist before accessing them
                                  
                               setState('0_userdata.0.Klimaanlage.Klima.Temperatur', mainComp.temperatureMeasurement.temperature.value, true);
                               setState('0_userdata.0.Klimaanlage.Klima.relative_Luftfeuchtigkeit', mainComp.relativeHumidityMeasurement.humidity.value, true);
                               setState('0_userdata.0.Klimaanlage.Klima.Modus', mainComp.airConditionerMode.airConditionerMode.value, true);
                               setState('0_userdata.0.Klimaanlage.Klima.Soll-Temperatur', mainComp.thermostatCoolingSetpoint.coolingSetpoint.value, true);
                               setState('0_userdata.0.Klimaanlage.Klima.Zusatz-Modus_(Windfree)', mainComp["custom.airConditionerOptionalMode"].acOptionalMode.value, true);
                               setState('0_userdata.0.Klimaanlage.Klima.Gebläsegeschwindigkeit', mainComp.airConditionerFanMode.fanMode.value, true);
                               setState('0_userdata.0.Klimaanlage.Klima.Gebläse-Oszillation', mainComp.fanOscillationMode.fanOscillationMode.value, true);
                               setState('0_userdata.0.Klimaanlage.Klima.Switch', mainComp.switch.switch.value, true);
                          
                            // Repeat the same checks for other properties...
                          
                              } catch (parseError) {
                                console.error("Error parsing API response as JSON:", parseError);
                                console.error("Response body:", body); // Log the response body for debugging
                              }
                            });
                          }
                          
                          // Schedule the fetchDataAndSetStates function to run every 10 seconds
                          setInterval(fetchDataAndSetStates, 10000);
                          
                          
                          T Offline
                          T Offline
                          ToK
                          wrote on last edited by
                          #35

                          Hi!
                          Möchte ebenso zwei Samsung Windfree Geräte visualisieren.
                          Diese sind im Smartthings hinterlegt und in der APP sichtbar und der Token ist angelegt.
                          Dann den HAM V5.3.1 installiert und nachfolgend unter Homebridge das Plugin samsung-air-conditioner-smart-things wie folgt konfiguriert und installiert.

                          {
                              "platform": "homebridge-smartthings.SmartThings",
                              "name": "homebridge-samsung-air-conditioner-smart-things",
                              "token": "hier steht der Doken",
                              "temperatureUnit": "C",
                              "showHumidity": true,
                              "windFreeSupported": true
                          }
                          

                          Im IOB bekomme ich keine zusätzlichen Objekte angezeigt.
                          Wo liegt da mein Fehler ??

                          1 Reply Last reply
                          0
                          • T Offline
                            T Offline
                            ToK
                            wrote on last edited by ToK
                            #36

                            Offensichtlich funktioniert der samsung-air-conditioner-smart-things seit August 2023 nicht mehr ->
                            https://github.com/teodoradima/homebridge-samsung-air-conditioner-smart-things/issues
                            Die Umstellung auf den JS Code von @Centurytt-0 bringt diese Fehlermeldungen im JS Log:
                            log.PNG
                            und im Protokoll:

                            Protokoll.PNG

                            1 Reply Last reply
                            0

                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                            With your input, this post could be even better 💗

                            Register Login
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            549

                            Online

                            32.8k

                            Users

                            82.7k

                            Topics

                            1.3m

                            Posts
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Home
                            • Recent
                            • Tags
                            • Unread 0
                            • Categories
                            • Unreplied
                            • Popular
                            • GitHub
                            • Docu
                            • Hilfe