<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Thema "Betreff: Using Node Red to visualize ViCare data" in The Viessmann API</title>
    <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/210444#M500</link>
    <description>&lt;P&gt;Hello Daniel,&lt;/P&gt;&lt;P&gt;thank you very much for your motivation feedback. Yeah, I have forgotten to mention, that all my Viessmann codes reside in one flow tab - hence the &lt;EM&gt;flow.get&lt;/EM&gt; statements.&lt;/P&gt;&lt;P&gt;I'll also have a look into InfluxDB and Grafana as Node-Red keeps forgetting historical values as soon as you restart the server or the node-red application.&lt;/P&gt;&lt;P&gt;Kind regards&lt;/P&gt;&lt;P&gt;Chris&lt;/P&gt;</description>
    <pubDate>Tue, 11 Jan 2022 11:09:03 GMT</pubDate>
    <dc:creator>CaCicala</dc:creator>
    <dc:date>2022-01-11T11:09:03Z</dc:date>
    <item>
      <title>Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/195606#M364</link>
      <description>&lt;P&gt;The ViCare App is nice and easy to use, however not really good at visualizing things.&lt;/P&gt;&lt;P&gt;So I chose &lt;STRONG&gt;Node Red&lt;/STRONG&gt; to construct a number of dashboards for my Vitodens installation that has additional Viessmann thermal panels and a fireplace attached to the heating system's 1000 litre buffer.&lt;/P&gt;&lt;P&gt;Node-Red allows constructing simple to quite complex data-flows with only a minimal programming effort. One of the key features is the construction of dashboards to visualize and manipulate data without in depth knowledge of html, CSS etc. Basic Javascript experience is helpful however.&lt;/P&gt;&lt;P&gt;I'm just a hobbyist, no professional programmer so bear with me in case something seems strange, unclear or too trivial.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CaCicala_0-1636386292917.png" style="width: 238px;"&gt;&lt;img src="https://community.viessmann.de/t5/image/serverpage/image-id/7207i240F3EA012D0611B/image-dimensions/238x431?v=v2" width="238" height="431" role="button" title="CaCicala_0-1636386292917.png" alt="CaCicala_0-1636386292917.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Refreshing the Access Token&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I am assuming that you already have generated an access token and further on the static refresh token. So, we can start by enabling Node Red to refresh the access token regularly and in time before it expires - e.g., every 59 minutes. See refreshAccessToken.json below.&lt;/P&gt;&lt;P&gt;Flow variables &lt;EM&gt;accessToken&lt;/EM&gt;, &lt;EM&gt;deviceID&lt;/EM&gt;, &lt;EM&gt;installationID&lt;/EM&gt;, and &lt;EM&gt;gatewaySerial&lt;/EM&gt; are used to store the respective values. The latter three values are static and are derived from the “getting started” preparation steps. In the example shown here, I have used generic values.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CaCicala_1-1636386292921.png" style="width: 733px;"&gt;&lt;img src="https://community.viessmann.de/t5/image/serverpage/image-id/7208i924DF18A9C0708EA/image-dimensions/733x110?v=v2" width="733" height="110" role="button" title="CaCicala_1-1636386292921.png" alt="CaCicala_1-1636386292921.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The “Extract Refresh Token” branch is for informational purposes only.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Request Authorization&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;All of the variables necessary for authorizing the user are used in my “universal header node”. They prime the http request that is retrieving data from the API. It is a function node consisting of the following Java Script snippet:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;var atoken = flow.get('accessToken')
msg.headers = {Authorization: "Bearer "+ atoken}
msg.installationID = flow.get('installationID');
msg.gatewaySerial = flow.get('gatewaySerial');
msg.deviceId = flow.get('deviceID');
return msg;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;No matter by which request you retrieve data from the API using Node-Red, the method is always through a http request node.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Feature overview&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;This is a good continuation point after you’ve solved the preliminaries. The Feature Overview contains all parameters that are available from your specific installation – i.e. it varies from customer to customer. It helps to select the features that you want to observe and/or manipulate.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CaCicala_2-1636386292923.png" style="width: 754px;"&gt;&lt;img src="https://community.viessmann.de/t5/image/serverpage/image-id/7209iFA3077965A03FAB3/image-dimensions/754x49?v=v2" width="754" height="49" role="button" title="CaCicala_2-1636386292923.png" alt="CaCicala_2-1636386292923.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The timestamp is used to trigger the flow; the universal header is described above; the http request “Read Feature List” calls the URL &lt;A href="https://api.viessmann.com/iot/v1/equipment/installations/%7b%7binstallationID%7d%7d/gateways/%7b%7bgatewaySerial%7d%7d/devices/%7b%7bdeviceId%7d%7d/features/" target="_blank" rel="noopener"&gt;https://api.viessmann.com/iot/v1/equipment/installations/{{installationID}}/gateways/{{gatewaySerial}}/devices/{{deviceId}}/features/&lt;/A&gt; and is configured as follows:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CaCicala_3-1636386292929.png" style="width: 400px;"&gt;&lt;img src="https://community.viessmann.de/t5/image/serverpage/image-id/7210i2D0F1C0AA91DCA3C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="CaCicala_3-1636386292929.png" alt="CaCicala_3-1636386292929.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The msg.payload of debug node “Feature List” contains a large JSON structure that can be analysed by using the debug feature of Node Red. Alternatively a JSON Viewer can be used (Firefox, Notepad++ with JSON plugin etc.)&lt;/P&gt;&lt;P&gt;See attached: FeatureOverviewRequest.json&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Reading only few datapoints&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;As you probably know, there is a an access limitation of 1440 per 24h. If you’re interested in a few data points only and don’t need to update your data very often, direct feature access by URL is the easiest way.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CaCicala_4-1636386292931.png" style="width: 770px;"&gt;&lt;img src="https://community.viessmann.de/t5/image/serverpage/image-id/7211iD98FEC370161C63B/image-dimensions/770x52?v=v2" width="770" height="52" role="button" title="CaCicala_4-1636386292931.png" alt="CaCicala_4-1636386292931.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To retrieve the common supply temperature for example, the http request node “Read Feature” uses the following URL: &lt;A href="https://api.viessmann-platform.io/iot/v1/equipment/installations/%7b%7binstallationID%7d%7d/gateways/%7b%7bgatewaySerial%7d%7d/devices/0/features/heating.boiler.sensors.temperature.commonSupply" target="_blank" rel="noopener"&gt;https://api.viessmann-platform.io/iot/v1/equipment/installations/{{installationID}}/gateways/{{gatewaySerial}}/devices/0/features/heating.boiler.sensors.temperature.commonSupply&lt;/A&gt;&lt;BR /&gt;The rest of the http request node is configured as in the chapter above.&lt;/P&gt;&lt;P&gt;As a result, the API delivers a small JSON object from which we can extract the datapoint of interest by using another function node:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;msg.payload=msg.payload.data.properties.value.value;
msg.topic="Common Supply";
return msg;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The msg.topic is optional but comes in handy when generating multi value graph charts.&lt;/P&gt;&lt;P&gt;See attached file: singleRequest.json&lt;/P&gt;&lt;P&gt;If you would trigger this request every minute, you’d use up all the 1440 accesses per day; furthermore, you wouldn’t be able to refresh the access token anymore. I’ve been told, also the Vicare App would be blocked – to be verified.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Reading more datapoints more often&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Since the installation features requests returns all datapoints available for your specific installation in one go, you can access many more datapoints by performing only one single request.&lt;/P&gt;&lt;P&gt;In my specific case the installation features JSON consists of 165kB which creates quite a big data footprint in relation to the data actually used.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CaCicala_5-1636386292936.png" style="width: 769px;"&gt;&lt;img src="https://community.viessmann.de/t5/image/serverpage/image-id/7212i76543ED541D12E1C/image-dimensions/769x175?v=v2" width="769" height="175" role="button" title="CaCicala_5-1636386292936.png" alt="CaCicala_5-1636386292936.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The first 3 nodes are identical to the ones in chapter Feature Overview&lt;/P&gt;&lt;P&gt;The Feature JSON structure mainly consists of a data array with – in my case – 150 elements. You could now address each feature of interest by using its specific index.&lt;/P&gt;&lt;P&gt;WW Solar would have index 92 and can be extracted like &lt;FONT face="courier new,courier"&gt;msg.payload=msg.payload.data[92].properties.value.value;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;However, the index is different for each installation and is prone to vary in case Viessmann decides to add new datapoints to the API.&lt;/P&gt;&lt;P&gt;In order to be reliable, we have to parse the JSON to find the appropriate elements. This can be achieved by the &lt;EM&gt;findIndex&lt;/EM&gt; function of Javascript. It retrieves the index number for any given feature name which is then used to access the feature:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;featureArray=msg.payload.data;
idx = featureArray.findIndex((element) =&amp;gt; element.feature ===  'heating.solar.sensors.temperature.dhw');
msg.payload=msg.payload.data[idx].properties.value.value;
msg.topic = "WWSolar"; //optional - necessary for multi value charts
return msg;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I hope that you find this useful. Thanks to Michael Hanna for his support!&lt;/P&gt;&lt;P&gt;Christoph Krzikalla&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;JSON files for copy &amp;amp; paste into Node Red - the forum doesn't allow upload of text or JSON files...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;refreshAccessToken.json&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;[
    {
        "id": "eb3f132b.f55c48",
        "type": "tab",
        "label": "Heatingsystem",
        "disabled": false,
        "info": ""
    },
    {
        "id": "8e64bcb1.3a6198",
        "type": "function",
        "z": "eb3f132b.f55c48",
        "name": "set payload and headers",
        "func": "msg.payload = \"grant_type=refresh_token&amp;amp;client_id=yourClientID&amp;amp;refresh_token=theRefreshToken\";\nmsg.headers = {};\nmsg.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 410,
        "y": 160,
        "wires": [
            [
                "8eed9ce.e975a6"
            ]
        ]
    },
    {
        "id": "2f0fb613.30912a",
        "type": "inject",
        "z": "eb3f132b.f55c48",
        "name": "Refresh Access Token",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "3540",
        "crontab": "",
        "once": true,
        "onceDelay": "",
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 170,
        "y": 160,
        "wires": [
            [
                "8e64bcb1.3a6198"
            ]
        ]
    },
    {
        "id": "8eed9ce.e975a6",
        "type": "http request",
        "z": "eb3f132b.f55c48",
        "name": "refreshtoken",
        "method": "POST",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "https://iam.viessmann.com/idp/v2/token",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 610,
        "y": 160,
        "wires": [
            [
                "caf45d2a.5b914"
            ]
        ]
    },
    {
        "id": "caf45d2a.5b914",
        "type": "function",
        "z": "eb3f132b.f55c48",
        "name": "Extract Token",
        "func": "msg.payload=msg.payload.access_token;\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 820,
        "y": 160,
        "wires": [
            [
                "6c93aa04.283ec4",
                "b330b072.f48968"
            ]
        ]
    },
    {
        "id": "6c93aa04.283ec4",
        "type": "debug",
        "z": "eb3f132b.f55c48",
        "name": "access_token",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1040,
        "y": 220,
        "wires": []
    },
    {
        "id": "b330b072.f48968",
        "type": "change",
        "z": "eb3f132b.f55c48",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "accessToken",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            },
            {
                "t": "set",
                "p": "deviceID",
                "pt": "flow",
                "to": "0",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "installationID",
                "pt": "flow",
                "to": "123456",
                "tot": "num"
            },
            {
                "t": "set",
                "p": "gatewaySerial",
                "pt": "flow",
                "to": "yourGatewaySerialNo",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1040,
        "y": 160,
        "wires": [
            []
        ]
    }
]&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;&lt;FONT face="arial,helvetica,sans-serif"&gt;featureOverviewRequest.json&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;[
    {
        "id": "28ce4ad9.56b3ee",
        "type": "inject",
        "z": "60e7ff21.b1ce48",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 140,
        "y": 480,
        "wires": [
            [
                "efd9bd12.35253"
            ]
        ]
    },
    {
        "id": "7c34263e.a7791",
        "type": "http request",
        "z": "60e7ff21.b1ce48",
        "name": "Read Feature List",
        "method": "GET",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "https://api.viessmann.com/iot/v1/equipment/installations/{{installationID}}/gateways/{{gatewaySerial}}/devices/{{deviceId}}/features/",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 550,
        "y": 480,
        "wires": [
            [
                "92f53cc2.4ba79"
            ]
        ]
    },
    {
        "id": "efd9bd12.35253",
        "type": "function",
        "z": "60e7ff21.b1ce48",
        "name": "Universal Header",
        "func": "var atoken = flow.get('accessToken')\nmsg.headers = {\n    Authorization: \"Bearer \"+ atoken\n}\nmsg.installationID = flow.get('installationID');\nmsg.gatewaySerial = flow.get('gatewaySerial');\nmsg.deviceId = flow.get('deviceID');\nreturn msg;\n\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 330,
        "y": 480,
        "wires": [
            [
                "7c34263e.a7791"
            ]
        ]
    },
    {
        "id": "92f53cc2.4ba79",
        "type": "debug",
        "z": "60e7ff21.b1ce48",
        "name": "Feature List (JSON)",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "true",
        "targetType": "full",
        "statusVal": "",
        "statusType": "auto",
        "x": 780,
        "y": 480,
        "wires": []
    }
]&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;&lt;FONT face="arial,helvetica,sans-serif"&gt;singleRequest.json&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;[
    {
        "id": "619f461a.3caf38",
        "type": "http request",
        "z": "60e7ff21.b1ce48",
        "name": "Read Feature",
        "method": "GET",
        "ret": "obj",
        "paytoqs": "ignore",
        "url": "https://api.viessmann-platform.io/iot/v1/equipment/installations/{{installationID}}/gateways/{{gatewaySerial}}/devices/0/features/heating.boiler.sensors.temperature.commonSupply",
        "tls": "",
        "persist": false,
        "proxy": "",
        "authType": "",
        "x": 600,
        "y": 1600,
        "wires": [
            [
                "ea81b906.b45e3"
            ]
        ]
    },
    {
        "id": "996c1677.deb32",
        "type": "debug",
        "z": "60e7ff21.b1ce48",
        "name": "Example",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 920,
        "y": 1600,
        "wires": []
    },
    {
        "id": "954542bb.556178",
        "type": "function",
        "z": "60e7ff21.b1ce48",
        "name": "Universal Header",
        "func": "var atoken = flow.get('accessToken')\nmsg.headers = {\n    Authorization: \"Bearer \"+ atoken\n}\nmsg.installationID = flow.get('installationID');\nmsg.gatewaySerial = flow.get('gatewaySerial');\nmsg.deviceId = flow.get('deviceID');\nreturn msg;\n\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 410,
        "y": 1600,
        "wires": [
            [
                "619f461a.3caf38"
            ]
        ]
    },
    {
        "id": "8ab5e8c0.40a968",
        "type": "inject",
        "z": "60e7ff21.b1ce48",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 240,
        "y": 1600,
        "wires": [
            [
                "954542bb.556178"
            ]
        ]
    },
    {
        "id": "ea81b906.b45e3",
        "type": "function",
        "z": "60e7ff21.b1ce48",
        "name": "Extract Value",
        "func": "msg.payload=msg.payload.data.properties.value.value;\nmsg.topic=\"Common Supply\";\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 770,
        "y": 1600,
        "wires": [
            [
                "996c1677.deb32"
            ]
        ]
    }
]&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 08 Nov 2021 18:25:55 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/195606#M364</guid>
      <dc:creator>CaCicala</dc:creator>
      <dc:date>2021-11-08T18:25:55Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/195930#M368</link>
      <description>&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;P&gt;Unfortunately, the forum server nailed my above text shut so I can't update it anymore.&lt;/P&gt;&lt;P&gt;I forgot to write that node red and the whole logic is running on a Raspberry Pi 3. This enables me to also attach one wire sensors and other things to retrieve datapoints (via MQTT) from other appliances or where ViCare doesn't provide them yet.&lt;/P&gt;&lt;P&gt;E.g. my 1000 litre hot water storage is a Viessmann (Italia) Solarcell HSK 1000 Combination buffer (dhw and heating) which is connected to the Vitotronic 200. However the necessary datapoints for the four sensors are not (yet) provided. I hoped it would be &lt;SPAN class=""&gt;heating.dhw.sensors.temperature.hotWaterStorage&lt;/SPAN&gt;.xxx but this seems for dhw only. ==&amp;gt; &lt;A href="https://www.viessmann-community.com/t5/user/viewprofilepage/user-id/29136" target="_blank" rel="noopener"&gt;@MichaelHanna&lt;/A&gt; --&amp;gt; Feature request &lt;span class="lia-unicode-emoji" title=":leicht_lächelndes_Gesicht:"&gt;🙂&lt;/span&gt;&lt;/P&gt;I simply plugged additional sensors into the sensor holes of the buffer and connected them to my Raspberry Pi.&lt;BR /&gt;&lt;P&gt;Christoph Krzikalla&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 10 Nov 2021 08:12:36 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/195930#M368</guid>
      <dc:creator>CaCicala</dc:creator>
      <dc:date>2021-11-10T08:12:36Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/210260#M497</link>
      <description>&lt;P&gt;Thank you so much! Finally, this works perfect for me.&lt;/P&gt;&lt;P&gt;I had to tinker around for a few days because of a very trivial mistake (MY mistake, not yours).&lt;/P&gt;&lt;P&gt;I imported the three Flows as separated flows via Flow-JSON-Import in Node Red and was wondering why getting "Token invalid" answers from the server. After Changing flow.get('accessToken') to&amp;nbsp;global.get('accessToken') my problems disappeared &lt;span class="lia-unicode-emoji" title=":leicht_lächelndes_Gesicht:"&gt;🙂&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now I just have to implement the multiple request of more than value ("read more datapoints" as described above) and put the values in my local InfluxDB to feed my Grafana graphs.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;Again, big kudos. "Re-Engineering" your work was finally trivial but I never could build this from scratch by my own!&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;Kind regards, Daniel&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 10 Jan 2022 16:15:34 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/210260#M497</guid>
      <dc:creator>Saint</dc:creator>
      <dc:date>2022-01-10T16:15:34Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/210444#M500</link>
      <description>&lt;P&gt;Hello Daniel,&lt;/P&gt;&lt;P&gt;thank you very much for your motivation feedback. Yeah, I have forgotten to mention, that all my Viessmann codes reside in one flow tab - hence the &lt;EM&gt;flow.get&lt;/EM&gt; statements.&lt;/P&gt;&lt;P&gt;I'll also have a look into InfluxDB and Grafana as Node-Red keeps forgetting historical values as soon as you restart the server or the node-red application.&lt;/P&gt;&lt;P&gt;Kind regards&lt;/P&gt;&lt;P&gt;Chris&lt;/P&gt;</description>
      <pubDate>Tue, 11 Jan 2022 11:09:03 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/210444#M500</guid>
      <dc:creator>CaCicala</dc:creator>
      <dc:date>2022-01-11T11:09:03Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/210821#M502</link>
      <description>&lt;P&gt;Data-Export to InfluxDB works now, too.&lt;/P&gt;&lt;P&gt;I chose to install "node-red-contrib-influxdb" to the palette, which adds three new nodes. I use "influxdb out".&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;U&gt;Initial configuration&lt;/U&gt; of the node is necessary:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt; --&amp;gt; any name you like&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Server&lt;/STRONG&gt; --&amp;gt; Name of server, Version (I use 2.0), URL (IP + Port), Token&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Organisation&lt;/STRONG&gt; --&amp;gt; depends on InfluxDB configuration&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Bucket&lt;/STRONG&gt; --&amp;gt; the "dataspace" for this special purpose in InfluxDB&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Meassurement&lt;/STRONG&gt; --&amp;gt; free to choose. If Meassurement does not exist in InfluxDB, Influx will create this on demand&lt;/LI&gt;&lt;LI&gt;no "&lt;EM&gt;Verify server certificate"&lt;/EM&gt; (didn't try with it, tried to avoide any extra authentification issues für testing)&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;U&gt;Configuration of InfluxDB&lt;/U&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;you need a &lt;STRONG&gt;running InfluxDB&lt;/STRONG&gt; System (my Influx is running as a docker container) including initial setup (user, organisation, etc)&lt;/LI&gt;&lt;LI&gt;create a &lt;STRONG&gt;new bucket&lt;/STRONG&gt;, for example "viessmann-data"&lt;/LI&gt;&lt;LI&gt;create a &lt;STRONG&gt;new API-token&lt;/STRONG&gt;, you will need this für node configuration in node red (see above)&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Connecting Node Red and InfluxDB by just dragging output of your "data extraction function" directly to the "InfluxDB out" node. How simple is that &lt;span class="lia-unicode-emoji" title=":leicht_lächelndes_Gesicht:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hint: My Node Red and influxDB both run as docker container. By default docker uses NAT and the containers are NOT directly connected to the host network. Therefore it is necessary to use IP and Port of the Docker host for configuration of the InfluxDB node. Might be unnecessary in other use cases, for example Node Red and DB as native instances / services on the on the same host without docker (then "localhost" should work, too).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Whats the benefit?&lt;/P&gt;&lt;P&gt;On the one hand it is kind of "onpremise copy" of the Viessmann VCare App (in lack of Vitoconnect opto interface the data is of course exclusively coming from Viessmann servers.) . Check system status from any web browser in local network, faster polling the data (ViCare App seems to need aprox. 10 seconds to connect on load), etc&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;On the other hand (that is the main purpose for my personal needs): having all the data in timeseries in in InfluxDB I can now correlate them with other data generated in my&amp;nbsp;heterogeneous smarthome ecosystem.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My Viessmann Vitodens with solar, 600 litre buffer, etc have been installed just a few weeks ago. Now I can overlay Data-graphs for example flow temperature of the burner with valve status of my Homematic room thermostats. So it is possible to see, if Vitodens generates too much heat to heat up the rooms to desired temperature (room keeps warm but valves nearly closed). Or check modulation rate in correlation with room temperature &amp;nbsp;and outside temperature.&lt;/P&gt;&lt;P&gt;This helps me to adjust the heating curves (was able to flatten the curve from 1,4 to 1,2) which will lower gas consumption (of course gas consumption ist written in InfluxDB too, including a conversion to "Euro per day" to keep me scared during the ongoing raise of energy prices), etc &lt;span class="lia-unicode-emoji" title=":leicht_lächelndes_Gesicht:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards, Daniel&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 12 Jan 2022 15:46:00 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/210821#M502</guid>
      <dc:creator>Saint</dc:creator>
      <dc:date>2022-01-12T15:46:00Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/210850#M503</link>
      <description>&lt;P&gt;Hello Daniel,&lt;/P&gt;&lt;P&gt;great stuff! I'll look into it, as soon as I can find the time.&lt;/P&gt;&lt;P&gt;So far I have no intention to work with docker as virtualization tends to complicate matters. In my humble opinion, it is cheaper to buy another Raspberry Pi if I want to set up different scenarios (e.g. one for my Webserver, Owncloud and gateway functionality, another one for IoT stuff etc.). But who knows...&lt;/P&gt;&lt;P&gt;In case you're interested, have a look at my Raspberry Pi Blog &lt;A href="https://rustimation.eu" target="_blank" rel="noopener"&gt;https://rustimation.eu&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Rgds&lt;/P&gt;&lt;P&gt;Chris&lt;/P&gt;</description>
      <pubDate>Wed, 12 Jan 2022 15:57:43 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/210850#M503</guid>
      <dc:creator>CaCicala</dc:creator>
      <dc:date>2022-01-12T15:57:43Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222249#M579</link>
      <description>&lt;P&gt;Hallo ihr beiden&lt;/P&gt;&lt;P&gt;Ich versuche grade es etwas nachzuvollziehen wie dies mit dem Token funktioniert, aber ich steige nicht dahinter. In dem DeveloperPortal von Viessmann habe ich doch nur eine ID erstellen können, wo kommen denn die anderen Werte her? GatewaySerial, DeviceID etc.&lt;/P&gt;&lt;P&gt;MfG&lt;/P&gt;&lt;P&gt;Björn&lt;/P&gt;</description>
      <pubDate>Mon, 28 Feb 2022 09:15:46 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222249#M579</guid>
      <dc:creator>Bjoern-84</dc:creator>
      <dc:date>2022-02-28T09:15:46Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222261#M580</link>
      <description>&lt;P&gt;Hallo Björn,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;nach dem Erstellen der ID musst Du erst einmal einen Access Token und Refresh Token einreichten, bzw abfragen, damit die API überhaupt angefragt werden kann. Das ist alles in der Dokumentation beschrieben:&lt;/P&gt;&lt;P&gt;&lt;A href="https://developer.viessmann.com/en/introduction" target="_blank" rel="noopener"&gt;https://developer.viessmann.com/en/introduction&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://developer.viessmann.com/de/doc/getting-started" target="_blank" rel="noopener"&gt;https://developer.viessmann.com/de/doc/getting-started&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://developer.viessmann.com/en/doc/authentication" target="_blank" rel="noopener"&gt;https://developer.viessmann.com/en/doc/authentication&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Als Nächstes muss man für die Abfrage der Datenpunkte diese drei Parameter ermitteln:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Installation ID&amp;nbsp;&lt;/LI&gt;&lt;LI&gt;gateway serial&lt;/LI&gt;&lt;LI&gt;DeviceID&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Diese sind statisch und können dann dauerhaft für die Abfragen verwendet werden. Man muss sie halt nur einmal initial ermitteln, z.B. mit Curl oder auch mit Node Red und das JSON-Objekt dann auswerten.&lt;/P&gt;&lt;P&gt;Ist im Detail hier erläutert:&lt;/P&gt;&lt;P&gt;&lt;A href="https://developer.viessmann.com/en/doc/iot/overview" target="_blank" rel="noopener"&gt;https://developer.viessmann.com/en/doc/iot/overview&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Die eigentliche Abfrage der Messpunkte erfolgt dann, wie oben unter&amp;nbsp;&lt;STRONG&gt;Reading only few datapoints&amp;nbsp;&lt;/STRONG&gt;beschrieben.&lt;/P&gt;&lt;P&gt;Die Antwort der API auf die Abfrage ist im ein sehr großes JSON-Objekt mit allen verfügbaren Datenpunkten.&lt;/P&gt;&lt;P&gt;&lt;A href="https://developer.viessmann.com/en/doc/iot/data-points" target="_blank" rel="noopener"&gt;https://developer.viessmann.com/en/doc/iot/data-points&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Chris hat dann m.E. die gute Idee gehabtmregelmäßig das ganze Objekt zu ziehen und lokal mit Node Red sich die interessanten Datenpunkte für die eigenen Zwecke rauszusuchen. Das minimiert die API-Abrufe. Ich habe das dann nur nach meinem Bedarf angepasst und verfeinert. Du kannst die Werte in einem Node Red Dashboard anzeigen lassen, in eine DB schreiben, per MQTT irgendwo hinpusten, usw usw. Die Möglichkeiten sind dann nicht mehr limitiert, wenn die Daten einmal vorhanden sind &lt;span class="lia-unicode-emoji" title=":leicht_lächelndes_Gesicht:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Freundlicher Gruß,&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 28 Feb 2022 10:36:24 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222261#M580</guid>
      <dc:creator>Saint</dc:creator>
      <dc:date>2022-02-28T10:36:24Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222318#M581</link>
      <description>&lt;P&gt;&lt;A href="https://www.viessmann-community.com/t5/user/viewprofilepage/user-id/40855" target="_blank"&gt;@CaCicala&lt;/A&gt;&amp;nbsp;Thank you very much. Without your detailed description I would never have been able to build this myself. Meanwhile it works and I only have to extract the relevant values.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.viessmann-community.com/t5/user/viewprofilepage/user-id/45558" target="_blank"&gt;@Saint&lt;/A&gt;&amp;nbsp;Würdest du deinen Flow teilen? Ich bin ein absoluter Anfänger in node-red und froh, dass die Tokens jetzt endlich sauber funktionieren. Dein Flow sieht ziemlich genau nach dem aus, was ich auch machen wollte und die InfluxDB wäre für mich ebenfalls hilfreich.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.viessmann-community.com/t5/user/viewprofilepage/user-id/41749" target="_blank"&gt;@Bjoern-84&lt;/A&gt;&amp;nbsp;Ich habe da auch eine Weile gebraucht. Im Endeffekt habe den Authorization Request wie hier in Step 1 beschrieben gemacht:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://developer.viessmann.com/de/doc/authentication" target="_blank" rel="nofollow noopener noreferrer"&gt;https://developer.viessmann.com/de/doc/authentication&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Achtung: Unbedingt das Ende der Seite bzgl. "Zugriffstoken erneuern" beachten: "scope=IoT%20User%20offline_access"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Anschließend habe ich Chris' Flow&amp;nbsp;refreshAccessToken.json kopiert und ein bisschen umgebaut. Set Payload and Headers sieht dann etwa so aus:&lt;/P&gt;&lt;P data-unlink="true"&gt;msg.payload = "grant_type=authorization_code&amp;amp;client_id=&amp;lt;deineOAuthClientID&amp;gt;&amp;amp;redirect_uri=http://localhost:4200/&amp;amp;code_verifier=&amp;lt;codeChallengeDesAuthorizationRequests&amp;gt;&amp;amp;code=&amp;lt;CodeDerAuthorizationResponse&amp;gt;";&lt;BR /&gt;msg.headers = {};&lt;BR /&gt;msg.headers['Content-Type'] = 'application/x-www-form-urlencoded';&lt;/P&gt;&lt;P&gt;return msg;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Als Antwort bekommst du dann refresh_token, womit du du ziemlich einfach mit den Flows von Chris weiterarbeiten kannst, um die Installationen, Gateways und Devices zu holen (s. auch&amp;nbsp;&lt;A href="https://developer.viessmann.com/de/doc/iot/overview" target="_blank"&gt;https://developer.viessmann.com/de/doc/iot/overview&lt;/A&gt;). Und vom device bekommst du dann die einzelnen Werte...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Allen nochmals besten Dank &amp;amp; viele Grüße&lt;/P&gt;&lt;P&gt;Danny&lt;/P&gt;</description>
      <pubDate>Mon, 28 Feb 2022 13:01:18 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222318#M581</guid>
      <dc:creator>cb1000r</dc:creator>
      <dc:date>2022-02-28T13:01:18Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222320#M582</link>
      <description>&lt;P&gt;Super, freut mich, wenn meine Lösung euch weitergeholfen hat.&lt;/P&gt;&lt;P&gt;Viele Grüße vom Gardasee&lt;/P&gt;&lt;P&gt;Chris&lt;/P&gt;</description>
      <pubDate>Mon, 28 Feb 2022 13:08:44 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222320#M582</guid>
      <dc:creator>CaCicala</dc:creator>
      <dc:date>2022-02-28T13:08:44Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222548#M583</link>
      <description>&lt;P&gt;Danke Leute, jetzt hab sogar ich es verstanden und es scheint auch zu laufen. Hab jetzt Testweise meine 3 verschiedenen Systeme KNX, Modbus und die Viessmann Heizung stichpunktartig im Node-Red. Verbindung zur InfluxDB und auch wenn benötigt auf einen OPC-UA Server scheint auch zu funktionieren. Wie bekomme ich Schreibzugriffe auf die Anlage hin?&lt;/P&gt;&lt;P&gt;Nochmals super vielen Dank&lt;/P&gt;&lt;P&gt;MfG&lt;/P&gt;</description>
      <pubDate>Tue, 01 Mar 2022 14:40:10 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222548#M583</guid>
      <dc:creator>Bjoern-84</dc:creator>
      <dc:date>2022-03-01T14:40:10Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222591#M584</link>
      <description>&lt;P&gt;Hi &lt;a href="https://community.viessmann.de/t5/user/viewprofilepage/user-id/41749"&gt;@Bjoern-84&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;für mich war die API Dokumentation an dieser Stelle alles andere als hilfreich, aber möglicherweise habe ich die richtige Stelle einfach noch nicht gefunden...!?&lt;/P&gt;&lt;P&gt;Im Endeffekt scheint es grundsätzlich mit einem Command in der URL (.../devices/0/features/{feature}/&lt;SPAN&gt;commands/activate und&amp;nbsp; - falls benötigt&amp;nbsp; - einem JSON Body zu funktionieren.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Die beste Hilfestellung, um überhaupt eine Idee zu bekommen, brachte mir folgender Thread:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.viessmann-community.com/t5/Getting-started-programming-with/HowTo-send-a-command-via-the-API-Or-what-is-the-correct-syntax/td-p/179232" target="_blank"&gt;https://www.viessmann-community.com/t5/Getting-started-programming-with/HowTo-send-a-command-via-the-API-Or-what-is-the-correct-syntax/td-p/179232&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Bin aber noch nicht dazu gekommen, das auszuprobieren.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Falls du dir das genauer anschaust oder eine vernünftige Doku findest, lass uns doch gerne mal ein paar Infos zum Thema zukommen.&lt;/P&gt;&lt;P&gt;Danke &amp;amp; viele Grüße&lt;/P&gt;&lt;P&gt;Danny&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Mar 2022 20:54:44 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222591#M584</guid>
      <dc:creator>cb1000r</dc:creator>
      <dc:date>2022-03-01T20:54:44Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222628#M585</link>
      <description>&lt;P&gt;...noch eine Anmerkung, die mir gerade erst aufgefallen ist...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Wenn du dir mit Chris' Logik mittels Read Feature List alle features holst, bekommst du ein großes Objekt mit allen einzelnen Features.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Zu jedem einzelnen feature bekommst du ein Command-Objekt. Wenn du nichts schreiben kannst, scheint das leer zu sein. Wenn du schreiben kannst, sieht das folgendermaßen aus (am Beispiel des features&amp;nbsp;&lt;SPAN&gt;heating.dhw.oneTimeCharge):&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;commands: object&lt;BR /&gt;&amp;nbsp; activate: object&lt;BR /&gt;&amp;nbsp; &amp;nbsp; uri: "&lt;A href="https://api.viessmann.com/iot/v1/equipment/installations/" target="_blank"&gt;https://api.viessmann.com/iot/v1/equipment/installations/&lt;/A&gt;&amp;lt;id&amp;gt;/gateways/&amp;lt;id&amp;gt;/devices/0/features/heating.dhw.oneTimeCharge/commands/activate"&lt;BR /&gt;&amp;nbsp; &amp;nbsp; name: "activate"&lt;BR /&gt;&amp;nbsp; &amp;nbsp; isExecutable: true&lt;BR /&gt;&amp;nbsp; &amp;nbsp; params: object&lt;BR /&gt;&amp;nbsp; &amp;nbsp; empty&lt;BR /&gt;&amp;nbsp; deactivate: object&lt;BR /&gt;&amp;nbsp; &amp;nbsp; uri: "&lt;A href="https://api.viessmann.com/iot/v1/equipment/installations/" target="_blank"&gt;https://api.viessmann.com/iot/v1/equipment/installations/&lt;/A&gt;&amp;lt;id&amp;gt;/gateways/&amp;lt;id&amp;gt;/devices/0/features/heating.dhw.oneTimeCharge/commands/deactivate"&lt;BR /&gt;&amp;nbsp; &amp;nbsp; name: "deactivate"&lt;BR /&gt;&amp;nbsp; &amp;nbsp; isExecutable: false&lt;BR /&gt;&amp;nbsp; &amp;nbsp; params: object&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; empty&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 02 Mar 2022 07:02:14 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/222628#M585</guid>
      <dc:creator>cb1000r</dc:creator>
      <dc:date>2022-03-02T07:02:14Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/226938#M621</link>
      <description>&lt;P&gt;Servus&lt;/P&gt;&lt;P&gt;Hat von euch schon einer probiert Parameter in die Anlage zu schreiben?&lt;/P&gt;&lt;P&gt;Ich bekomme das irgendwie nicht hin.&lt;/P&gt;&lt;P&gt;Mein Versuch:&lt;/P&gt;&lt;P&gt;http Request&lt;/P&gt;&lt;P&gt;POST&lt;/P&gt;&lt;P&gt;&lt;A href="https://api.viessmann.com/iot/v1/equipment/installations/{{installationID}}/gateways/{{gatewaySerial}}/devices/{{deviceId}}/features/heating.dhw.temperature.hysteresis/commands/setHysteresis" target="_blank"&gt;https://api.viessmann.com/iot/v1/equipment/installations/{{installationID}}/gateways/{{gatewaySerial}}/devices/{{deviceId}}/features/heating.dhw.temperature.hysteresis/commands/setHysteresis&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Function Node:&lt;/P&gt;&lt;P&gt;msg.payload = {"data": 4 {"success": true}};&lt;BR /&gt;msg.headers = {};&lt;BR /&gt;msg.headers['Content-Type'] = 'application/json';&lt;BR /&gt;msg.headers['authorization'] = 'auth_token';&lt;BR /&gt;return msg;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Er nimmt mir aber schon den Payload nicht an.&lt;/P&gt;&lt;P&gt;In der API Documentation ist eine Beschreibung über den Body aber ich verstehe dies nicht wie ich das in den Payload umsetzen muss.&lt;/P&gt;&lt;P&gt;LG&lt;/P&gt;</description>
      <pubDate>Tue, 22 Mar 2022 08:20:22 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/226938#M621</guid>
      <dc:creator>Bjoern-84</dc:creator>
      <dc:date>2022-03-22T08:20:22Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/238388#M755</link>
      <description>&lt;P&gt;Hallo Daniel,&lt;/P&gt;&lt;P&gt;ich fange gerade an, Daten auszulesen... und in DB zu schreiben... mit Temperaturen ... also Zahlenwerten bekomme ich es nach den Beispielen schon hin... nur mit Textwerten on / off beim Brennerstatus&lt;/P&gt;&lt;P&gt;habe ich noch Probleme... die Zeile mit dem Brennerstatur würde mich sehr interessieren...&lt;/P&gt;&lt;P&gt;könntest du die Einstellungen der&amp;nbsp; Elemente teilen ? ... wäre echt super&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Danke Marco&lt;/P&gt;</description>
      <pubDate>Sun, 22 May 2022 13:14:16 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/238388#M755</guid>
      <dc:creator>marc-o-polo1</dc:creator>
      <dc:date>2022-05-22T13:14:16Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/238401#M757</link>
      <description>&lt;P&gt;Moin.&lt;/P&gt;&lt;P&gt;Häng einfach einen change-node dazwischen und mach aus on 1 umd off 0.&lt;/P&gt;&lt;P&gt;LG&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 22 May 2022 17:28:50 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/238401#M757</guid>
      <dc:creator>Bjoern-84</dc:creator>
      <dc:date>2022-05-22T17:28:50Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/238557#M758</link>
      <description>&lt;P&gt;Hallo Bjoern,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;besten Dank ... habs gefunden... ich konnte nichtmal on/off abrufen... fand später das&lt;/P&gt;&lt;P&gt;value.value falsch war ...&amp;nbsp; properties.status.value ... so hats geklappt.&lt;/P&gt;&lt;P&gt;Danke VG&lt;/P&gt;</description>
      <pubDate>Mon, 23 May 2022 15:16:51 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/238557#M758</guid>
      <dc:creator>marc-o-polo1</dc:creator>
      <dc:date>2022-05-23T15:16:51Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/264710#M967</link>
      <description>&lt;P&gt;&lt;a href="https://community.viessmann.de/t5/user/viewprofilepage/user-id/40855"&gt;@CaCicala&lt;/a&gt;Looks great!!! Thank you for the information.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But I didn't get / understand the following detail: Which hardware / interface do you use to read the data using the Node-RED http request node?&lt;/P&gt;&lt;P&gt;Is it a Viessmann Vitoconnect OPTO1 or OPTO2 device connected to your Vitodens installation?&lt;/P&gt;&lt;P&gt;Or something else?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thx&lt;/P&gt;&lt;P&gt;Thomas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 04 Oct 2022 10:11:08 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/264710#M967</guid>
      <dc:creator>diy</dc:creator>
      <dc:date>2022-10-04T10:11:08Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/264813#M968</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I’m using a vitoconnect Opto 2. However it really isn’t that important. I don’t connect to the device directly but to the Viessmann Servers. For the time being, there is no way do connect to the Viessmann Vitoconnect directly. It wouldn’t be fitting to Viessmann’s business model.&amp;nbsp;&lt;BR /&gt;Don’t hesitate to ask further questions if anything is unclear. I have also published a solution on how to create and renew the access/refresh tokens automatically in this forum.&amp;nbsp;&lt;BR /&gt;kind regards/viele Grüße&amp;nbsp;&lt;/P&gt;&lt;P&gt;Chris&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 04 Oct 2022 12:53:19 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/264813#M968</guid>
      <dc:creator>CaCicala</dc:creator>
      <dc:date>2022-10-04T12:53:19Z</dc:date>
    </item>
    <item>
      <title>Betreff: Using Node Red to visualize ViCare data</title>
      <link>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/264953#M969</link>
      <description>&lt;P&gt;Hi Chris,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks a lot for your quick response!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If I understand correctly, Vitoconnect Opto 1 or Opto 2 IS VERY important because without a device like this no data&amp;nbsp; can be retrieved at all.&amp;nbsp;Neither directly nor via the cloud (Viessmann Servers).&lt;/P&gt;&lt;P&gt;One problem is, that currently these devices are very rare in Germany.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Where do you come from? What is the availability in your homeland?&lt;/P&gt;&lt;P&gt;Is there any other possibility / hardware available to read current measured values from my Vitodens 200 WB2 from the year 2000?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Kind regards&lt;/P&gt;&lt;P&gt;Thomas&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;</description>
      <pubDate>Tue, 04 Oct 2022 16:56:38 GMT</pubDate>
      <guid>https://community.viessmann.de/t5/The-Viessmann-API/Using-Node-Red-to-visualize-ViCare-data/m-p/264953#M969</guid>
      <dc:creator>diy</dc:creator>
      <dc:date>2022-10-04T16:56:38Z</dc:date>
    </item>
  </channel>
</rss>

