Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Auslesen der Viessmann Cloud für Heizung?!?

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    334

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

Auslesen der Viessmann Cloud für Heizung?!?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
109 Beiträge 34 Kommentatoren 24.8k Aufrufe 22 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • R Offline
    R Offline
    radierer
    schrieb am zuletzt editiert von
    #14

    @ilovegym:

    Das ist bestimmt verwechselt worden.. `

    Das denke ich auch, dass es mit dem bereits vorhandenen Adapter verwechselt wurde. Für den benötigt man ja aber zusätzliche Hardware, was hier ja auch aufgrund der Garantie der online- bzw. Cloudanbindung vermieden werden sollte.

    1 Antwort Letzte Antwort
    0
    • ? Offline
      ? Offline
      Ein ehemaliger Benutzer
      schrieb am zuletzt editiert von
      #15

      Hallo,

      also, über den Umweg FHEM ist es möglich, die Werte in iobroker zu bekommen.

      Hier ne kurze Beschreibung des Weges:

      1. Raspian-x86-stretch.iso runtergeladen und in proxmox ne VM damit erstellt. Alle Befehle per root oder mit sudo ausführen!

      2. apt-get update && apt-get upgrade

      3. reboot

      4. raspi-config aufrufen, location einstellen, ssh aktivieren, passwort und hostname setzen

      5. reboot

      6. per ssh auf die VM, und php7 und php curl installieren: apt-get install php anschliessend apt-get install php-curl

      7. Jetzt installieren wir alles für FHEM:

      8. apt-get install telnet

      9. wget -qO - http://debian.fhem.de/archive.key | apt-key add -

      10. nano /etc/apt/sources.list dort das einfügen: deb http://debian.fhem.de/nightly/ /

      11. apt-get update && apt-get upgrade

      12. apt-get install fhem

      13. reboot tut gut

      14. testen ob fhem läuft, über n webbrowser port 8083 aufrufen oder netstat -npl | grep tcp schauen nach port 8083 7072

      15. jetzt Datei vissmann.php erzeugen, in /opt/fhem speichern und dieses script reinkopieren:

      ( das Script habe ich im fhem-forum gefunden, vielen Dank an den Autor, hier der Link: https://forum.fhem.de/index.php/topic,8 … #msg849123 )

      #!/usr/bin/php
       $arg)
      {
      	debug_msg ("$argNo : $argv[$argNo]\n", $debug);
      	switch ($argv[$argNo]) {
      		case "--debug":
      			$debug = true;
      			break;
      		case "-user":
      			$isiwebuserid = $argv[$argNo + 1];
      			break;
      		case "-passwd":
      			$isiwebpasswd = $argv[$argNo + 1];
      			break;
      	}
      }
      
      debug_msg("isiwebuserid = $isiwebuserid\n", $debug); 
      debug_msg("isiwebpasswd = $isiwebpasswd\n", $debug); 
      
      $callback_uri = "vicare://oauth-callback/everest"; 
      $code = getCode(); 
      debug_msg("code=$code\n", $debug); 
      
      $access_token = getAccessToken($code); 
      debug_msg("access token= $access_token\n", $debug); 
      
      $resource = getResource($access_token, $apiURLBase . $general); 
      debug_msg("resource: $resource\n", $debug); 
      
      $installation = json_decode($resource, true)["entities"][0]["properties"]["id"];
      $gw = json_decode($resource, true)["entities"][0]["entities"][0]["properties"]["serial"];
      debug_msg("gw: $gw\n", $debug); 
      
      $RequestList = array(
          "heating.boiler.serial.value" 												=> "Kessel_Seriennummer",
          "heating.boiler.sensors.temperature.main.status" 						=> "Kessel_Status",
          "heating.boiler.sensors.temperature.main.value" 						=> "Kesseltemperatur",
          "heating.burner.active" 														=> "Brenner_aktiv",
          "heating.burner.automatic.status" 											=> "Brenner_Status",
          "heating.burner.automatic.errorCode" 										=> "Brenner_Fehlercode",
          "heating.circuits.enabled" 													=> "Aktive_Heizkreise",
          "heating.circuits.0.active" 													=> "HK1-aktiv",
          "heating.circuits.0.circulation.schedule.active" 						=> "HK1-Zeitsteuerung_Zirkulation_aktiv",
          "heating.circuits.0.circulation.schedule.entries" 					=> "HK1-Zeitsteuerung_Zirkulation",
          "heating.circuits.0.frostprotection.status" 							=> "HK1-Frostschutz_Status",
          "heating.circuits.0.heating.curve.shift" 								=> "HK1-Heizkurve-Niveau",
          "heating.circuits.0.heating.curve.slope" 								=> "HK1-Heizkurve-Steigung",
          "heating.circuits.0.heating.schedule.active" 							=> "HK1-Zeitsteuerung_Heizung_aktiv",
          "heating.circuits.0.heating.schedule.entries" 							=> "HK1-Zeitsteuerung_Heizung",
          "heating.circuits.0.operating.modes.active.value" 					=> "HK1-Betriebsart",
          "heating.circuits.0.operating.modes.dhw.active" 						=> "HK1-WW_aktiv",
          "heating.circuits.0.operating.modes.dhwAndHeating.active" 			=> "HK1-WW_und_Heizen_aktiv",
          "heating.circuits.0.operating.modes.forcedNormal.active" 			=> "HK1-Solltemperatur_erzwungen",
          "heating.circuits.0.operating.modes.forcedReduced.active" 			=> "HK1-Reduzierte_Temperatur_erzwungen",
          "heating.circuits.0.operating.modes.standby.active" 					=> "HK1-Standby_aktiv",
          "heating.circuits.0.operating.programs.active.value" 				=> "HK1-Programmstatus",
          "heating.circuits.0.operating.programs.comfort.active" 				=> "HK1-Solltemperatur_comfort_aktiv",
          "heating.circuits.0.operating.programs.comfort.temperature" 		=> "HK1-Solltemperatur_comfort",
          "heating.circuits.0.operating.programs.eco.active" 					=> "HK1-Solltemperatur_eco_aktiv",
          "heating.circuits.0.operating.programs.eco.temperature" 			=> "HK1-Solltemperatur_eco",
          "heating.circuits.0.operating.programs.external.active" 			=> "HK1-External_aktiv",
          "heating.circuits.0.operating.programs.external.temperature" 		=> "HK1-External_Temperatur",
          "heating.circuits.0.operating.programs.holiday.active" 				=> "HK1-Urlaub_aktiv",
          "heating.circuits.0.operating.programs.holiday.start" 				=> "HK1-Urlaub_Start",
          "heating.circuits.0.operating.programs.holiday.end" 					=> "HK1-Urlaub_Ende",
          "heating.circuits.0.operating.programs.normal.active" 				=> "HK1-Solltemperatur_aktiv",
          "heating.circuits.0.operating.programs.normal.temperature" 		=> "HK1-Solltemperatur_normal",
          "heating.circuits.0.operating.programs.reduced.active"				=> "HK1-Solltemperatur_reduziert_aktiv",
          "heating.circuits.0.operating.programs.reduced.temperature" 		=> "HK1-Solltemperatur_reduziert",
          "heating.circuits.0.operating.programs.standby.active" 				=> "HK1-Standby_aktiv",
          "heating.circuits.0.sensors.temperature.room.status" 				=> "HK1-Raum_Status",
          "heating.circuits.0.sensors.temperature.supply.status"				=> "HK1-Vorlauftemperatur_aktiv",
          "heating.circuits.0.sensors.temperature.supply.value" 				=> "HK1-Vorlauftemperatur",
          "heating.configuration.multiFamilyHouse.active" 						=> "Mehrfamilenhaus_aktiv",
          "heating.controller.serial.value" 											=> "Controller_Seriennummer",
          "heating.device.time.offset.value" 										=> "Device_Time_Offset",
          "heating.dhw.active" 															=> "WW-aktiv",
          "heating.dhw.oneTimeCharge.active" 										=> "WW-onTimeCharge_aktiv",
          "heating.dhw.sensors.temperature.hotWaterStorage.status" 			=> "WW-Temperatur_aktiv",
          "heating.dhw.sensors.temperature.hotWaterStorage.value" 			=> "WW-Isttemperatur",
          "heating.dhw.temperature.value" 											=> "WW-Solltemperatur",
          "heating.dhw.schedule.active" 												=> "WW-zeitgesteuert_aktiv",
          "heating.dhw.schedule.entries" 												=> "WW-Zeitplan",
          "heating.errors.active.entries" 											=> "Fehlereinträge_aktive",
          "heating.errors.history.entries" 											=> "Fehlereinträge_Historie",
          "heating.gas.consumption.dhw.day" 											=> "Gasverbrauch_WW/Tag",
          "heating.gas.consumption.dhw.week" 										=> "Gasverbrauch_WW/Woche",
          "heating.gas.consumption.dhw.month" 										=> "Gasverbrauch_WW/Monat",
          "heating.gas.consumption.dhw.year" 										=> "Gasverbrauch_WW/Jahr",
          "heating.gas.consumption.heating.day" 									=> "Gasverbrauch_Heizung/Tag",
          "heating.gas.consumption.heating.week" 									=> "Gasverbrauch_Heizung/Woche",
          "heating.gas.consumption.heating.month" 									=> "Gasverbrauch_Heizung/Monat",
          "heating.gas.consumption.heating.year" 									=> "Gasverbrauch_Heizung/Jahr",
          "heating.sensors.temperature.outside.status" 							=> "Aussen_Status",
          "heating.sensors.temperature.outside.statusWired" 					=> "Aussen_StatusWired",
          "heating.sensors.temperature.outside.statusWireless" 				=> "Aussen_StatusWireless",
          "heating.sensors.temperature.outside.value" 							=> "Aussentemperatur",
          "heating.service.timeBased.serviceDue" 									=> "Service_fällig",
          "heating.service.timeBased.serviceIntervalMonths" 					=> "Service_Intervall_Monate",
          "heating.service.timeBased.activeMonthSinceLastService" 			=> "Service_Monate_aktiv_seit_letzten_Service",
          "heating.service.timeBased.lastService" 									=> "Service_Letzter",
          "heating.service.burnerBased.serviceDue" 								=> "Service_fällig_brennerbasier",
          "heating.service.burnerBased.serviceIntervalBurnerHours" 			=> "Service_Intervall_Betriebsstunden",
          "heating.service.burnerBased.activeBurnerHoursSinceLastService" 	=> "Service_Betriebsstunden_seit_letzten",
          "heating.service.burnerBased.lastService" 								=> "Service_Letzter_brennerbasiert",
      );
      
      // Erstmal alle Daten komplett abfragen
      $resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/");
      
      $items = json_decode($resource, true)["entities"];
      
      $r = "";
      
      // Jetzt alle Werte in der Antwort checken und in ein Array schreiben
      foreach ($items as $ItemNo => $Item)
      { 
      	$FieldName = strval($items[$ItemNo]["class"][0]);
      	//echo "$FieldName\n";
      
      	if ( array_key_exists("properties", $items[$ItemNo] ) ) 
      	{
      		 $Properties=$items[$ItemNo]["properties"];
      		 foreach ($Properties as $PropertyNo => $Property)
      		 {
      			$Typ = strval($Properties["$PropertyNo"]["type"]);
      			switch($Typ) {
      				case "string":
      				case "number":
      					$Wert = strval($Properties["$PropertyNo"]["value"]);
      					break;
      				case "boolean":
      					if ($Properties["$PropertyNo"]["value"] != "")
      					{$Wert = "1";} else {$Wert = "0";}
      					break;
      				case "array":
      					$Wert = implode(",", $Properties["$PropertyNo"]["value"]);
      					break;
      				case "Schedule":
      					$Entries = $Properties["$PropertyNo"]["value"];
      					$Wert = "";
      					foreach ($Entries as $EntryNo => $Entry)
      					{
      						$Wert = $Wert.$EntryNo.":";
      						$Entries2 = $Entries["$EntryNo"][0];
      						foreach ($Entries2 as $EntryNo2 => $Entry2)
      						{
      							$Wert = $Wert." ".$EntryNo2.":".$Entries2[$EntryNo2];
      						}
      						$Wert = $Wert.", ";
      					}
      					break;
      				case "ErrorListChanges":	
      					$Wert = "Wert ist ein ErrorListChanges";
      					break;
      		 	}
      		 	$Description = $RequestList["$FieldName.$PropertyNo"];
      			debug_msg ("$FieldName.$PropertyNo = $Description = $Wert ($Typ)", $debug);
      			if($debug === false) {$r = "$r"."setreading vitoconnect100 $Description $Wert ;\n";}
      		 } 
      	} 
      }
      
      debug_msg ("\n$r", $debug);
      shell_exec('perl /opt/fhem/fhem.pl 7072 "'.$r.'"');
      
      return(0);
      
      function getCode() {
      	 global $client_id, $authorizeURL, $callback_uri;
      	 global $isiwebuserid, $isiwebpasswd;
      	 $url = "$authorizeURL?client_id=$client_id&scope=openid&redirect_uri=$callback_uri&response_type=code";
      	 $header = array("Content-Type: application/x-www-form-urlencoded");
      	 $curloptions = array(
              CURLOPT_URL => $url,
              CURLOPT_HTTPHEADER => $header,
              CURLOPT_SSL_VERIFYPEER => false,
              CURLOPT_RETURNTRANSFER => true,
              CURLOPT_USERPWD => "$isiwebuserid:$isiwebpasswd",
              CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
              CURLOPT_POST => true, 
              );
          $curl = curl_init();
          curl_setopt_array($curl, $curloptions);
          $response = curl_exec($curl);
          curl_close($curl);
          $matches = array();
          $pattern = '/code=(.*)"/';
          preg_match_all($pattern, $response, $matches);
          return ($matches[1][0]);
      }
      
      function getAccessToken($authorization_code) {
          global $token_url, $client_id, $client_secret, $callback_uri;
          global $isiwebuserid, $isiwebpasswd;
          $header = array("Content-Type: application/x-www-form-urlencoded;charset=utf-8");
          $params = array( 
              "client_id" => $client_id,
              "client_secret" => $client_secret,
              "code" => $authorization_code,
              "redirect_uri" => $callback_uri,
              "grant_type" => "authorization_code");
      
          $curloptions = array(
          	CURLOPT_URL => $token_url, 
          	CURLOPT_HEADER => false, 
          	CURLOPT_HTTPHEADER => $header, 
          	CURLOPT_SSL_VERIFYPEER => false, 
          	CURLOPT_RETURNTRANSFER => true, 
          	CURLOPT_POST => true, 
          	CURLOPT_POSTFIELDS => rawurldecode(http_build_query($params)));
      
          $curl = curl_init();
          curl_setopt_array($curl, $curloptions);
          $response = curl_exec($curl); 
          curl_getinfo($curl); 
          curl_close($curl);
      
           if ($response === false) {
           	 echo "Failed\n"; echo curl_error($curl);
         // } elseif (json_decode($response)->error) {
         //     echo "Error:\n"; echo $authorization_code; echo $response;
          }
          return json_decode($response)->access_token;
      }
      
      //    we can now use the access_token as much as we want to access protected resources
      function getResource($access_token, $api) {
          //echo "ok\n";
          $header = array("Authorization: Bearer {$access_token}");
          //var_dump($header);
          $curl = curl_init(); 
          curl_setopt_array($curl, array( 
      	    CURLOPT_URL => $api, 
         	 CURLOPT_HTTPHEADER => $header, 
         	 CURLOPT_SSL_VERIFYPEER => false, 
         	 CURLOPT_RETURNTRANSFER => true,
          ));
      
          $response = curl_exec($curl); 
          curl_close($curl);
      
          //return json_decode($response, true);
          return ($response);
      }
      
      function debug_msg($message, $debug) {
      	if ($debug) {
      		 echo "$message\n";
              }
      }
      
      ?>
      
      

      Erstellt einfach mit "nano /opt/fhem/vissmann.php" die Datei, copy und paste, setzt noch bei den beiden Parametern euren Usernamen(Email) und das Kennwort, und speichert mit ctrl-o und verlasst den Editor mit crtl-x.

      1. php script ausführbar machen mit chmod +x vissmann.php

      2. php script dem user fhem zuweisen mit chown vissmann.php fhem

      3. jetzt die restlichen Schritte, wie im FHEM-Forum beschrieben in FHEM ein Dummy anlegen und die Cron dazu einrichten(AT)

      https://forum.fhem.de/index.php/topic,8 … #msg849123

      1. jetzt kann man testen, ob das script funktioniert, es kann auch einfach in der console mit

      sudo php7.0 vissmann.php --debug -user username -passwd geheimespasswort

      aufgerufen werden

      1. jetzt, falls noch nicht geschehen, den iobroker.fhem-adapter installieren, ip, port eintragen, und sich freuen.
      1 Antwort Letzte Antwort
      0
      • A Offline
        A Offline
        as15
        schrieb am zuletzt editiert von
        #16

        Mega! Wenn wir hierfür nen Adapter hinbekommen könnten ohne den Umweg über FHEM wäre das noch praktikabler…

        Danke aber für die Anleitung!

        1 Antwort Letzte Antwort
        0
        • ? Offline
          ? Offline
          Ein ehemaliger Benutzer
          schrieb am zuletzt editiert von
          #17

          ja, das ist der Plan, da es vom Hersteller keine Api gibt, wollte ich erstmal was, das man überhaupt benutzen kann, und Viessmann hat in den letzten Monaten einiges an der Schnittstelle geändert, genau wie die App.

          Aber jetzt scheint da eine gewisse Ruhe eingekehrt zu sein, und man kann sich an die Umsetzung machen.

          1 Antwort Letzte Antwort
          0
          • R Offline
            R Offline
            radierer
            schrieb am zuletzt editiert von
            #18

            Wobei ich da Viessmann hinsichtlich der App auch nicht wirklich verstehe. Scheinbar wird ja die noch halbwegs brauchbare VitotrolPlus App gestrichen (im Play Store schon nicht mehr verfügbar) und stattdessen gibt es nur noch die ViCare Katastrophen App .. verstehe wer will. :roll:

            @ilovegym: An dich auf jeden Fall schonmal ein großes Dankeschön für deine Mühe. :)

            1 Antwort Letzte Antwort
            0
            • ? Offline
              ? Offline
              Ein ehemaliger Benutzer
              schrieb am zuletzt editiert von
              #19

              ich schau mal die Tage, ob ich das php nicht nach iobroker-javascript portiert bekomme.. mir macht nur diese Authentifizierung kopfschmerzen…

              1 Antwort Letzte Antwort
              0
              • R Offline
                R Offline
                radierer
                schrieb am zuletzt editiert von
                #20

                Das wäre sehr geil, wenn du das hinbekommen könntest. :D

                Zumal ich auch denke, dass Viessmann Heizungen mit Vitoconnect doch recht verbreitet sind und son Adapter für viele nützlich sein könnte.

                1 Antwort Letzte Antwort
                0
                • A Offline
                  A Offline
                  as15
                  schrieb am zuletzt editiert von
                  #21

                  Ich habe noch nie mit FHEM gearbeitet und habe in iobroker nun leider keine Werte in den States (States wurden aber generiert).

                  Also meine Frage zur Funktionsweise. Wie kommen die Werte von dem php-Skript in den Dummy? Verstehe die Verknüpfung leider nicht.

                  Edit: Habs nochmal nach der Anleitung gemacht. Jetzt geht’s <emoji seq="1f44d">👍</emoji> Danke

                  1 Antwort Letzte Antwort
                  0
                  • ? Offline
                    ? Offline
                    Ein ehemaliger Benutzer
                    schrieb am zuletzt editiert von
                    #22

                    Die Werte vom Script kommen über Telnet Port 7072 ( das ist so standard bei FHEM ), also prüfe, ob du telnet aktiv hast und port 7072 vom fhem offen ist ( das siehst du im fhem logfile, und mit netstat -npl kannst du das in der console sehen ).

                    Sollte das alles ok sein, und die Werte werden nicht automatisch aktualisiert, ist vielleicht beim anlegen des TA was schiefgelaufen.

                    Schaue da nochmal in den Beitrag von dem, der das Script geschrieben hat, der Absatz mit dem TA ist wichtig und da nicht vergessen, Username und Passwort anzugeben.

                    ( TA steht wohl für Time Automatision, also cron ;-) )

                    • befasse mich auch erst seit 3 Tagen mit fhem .. :-)
                    1 Antwort Letzte Antwort
                    0
                    • O Offline
                      O Offline
                      OMCastle
                      schrieb am zuletzt editiert von
                      #23

                      Hast Du schon Teile der Login-Routine nach JS versucht zu übersetzen?

                      ToDo liegt aus meiner Sicht dabei, die folgenden 3 PHP-Funktionen nach JavaScript zu übersetzen?!?

                      Gibt es hier einen JavaScript Spezi, der das umschreiben kann?

                      function getCode() {

                      global $client_id, $authorizeURL, $callback_uri;

                      global $isiwebuserid, $isiwebpasswd;

                      $url = "$authorizeURL?client_id=$client_id&scope=openid&redirect_uri=$callback_uri&response_type=code";

                      $header = array("Content-Type: application/x-www-form-urlencoded");

                      $curloptions = array(

                      CURLOPT_URL => $url,

                      CURLOPT_HTTPHEADER => $header,

                      CURLOPT_SSL_VERIFYPEER => false,

                      CURLOPT_RETURNTRANSFER => true,

                      CURLOPT_USERPWD => "$isiwebuserid:$isiwebpasswd",

                      CURLOPT_HTTPAUTH => CURLAUTH_BASIC,

                      CURLOPT_POST => true,

                      );

                      $curl = curl_init();

                      curl_setopt_array($curl, $curloptions);

                      $response = curl_exec($curl);

                      curl_close($curl);

                      $matches = array();

                      $pattern = '/code=(.*)"/';

                      preg_match_all($pattern, $response, $matches);

                      return ($matches[1][0]);

                      }

                      function getAccessToken($authorization_code) {

                      global $token_url, $client_id, $client_secret, $callback_uri;

                      global $isiwebuserid, $isiwebpasswd;

                      $header = array("Content-Type: application/x-www-form-urlencoded;charset=utf-8");

                      $params = array(

                      "client_id" => $client_id,

                      "client_secret" => $client_secret,

                      "code" => $authorization_code,

                      "redirect_uri" => $callback_uri,

                      "grant_type" => "authorization_code");

                      $curloptions = array(

                      CURLOPT_URL => $token_url,

                      CURLOPT_HEADER => false,

                      CURLOPT_HTTPHEADER => $header,

                      CURLOPT_SSL_VERIFYPEER => false,

                      CURLOPT_RETURNTRANSFER => true,

                      CURLOPT_POST => true,

                      CURLOPT_POSTFIELDS => rawurldecode(http_build_query($params)));

                      $curl = curl_init();

                      curl_setopt_array($curl, $curloptions);

                      $response = curl_exec($curl);

                      curl_getinfo($curl);

                      curl_close($curl);

                      if ($response === false) {

                      echo "Failed\n"; echo curl_error($curl);

                      // } elseif (json_decode($response)->error) {

                      // echo "Error:\n"; echo $authorization_code; echo $response;

                      }

                      return json_decode($response)->access_token;

                      }

                      // we can now use the access_token as much as we want to access protected resources

                      function getResource($access_token, $api) {

                      //echo "ok\n";

                      $header = array("Authorization: Bearer {$access_token}");

                      //var_dump($header);

                      $curl = curl_init();

                      curl_setopt_array($curl, array(

                      CURLOPT_URL => $api,

                      CURLOPT_HTTPHEADER => $header,

                      CURLOPT_SSL_VERIFYPEER => false,

                      CURLOPT_RETURNTRANSFER => true,

                      ));

                      $response = curl_exec($curl);

                      curl_close($curl);

                      //return json_decode($response, true);

                      return ($response);

                      }

                      Raspberrymatic auf Pi3 mit CUL für Eltako

                      • 30 HomeMatic Aktoren, 10 Eltako Aktoren

                      IOBroker auf OrangePi Plus 2e

                      • 30 Xiamoi, 5 Netatmo, VW Golf Skript, Viessmann Heizung, ICal, PluseCounter für Strom und Gas, Instar Kameras
                      1 Antwort Letzte Antwort
                      0
                      • thovidT Offline
                        thovidT Offline
                        thovid
                        schrieb am zuletzt editiert von
                        #24

                        Hallo zusammen, bin vor kurzem auch auf die php Skripte zur Anbindung der Viessmann API gestoßen, und da ich wie andere hier die Garantieverlängerung mitnehmen wollte und daher die vitroconnect dran habe, habe eine erste Version für einen ioBroker Adapter geschrieben. Das ganze kann hier: https://github.com/thovid/ioBroker.viessmannapi auf github gefunden werden, die eigentliche Verbindung mit dem Viessmann Server ist in eine eigenen Lib ausgelagert (https://github.com/thovid/node-viessmann-api-client)

                        Installation erfolgt über die github url, in den Einstellungen müssen Benutzername und Passwort des Viessmann Accounts eingetragen werden. Der Adapter fragt dann ein mal pro Minute die Werte der Heizung ab und legt diese in entsprechenden States ab.

                        Derzeit kann man noch nichts schalten über den Adapter, d.h. alle Werte sind rein lesend. Würde mich über Feedback, Bugreports und Verbesserungsvorschläge freuen (gerne auf Github).

                        Viele Grüße,

                        Thomas

                        1 Antwort Letzte Antwort
                        0
                        • ? Offline
                          ? Offline
                          Ein ehemaliger Benutzer
                          schrieb am zuletzt editiert von
                          #25

                          Hallo,

                          super, vielen Dank!! Ich hab ihn installiert, funktioniert auf Anhieb!

                          Finde die Daten etwas unübersichtlich sortiert, da in unter-unter-unter Datenpunkten.. aber das liegt wohl bei Viessmann an der Struktur..

                          ist mir auch egal, in welchem Pfad, Hauptsache, sie sind da :-) :mrgreen: :mrgreen:

                          Super!!

                          Achso, hab ihn auf Debug-Level installiert, und es treten auch keinerlei Fehler auf. Alles bestens hier. Kann leider kein Issue anlegen. :mrgreen: :mrgreen:

                          1 Antwort Letzte Antwort
                          0
                          • DutchmanD Offline
                            DutchmanD Offline
                            Dutchman
                            Developer Most Active Administrators
                            schrieb am zuletzt editiert von
                            #26

                            Nice wollte gerade damit anfangen dann kann ich den ja Skippen [emoji847]

                            Sent from my iPhone using Tapatalk

                            1 Antwort Letzte Antwort
                            0
                            • ? Offline
                              ? Offline
                              Ein ehemaliger Benutzer
                              schrieb am zuletzt editiert von
                              #27

                              @Dutchman:

                              Nice wollte gerade damit anfangen dann kann ich den ja Skippen [emoji847]

                              Sent from my iPhone using Tapatalk `

                              Ähm, wenn du Zeit und Lust hast, kannst du dir mal den Wifilight-Adapter vorknöpfen? Der braucht unbedingt n Update, damit er Alexa- und Material-Kompatibel wird.. sprich die Datenpunkte wie .color.temp, color.hue etc sollen erzeugt werden.. ausserdem hängt er sich ab und zu mal auf und braucht n Neustart.. :mrgreen:

                              1 Antwort Letzte Antwort
                              0
                              • DutchmanD Offline
                                DutchmanD Offline
                                Dutchman
                                Developer Most Active Administrators
                                schrieb am zuletzt editiert von
                                #28

                                Lol wenn icj WiFi light hätte währe das einfacher

                                Hast du dazu issued in github hinterlegt

                                Sent from my iPhone using Tapatalk

                                1 Antwort Letzte Antwort
                                0
                                • thovidT Offline
                                  thovidT Offline
                                  thovid
                                  schrieb am zuletzt editiert von
                                  #29

                                  Danke für's Ausprobieren, und schön, dass es läuft :-)

                                  @ilovegym:

                                  Finde die Daten etwas unübersichtlich sortiert, da in unter-unter-unter Datenpunkten.. aber das liegt wohl bei Viessmann an der Struktur..

                                  ist mir auch egal, in welchem Pfad, Hauptsache, sie sind da :-) :mrgreen: :mrgreen: `

                                  Ja, die Datenstruktur von Viessmann ist … interessant ;-) Da ich aber nicht weiß, wie die Daten bei anderen Heizungsinstallationen aussehen, hatte ich mich dazu entschieden, einfach das durchzureichen was der Viessmann Server liefert. Vielleicht fällt mir in Zukunft noch was schlaueres ein..

                                  Grüße

                                  1 Antwort Letzte Antwort
                                  0
                                  • R Offline
                                    R Offline
                                    RicoGesch
                                    schrieb am zuletzt editiert von
                                    #30

                                    Hallo,

                                    irgendwie bekomme ich den Adapter nicht installiert….

                                    Kann mir jemand helfen..?

                                    Danke...

                                    <code>$ ./iobroker url "https://github.com/thovid/ioBroker.viessmannapi" --debug
                                    install https://github.com/thovid/ioBroker.viessmannapi/tarball/master
                                    npm install https://github.com/thovid/ioBroker.viessmannapi/tarball/master --production --save --prefix "/opt/iobroker" (System call)
                                    npm
                                     WARN addRemoteGit Error: not found: gitnpm WARN addRemoteGit     at getNotFoundError (/usr/lib/node_modules/npm/node_modules/which/which.js:14:12)
                                    npm WARN addRemoteGit     at F (/usr/lib/node_modules/npm/node_modules/which/which.js:69:19)
                                    
                                    npm WARN addRemoteGit     at E (/usr/lib/node_modules/npm/node_modules/which/which.js:81:29)npm WARN addRemoteGit     at /usr/lib/node_modules/npm/node_modules/which/which.js:90:16
                                    npm WARN addRemoteGit     at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/index.js:44:5
                                    npm WARN addRemoteGit     at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/access.js:8:5
                                    npm WARN addRemoteGit     at FSReqWrap.oncomplete (fs.js:123:15)
                                    npm WARN addRemoteGit  git+https://github.com/thovid/node-viessmann-api-client.git resetting remote /root/.npm/_git-remotes/git-https-github-com-thovid-node-viessmann-api-client-git-8fdff86b because of error: { Error: not found: git
                                    npm WARN addRemoteGit     at getNotFoundError (/usr/lib/node_modules/npm/node_modules/which/which.js:14:12)
                                    npm
                                    
                                    WARN addRemoteGit
                                         at F (/usr/lib/node_modules/npm/node_modules/which/which.js:69:19)npm WARN addRemoteGit     at E (/usr/lib/node_modules/npm/node_modules/which/which.js:81:29)
                                    npm WARN addRemoteGit     at /usr/lib/node_modules/npm/node_modules/which/which.js:90:16
                                    npm WARN
                                     addRemoteGit     at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/index.js:44:5npm WARN addRemoteGit     at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/access.js:8:5
                                    npm WARN addRemoteGit     at FSReqWrap.oncomplete (fs.js:123:15) code: 'ENOGIT' }
                                    
                                    npm ERR! git clone --template=/root/.npm/_git-remotes/_templates --mirror https://github.com/thovid/node-viessmann-api-client.git /root/.npm/_git-remotes/git-https-github-com-thovid-node-viessmann-api-client-git-8fdff86b: undefinednpm ERR! git clone --template=/root/.npm/_git-remotes/_templates --mirror https://github.com/thovid/node-viessmann-api-client.git /root/.npm/_git-remotes/git-https-github-com-thovid-node-viessmann-api-client-git-8fdff86b: undefined
                                    
                                    npm
                                     ERR! Linux 4.9.0-7-amd64npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "https://github.com/thovid/ioBroker.viessmannapi/tarball/master" "--production" "--save" "--prefix" "/opt/iobroker"
                                    npm ERR! node v6.14.4
                                    npm ERR! npm  v3.10.10
                                    
                                    npm ERR! code ENOGIT
                                    
                                    npm ERR! not found: gitnpm ERR! 
                                    npm ERR! Failed using git.
                                    npm ERR! This is most likely not a problem with npm itself.
                                    npm ERR! Please check if you have git installed and in your PATH.
                                    
                                    npm ERR! Please include the following file with any support request:npm ERR!     /npm-debug.log
                                    
                                    process exited with code 0/code]</code>
                                    
                                    1 Antwort Letzte Antwort
                                    0
                                    • thovidT Offline
                                      thovidT Offline
                                      thovid
                                      schrieb am zuletzt editiert von
                                      #31

                                      Danke für's Ausprobieren! Für die Installation muss (derzeit noch) git auf dem host installiert sein. Entweder nachinstallieren (sudo apt-get install git), oder warten, bis https://github.com/thovid/node-viessman … t/issues/3 erledigt ist. Bis es soweit ist, nehme ich einen Hinweis in die Readme auf.

                                      1 Antwort Letzte Antwort
                                      0
                                      • R Offline
                                        R Offline
                                        radierer
                                        schrieb am zuletzt editiert von
                                        #32

                                        Mahlzeit,

                                        habs gerade erst gesehen das hier im Thread wieder Leben ist. Erstmal vielen Dank an @thovid! Ich werde den Adapter heute Abend dann auch mal direkt installieren und entsprechendes Feedback geben! :)

                                        [Edit]

                                        So denn .. hab den Adapter installiert. Lief soweit ohne Probleme. Die Werte werden korrekt aktualisiert.

                                        Hat jemand vllt schon ne Idee, wieso die Werte unter gas/consumption bei Warmwasser und Heizung gleich sind? Also zumindest bei mir werden da komplett die gleichen Werte angezeigt (Vitodens 242-F)?!

                                        Ansonsten wie schon gesagt ein großes Danke an thovid! :D

                                        1 Antwort Letzte Antwort
                                        0
                                        • O Offline
                                          O Offline
                                          OMCastle
                                          schrieb am zuletzt editiert von
                                          #33

                                          Auch von mir ein herzliches Dankeschön an thovid.

                                          Der Adapter läuft hervorragend!!!

                                          Evtl. Anrgegungen oder Ideen dann in github….

                                          Grüße

                                          Olli

                                          Raspberrymatic auf Pi3 mit CUL für Eltako

                                          • 30 HomeMatic Aktoren, 10 Eltako Aktoren

                                          IOBroker auf OrangePi Plus 2e

                                          • 30 Xiamoi, 5 Netatmo, VW Golf Skript, Viessmann Heizung, ICal, PluseCounter für Strom und Gas, Instar Kameras
                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          465

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe