NEWS
Auslesen der Viessmann Cloud für Heizung?!?
-
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.
-
ich schau mal die Tage, ob ich das php nicht nach iobroker-javascript portiert bekomme.. mir macht nur diese Authentifizierung kopfschmerzen…
-
Das wäre sehr geil, wenn du das hinbekommen könntest.
Zumal ich auch denke, dass Viessmann Heizungen mit Vitoconnect doch recht verbreitet sind und son Adapter für viele nützlich sein könnte.
-
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
-
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 ..
-
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);
}
-
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
-
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:
-
Nice wollte gerade damit anfangen dann kann ich den ja Skippen [emoji847]
Sent from my iPhone using Tapatalk
-
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:
-
Lol wenn icj WiFi light hätte währe das einfacher
Hast du dazu issued in github hinterlegt
Sent from my iPhone using Tapatalk
-
Danke für's Ausprobieren, und schön, dass es läuft
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
-
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>
-
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.
-
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!
-
Auch von mir ein herzliches Dankeschön an thovid.
Der Adapter läuft hervorragend!!!
Evtl. Anrgegungen oder Ideen dann in github….
Grüße
Olli
-
Ich freue mich schon auf den Adapter
Ich hoffe Github install kommt bald
Gesendet von iPad mit Tapatalk Pro
-
Danke euch für's ausprobieren!
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)?! `
Das frage ich mich auch, ist bei mir auch so. Sobald die Basisfunktionalitäten im Adapter umgesetzt sind, will ich mich mal mit den Werten im Detail beschäftigen und z.B. mit den Daten ablgeichen, die direkt über die Heizung auslesbar sind… -
Das frage ich mich auch, ist bei mir auch so. Sobald die Basisfunktionalitäten im Adapter umgesetzt sind, will ich mich mal mit den Werten im Detail beschäftigen und z.B. mit den Daten ablgeichen, die direkt über die Heizung auslesbar sind… `
Ich könnte mir vorstellen, dass Viessmann da irgendwo ne Formel hinterlegt hat, die aufgrund Pumpendrehzahl bzw. -laufzeit, eingestellten Temperaturen etc. die einzelnen Verbräuche rechnet?! Bei der Darstellung des Solarertrages wird das ja ähnlich gemacht .. der wird auch nur anhand von Drehzahl und Dauer der Solarkreispumpe errechnet.
-
Der Adapter funktioniert super und das auf Anhieb. Aber leider wird für meine Kombination aus VITOTRONIC 200 (Typ KO2B) und VITORODENS 222-F (Typ BS2A) der wichtigste Wert nicht angezeigt: die Brennerstunden. Die brauche ich aber um den Ölverbrauch zu berechnen.
Jetzt muss ich leider doch wieder den Raspi mit vcontrold anschließen.