Autor Thema: Viessmann VitoConnect API  (Gelesen 4543 mal)

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Viessmann VitoConnect API
« am: 22 März 2018, 06:53:24 »
Hallo Zusammen,

ich bin beim Googlen auf folgenden Link gestoßen: https://www.jeedom.com/forum/viewtopic.php?f=31&t=31567&start=80

Mit diesen Informationen konnte ich ein JSON meiner Viesmann Vitodens 300 + Vitoconnect erzeugen...

https://api.viessmann.io/estrella/rest/v2.0/gateways/<gataway>/controllers/<controller>/datapoints/
[code]{
  "data": [
    {
      "metadata": {
        "datapointGroup": "HC1",
        "heatingCircuitId": "22606",
        "datapointId": "7191",
        "datapointType": "CircuitTime",
        "datapointName": "konf_schaltzeiten_hk_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 1
      },
      "switchingTimeType": 1,
      "switchingTimes": [
        {
          "weekday": "SUN",
          "timeFrom": "0800",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "MON",
          "timeFrom": "0600",
          "timeTo": "0830",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "MON",
          "timeFrom": "1500",
          "timeTo": "2200",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "TUE",
          "timeFrom": "0600",
          "timeTo": "0830",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "TUE",
          "timeFrom": "1500",
          "timeTo": "2200",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "WED",
          "timeFrom": "0600",
          "timeTo": "0830",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "WED",
          "timeFrom": "1500",
          "timeTo": "2200",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "THU",
          "timeFrom": "0600",
          "timeTo": "0830",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "THU",
          "timeFrom": "1500",
          "timeTo": "2200",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "FRI",
          "timeFrom": "0600",
          "timeTo": "0830",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "FRI",
          "timeFrom": "1500",
          "timeTo": "2200",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "SAT",
          "timeFrom": "0800",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        }
      ],
      "datapointType": 2,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "datapointGroup": "HC1",
        "heatingCircuitId": "22606",
        "datapointId": "7192",
        "datapointType": "CircuitTime",
        "datapointName": "konf_schaltzeiten_ww_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 1
      },
      "switchingTimeType": 1,
      "switchingTimes": [
        {
          "weekday": "SUN",
          "timeFrom": "0830",
          "timeTo": "0930",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "SUN",
          "timeFrom": "1600",
          "timeTo": "2000",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "MON",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "MON",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "TUE",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "TUE",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "WED",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "WED",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "THU",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "THU",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "FRI",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "FRI",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "SAT",
          "timeFrom": "0830",
          "timeTo": "0930",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "SAT",
          "timeFrom": "1600",
          "timeTo": "2000",
          "value": 1,
          "position": 1
        }
      ],
      "datapointType": 2,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "datapointGroup": "HC1",
        "heatingCircuitId": "22606",
        "datapointId": "7192",
        "datapointType": "CircuitTime",
        "datapointName": "konf_schaltzeiten_ww_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 1
      },
      "switchingTimeType": 1,
      "switchingTimes": [
        {
          "weekday": "SUN",
          "timeFrom": "0830",
          "timeTo": "0930",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "SUN",
          "timeFrom": "1600",
          "timeTo": "2000",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "MON",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "MON",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "TUE",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "TUE",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "WED",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "WED",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "THU",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "THU",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "FRI",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "FRI",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "SAT",
          "timeFrom": "0830",
          "timeTo": "0930",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "SAT",
          "timeFrom": "1600",
          "timeTo": "2000",
          "value": 1,
          "position": 1
        }
      ],
      "datapointType": 2,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "datapointGroup": "HC1",
        "heatingCircuitId": "22606",
        "datapointId": "7193",
        "datapointType": "CircuitTime",
        "datapointName": "konf_schaltzeiten_zp_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 1
      },
      "switchingTimeType": 1,
      "switchingTimes": [
        {
          "weekday": "SUN",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "MON",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "TUE",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "WED",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "THU",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "FRI",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "SAT",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        }
      ],
      "datapointType": 2,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "datapointGroup": "HC1",
        "heatingCircuitId": "22606",
        "datapointId": "7193",
        "datapointType": "CircuitTime",
        "datapointName": "konf_schaltzeiten_zp_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 1
      },
      "switchingTimeType": 1,
      "switchingTimes": [
        {
          "weekday": "SUN",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "MON",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "TUE",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "WED",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "THU",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "FRI",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "SAT",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        }
      ],
      "datapointType": 2,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "datapointGroup": "WW",
        "heatingCircuitId": "22611",
        "datapointId": "7192",
        "datapointType": "CircuitTime",
        "datapointName": "konf_schaltzeiten_ww_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 1
      },
      "switchingTimeType": 1,
      "switchingTimes": [
        {
          "weekday": "SUN",
          "timeFrom": "0830",
          "timeTo": "0930",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "SUN",
          "timeFrom": "1600",
          "timeTo": "2000",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "MON",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "MON",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "TUE",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "TUE",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "WED",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "WED",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "THU",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "THU",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "FRI",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "FRI",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "SAT",
          "timeFrom": "0830",
          "timeTo": "0930",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "SAT",
          "timeFrom": "1600",
          "timeTo": "2000",
          "value": 1,
          "position": 1
        }
      ],
      "datapointType": 2,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "datapointGroup": "WW",
        "heatingCircuitId": "22611",
        "datapointId": "7192",
        "datapointType": "CircuitTime",
        "datapointName": "konf_schaltzeiten_ww_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 1
      },
      "switchingTimeType": 1,
      "switchingTimes": [
        {
          "weekday": "SUN",
          "timeFrom": "0830",
          "timeTo": "0930",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "SUN",
          "timeFrom": "1600",
          "timeTo": "2000",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "MON",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "MON",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "TUE",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "TUE",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "WED",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "WED",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "THU",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "THU",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "FRI",
          "timeFrom": "0500",
          "timeTo": "0800",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "FRI",
          "timeFrom": "1600",
          "timeTo": "2100",
          "value": 1,
          "position": 1
        },
        {
          "weekday": "SAT",
          "timeFrom": "0830",
          "timeTo": "0930",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "SAT",
          "timeFrom": "1600",
          "timeTo": "2000",
          "value": 1,
          "position": 1
        }
      ],
      "datapointType": 2,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "datapointGroup": "WW",
        "heatingCircuitId": "22611",
        "datapointId": "7193",
        "datapointType": "CircuitTime",
        "datapointName": "konf_schaltzeiten_zp_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 1
      },
      "switchingTimeType": 1,
      "switchingTimes": [
        {
          "weekday": "SUN",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "MON",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "TUE",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "WED",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "THU",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "FRI",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "SAT",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        }
      ],
      "datapointType": 2,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "datapointGroup": "WW",
        "heatingCircuitId": "22611",
        "datapointId": "7193",
        "datapointType": "CircuitTime",
        "datapointName": "konf_schaltzeiten_zp_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 1
      },
      "switchingTimeType": 1,
      "switchingTimes": [
        {
          "weekday": "SUN",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "MON",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "TUE",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "WED",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "THU",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "FRI",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        },
        {
          "weekday": "SAT",
          "timeFrom": "0530",
          "timeTo": "2200",
          "value": 1,
          "position": 0
        }
      ],
      "datapointType": 2,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "values": {
          "0": "Aus",
          "1": "Ein",
          "2": "Aus",
          "3": "Ein"
        },
        "datapointGroup": "DEFAULT-GROUP",
        "heatingCircuitId": "22605",
        "datapointId": "245",
        "datapointType": "ENUM",
        "datapointName": "zustand_interne_pumpe_r",
        "isWritable": false,
        "isReadable": true,
        "datapointTypeValue": 0
      },
      "value": "0",
      "dataType": 2,
      "datapointType": 1,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "values": {
          "0": "Aus",
          "1": "Ein"
        },
        "datapointGroup": "DEFAULT-GROUP",
        "heatingCircuitId": "22605",
        "datapointId": "600",
        "datapointType": "ENUM",
        "datapointName": "zustand_brenner_r",
        "isWritable": false,
        "isReadable": true,
        "datapointTypeValue": 0
      },
      "value": "0",
      "dataType": 2,
      "datapointType": 1,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "values": {
          "1": "1 A1",
          "2": "2 A1 + WW",
          "3": "3 M2",
          "4": "4 M2 + WW",
          "5": "5 A1 + M2",
          "6": "6 A1 + M2 + WW",
          "7": "7 M2 + M3",
          "8": "8 M2 + M3 + WW",
          "9": "9 A1 + M2 + M3",
          "10": "10 A1 + M2 + M3 + WW",
          "0": "Ohne Heizkreis/Speicher (Mehrkesselanlage)"
        },
        "datapointGroup": "DEFAULT-GROUP",
        "heatingCircuitId": "22605",
        "datapointId": "801",
        "datapointType": "ENUM",
        "datapointName": "konf_heizungsschema_r",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 0
      },
      "value": "2",
      "dataType": 2,
      "datapointType": 1,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "values": {
          "0": "inaktiv",
          "1": "aktiv"
        },
        "datapointGroup": "DEFAULT-GROUP",
        "heatingCircuitId": "22605",
        "datapointId": "865",
        "datapointType": "ENUM",
        "datapointName": "zustand_wartung_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 0
      },
      "value": "0",
      "dataType": 2,
      "datapointType": 1,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "values": {
          "0": "0 Mehrparteienhaus",
          "1": "1 Einfamilienhaus"
        },
        "datapointGroup": "DEFAULT-GROUP",
        "heatingCircuitId": "22605",
        "datapointId": "1001",
        "datapointType": "ENUM",
        "datapointName": "konfi_haustyp_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 0
      },
      "value": "1",
      "dataType": 2,
      "datapointType": 1,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "values": {
          "0": "ohne Anschlußerweiterung AM1",
          "1": "mit Anschlußmodul AM1"
        },
        "datapointGroup": "DEFAULT-GROUP",
        "heatingCircuitId": "22605",
        "datapointId": "7247",
        "datapointType": "ENUM",
        "datapointName": "konfi_kennung_am1_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 0
      },
      "value": "0",
      "dataType": 2,
      "datapointType": 1,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "values": {
          "0": "ohne Anschlußerweiterung EA1",
          "1": "mit Anschlußerweiterung EA1"
        },
        "datapointGroup": "DEFAULT-GROUP",
        "heatingCircuitId": "22605",
        "datapointId": "7250",
        "datapointType": "ENUM",
        "datapointName": "konfi_kennung_ea1_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 0
      },
      "value": "0",
      "dataType": 2,
      "datapointType": 1,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "values": {
          "0": "0 ohne",
          "1": "1 Vitosolic 100",
          "2": "2 Vitosolic 200",
          "3": "3 Solarmodul SM1",
          "4": "4 Solarmodul SM1 mit DT2"
        },
        "datapointGroup": "DEFAULT-GROUP",
        "heatingCircuitId": "22605",
        "datapointId": "7271",
        "datapointType": "ENUM",
        "datapointName": "konf_solarregler_r",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 0
      },
      "value": "0",
      "dataType": 2,
      "datapointType": 1,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "values": {
          "0": "Zirkulationspumpe",
          "1": "Heizkreispumpe",
          "2": "Speicherladepumpe",
          "3": "3: Sammelstörung",
          "4": "4: Ladepumpe"
        },
        "datapointGroup": "DEFAULT-GROUP",
        "heatingCircuitId": "22605",
        "datapointId": "10456",
        "datapointType": "ENUM",
        "datapointName": "konf_ausgang28_rw",
        "isWritable": true,
        "isReadable": true,
        "datapointTypeValue": 0
      },
      "value": "1",
      "dataType": 2,
      "datapointType": 1,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "values": {
          "0": "0: Sammelstörung",
          "1": "1: Zirkulationspumpe",
          "2": "2: Heizkreispumpe A1",
          "3": "3: Speicherladepumpe",
          "4": "4: Ladepumpe"
        },
        "datapointGroup": "DEFAULT-GROUP",
        "heatingCircuitId": "22605",
        "datapointId": "10457",
        "datapointType": "ENUM",
        "datapointName": "konf_ausgang_intern_h1_r",
        "isWritable": false,
        "isReadable": true,
        "datapointTypeValue": 0
      },
      "value": "0",
      "dataType": 2,
      "datapointType": 1,
      "datapointStatus": 0
    },
    {
      "metadata": {
        "values": {
          "0": "OK",
          "1": "Kurzschluss",
          "2": "Unterbrechung",
          "3": "unbekannt",
          "4": "unbekannt",
          "5": "unbekannt",
          "6": "Nicht vorhanden"
        },
        "datapointGroup": "DEFAULT-GROUP",
        "he
« Letzte Änderung: 16 April 2018, 10:27:48 von ritschi »
"

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #1 am: 22 März 2018, 09:48:32 »
Kleiner Nachtrag noch zum JSON. Meine Anlage ist jetzt 2 Tage alt und läuft momentan noch im "Konstantbetrieb" (Außenfühler fehlt noch), daher stehen im Estrella noch nicht alle Werte zur Verfügung.
"

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #2 am: 23 März 2018, 19:05:00 »
Keiner wirklich Interesse? Ich bin soweit, wenn man mit attr viessmannapi extractAllJSON 1 arbeitet, kann man mit den Werten schon etwas anfangen.

"

Offline seppe

  • New Member
  • *
  • Beiträge: 11
Antw:Viessmann VitoConnect API
« Antwort #3 am: 31 März 2018, 12:18:21 »
Hallo,

würde mich schon interessieren.
Ich komm mit dem Französisch nur noch nicht so klar.
Welche Werte muss ich denn Einsetzen um die Daten Abgreifen zu können?

edit:
okay ich habs soweit. Nur extractAllJSON ist für mich etwas zuviel, eigentlich interessiern mich nur ca 10 Werte... Kann man das auch irgendwie selektieren?

Gruß
Sepp
« Letzte Änderung: 31 März 2018, 17:30:14 von seppe »

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #4 am: 02 April 2018, 16:24:52 »
Zitat
okay ich habs soweit. Nur extractAllJSON ist für mich etwas zuviel, eigentlich interessiern mich nur ca 10 Werte... Kann man das auch irgendwie selektieren?
Das geht bestimmt, nur leider hört es dann auch bei mir auf. Vielleicht haben die Profis hier noch Ideen?
"

Offline seppe

  • New Member
  • *
  • Beiträge: 11
Antw:Viessmann VitoConnect API
« Antwort #5 am: 14 April 2018, 08:04:17 »
Hallo,

über extractAllJSON bekomme ich das reading:

data_123_value 0100000001000000000000000000000000000000000000000000000009000000

das ist diese Woche mein Gas verbrauch.
soweit ich entschlüsselt habe sind die ersten beiden zahlen mein heutiger verbrauch, dann kommen 8 ziffern vom gestrigen, dann 8 vom vorgestrigen tag (Hex).....
ich übertrage diesen Wert dann in Loxone über UDP mittels 99 myutils:

my $Gas=ReadingsVal("$device","data_123_value","-1");
Loxone kann mit diesem vermischten Wert allerdings nichts anfangen, ich müsste den nach Tagen trennen...
Leider bin ich zu sehr Anfänger um das zu schaffen, kann mich einer auf die richtige Spur bringen, wie ich diesen Wert in die einzelnen Tage auftrenne?

Danke
Sepp


Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #6 am: 14 April 2018, 09:19:49 »
Eine Idee wäre es den Wert in ein UserReadings zu packen und bei substr zu teilen.
https://forum.fhem.de/index.php?topic=69837.0

Wenn du nur die aktuellen Tageswerte benötigst, könntest du hier was mit Anfangen.

info_gasverbrauch_heizen_akt_tag_r
info_gasverbrauch_ww_akt_tag_r
"

Offline seppe

  • New Member
  • *
  • Beiträge: 11
Antw:Viessmann VitoConnect API
« Antwort #7 am: 14 April 2018, 10:14:51 »
Ja der string der ausgegeben wird ist von info_gasverbrauch_heizen_akt_tag_r

Dein Tipp funktioniert, ich habe die Zeile folgendermaßen angepasst:
my $GasTag=ReadingsVal("$device","data_123_value","-1"); $GasTag=substr($GasTag,0, -62);Man könnte die anderen Tage so auch auswerten, aber mir reicht es so.

vielen Dank!!

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #8 am: 16 April 2018, 08:08:13 »
Ja der string der ausgegeben wird ist von info_gasverbrauch_heizen_akt_tag_r

Dein Tipp funktioniert, ich habe die Zeile folgendermaßen angepasst:
my $GasTag=ReadingsVal("$device","data_123_value","-1"); $GasTag=substr($GasTag,0, -62);Man könnte die anderen Tage so auch auswerten, aber mir reicht es so.

vielen Dank!!

Bei mir sind die beiden Readings bereis schon richtig in kWh formatiert.  Ich hol mir nur alles, was ich benötige in UserReadings.
"

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #9 am: 19 April 2018, 13:07:40 »
Mal ein Beispiel, welche Daten man so bekommt:
"

Offline demaya

  • New Member
  • *
  • Beiträge: 16
Antw:Viessmann VitoConnect API
« Antwort #10 am: 28 April 2018, 16:13:46 »
Wie lang / kurz ist euer Intervall für HTTPMOD in Sekunden?

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #11 am: 28 April 2018, 16:30:28 »
Wie lang / kurz ist euer Intervall für HTTPMOD in Sekunden?
Ich habe 120sek eingestellt


Gesendet von iPhone mit Tapatalk
"

Offline renardfm

  • New Member
  • *
  • Beiträge: 20
Antw:Viessmann VitoConnect API
« Antwort #12 am: 17 Mai 2018, 21:32:33 »
Ich habe großes Interesse für meine Vitoladens300c (ÖlBrennwert),
Allerdings bin ich hinsichtlich JSON kompletter Neuling.

Bei Eingabe des folgenden Links (https://api.viessmann.io/estrella/rest/v2.0/gateways/) sehe ich nach Eingabe von Nutzer und Passwort nur Daten wie hinterlegte Adresse, Letzte Aktualisierung, Breiten-/Längengrad, ...leider keine Messwerte der Heizung.
Ist die Herangehensweise beim Aufruf falsch? Ich habe den Link im ersten Post mit den spitzen Klammern evtl nicht ganz verstanden.


naja.. wenn man Google mal übersetzen lässt komme ich zumindest mal mit dem Link weiter ;-) ... ich frickel mal ein wenig rum.

Gruß Florian
« Letzte Änderung: 17 Mai 2018, 21:50:45 von renardfm »

Offline renardfm

  • New Member
  • *
  • Beiträge: 20
Antw:Viessmann VitoConnect API
« Antwort #13 am: 18 Mai 2018, 18:03:51 »
Auslesen geht jetzt..juhuu..

Hat jemand schon versucht auch etwas zu verstellen?

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #14 am: 18 Mai 2018, 22:11:43 »
Auslesen geht jetzt..juhuu..

Hat jemand schon versucht auch etwas zu verstellen?
Prima... Einstellungen setzten muss gehen, denn genau die Schnittstelle nutzt auch die ViCare App, allerdings fehlen mir hier die nötigen Fachkenntnisse...


Gesendet von iPhone mit Tapatalk
"

Offline andies

  • Hero Member
  • *****
  • Beiträge: 1441
Antw:Viessmann VitoConnect API
« Antwort #15 am: 19 Mai 2018, 06:36:18 »
Mal ein Beispiel, welche Daten man so bekommt:
Das ist formal OT, aber wie kriegst Du unten diese schönen Achsenbeschreibungen hin? Ich habe da das hier (auf dem Tablett):
FHEM 5.8 auf RaspPi3 (Raspbian:  4.14.34-v7+ ); Perl: v5.20.2
SIGNALduino (433 MHz) und HM-UART (868 MHz)
wenige Brennenstuhl-IT, gaanz viele Sonoffs, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Offline seppe

  • New Member
  • *
  • Beiträge: 11
Antw:Viessmann VitoConnect API
« Antwort #16 am: 20 Mai 2018, 07:52:20 »
Mal ein Beispiel, welche Daten man so bekommt:

Hallo,

sag mal kannst du deine config zu obiger auswertung Teilen? die gefällt mir recht gut  ;D

Gruß
Sepp

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #17 am: 20 Mai 2018, 13:54:42 »
Hier sind die Screenshots von meiner Grafana Konfiguration
"

Offline avg123-de

  • Full Member
  • ***
  • Beiträge: 142
Antw:Viessmann VitoConnect API
« Antwort #18 am: 26 Mai 2018, 11:32:41 »
Hallo,

bin heute zufällig hier auf den Post gestoßen und freue mich nun eine Lösung gefunden zu haben die Daten der Vitoconnect unserer Pelletheizung abfragen zu können.

Ich tue mich aktuell nur etwas schwer mit dem HTTPMOD-Modul, da ich immer nur ein "UNAUTHORIZED" zurück bekomme. Könntet ihr mir vielleicht helfen, wie ihr das mit dem Login hinbekommen habt?

viele Grüße
Alexander
FHEM auf virtualisiertem Debian in Hyper-V auf Dell Poweredge T110 II mit Windows Server 2012, 1x HM-LAN, verschiedene HomeMatic-Komponenten, Intertechno ITR-1500, Arduino Uno Ethernet mit RF-Modul, DeltaSol BX via VBus, Fritz!Box + Fritz!Fon, SmartVisu via Fronthem, Doorpi

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #19 am: 28 Mai 2018, 09:53:41 »
Hi,

so müsste der HTTPMOD eingetragen werden...

https://<name%40mail.com>:<Password>@api.viessmann.io/estrella/rest/v2.0/gateways/<gateway>/controllers/<controller>/datapoints/


Wichtig bei der Anmeldung mit EMail Adresse ist das "%40", dies entspricht dem @.
"

Offline avg123-de

  • Full Member
  • ***
  • Beiträge: 142
Antw:Viessmann VitoConnect API
« Antwort #20 am: 28 Mai 2018, 21:33:35 »
https://<name%40mail.com>:<Password>@api.viessmann.io/estrella/rest/v2.0/gateways/<gateway>/controllers/<controller>/datapoints/

Danke, hat direkt funktioniert!

viele Grüße
Alexander
FHEM auf virtualisiertem Debian in Hyper-V auf Dell Poweredge T110 II mit Windows Server 2012, 1x HM-LAN, verschiedene HomeMatic-Komponenten, Intertechno ITR-1500, Arduino Uno Ethernet mit RF-Modul, DeltaSol BX via VBus, Fritz!Box + Fritz!Fon, SmartVisu via Fronthem, Doorpi

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #21 am: 29 Mai 2018, 06:31:11 »
Danke, hat direkt funktioniert!

viele Grüße
Alexander

Super das freut mich ...
"

Offline BlackHawk133

  • New Member
  • *
  • Beiträge: 9
Antw:Viessmann VitoConnect API
« Antwort #22 am: 27 Juni 2018, 20:51:20 »
Hallo,

also wenn ich mir den Thread so ansehe ist das eigentlich genau das was ich suche - nur Französisch ist bei mir leider ein Totalausfall.

Daher eine Frage: Kann z.B. ritschi mal elementar erklären, was er gemacht hat und wie es funktioniert. Auch ist dein JSON file auf Post 1 anscheinend nicht vollständig....

Offline Shadow3561

  • Full Member
  • ***
  • Beiträge: 223
Antw:Viessmann VitoConnect API
« Antwort #23 am: 04 Juli 2018, 19:14:57 »
also bei mir passiert leider auch ichts bei dem link.

ich bekomme nur ein

Server Error in '/' Application.

zurück.

Was mache ich falsch? Muss man schon irgend etwas in die datapoints oder so eintragen?
Wo finde ich denn die Gateway und Controller ID?


Brauche ich dann zwingend eine Vitocom100?

Habe eine Vitodens200 mit Vitotronic 200 Regelung und Vitoconnect100.
Die Vicare App funktioniert.

Irgendwie stehe ich auf dem Schlauch.

@ritschi

Würdest du bitte ein kleines HowTo schreiben?

MfG
« Letzte Änderung: 06 Juli 2018, 07:21:46 von Shadow3561 »

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #24 am: 07 Juli 2018, 14:02:37 »
Hi,

das Problem ist momentan, dass man über die Support Seite von Viessmann nicht mehr an die nötigen IDs kommt.


Das liegt wohl an der Umstellung auf die Version 2 der ViCare App. Wenn man die IDs hat, klappt es.

Ich habe gerade an Viessmann geschrieben, ob Sie mir verraten, wie man wieder an die IDs kommt.

Sobald ich Infos habe, melde ich mich.

LG,
ritschi
« Letzte Änderung: 07 Juli 2018, 14:04:18 von ritschi »
"

Offline Shadow3561

  • Full Member
  • ***
  • Beiträge: 223
Antw:Viessmann VitoConnect API
« Antwort #25 am: 07 Juli 2018, 17:54:44 »
Ich denke sie werden nichts verraten.
Viessmann hält sich sehr bedekt wenn es um Homeautomation mit Fremdgeräten geht.

Ich denke die Gateway-ID ist auf dem Aufkleber der Vitoconnect zu finden.
Entweder "Hersteller-Daten" oder "ID"

Die Controller-ID macht mir schon mehr zu schaffen.
Ich habe jetzt alle möglichen Nummern die ich finden konnte probiert.
Du kannst ja mal bei dir vergleichen.

Auf der Rückseite der Vitotronic (kann man einfach nach vorne abziehen wenn der Netzschalter der Heizung aus ist) findet man 2 Nummern.
Oben auf der Heizung ist auch noch eine Nummer.
Auf der Rückseite der Elektronik (Kasten in den die Vitotronic gesteckt wird) in der Heizung ist auch eine Nummer.

Wenn du Zeit hast kannst du ja mal die Nummern mit denen in der URL vergleichen. Evtl. sind wir dann schon einen Schritt weiter.

MfG

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #26 am: 07 Juli 2018, 20:32:22 »
Leider passen die Nummern nicht .. tut mir leid


Gesendet von iPhone mit Tapatalk
"

Offline Shadow3561

  • Full Member
  • ***
  • Beiträge: 223
Antw:Viessmann VitoConnect API
« Antwort #27 am: 07 Juli 2018, 21:54:10 »
Naja, trotzdem danke fürs schauen. Einen Versuch war es ja wert.
Dann warten wir mal ab was Viessmann sagt.

MfG

Offline renardfm

  • New Member
  • *
  • Beiträge: 20
Antw:Viessmann VitoConnect API
« Antwort #28 am: 20 Juli 2018, 06:32:15 »
Über diesen Link bekommt man doch nach dem Einloggen gleich Quelltext serviert. Hier stehen zumindest Inhalt wie "id" etc..
https://api.viessmann.io/estrella/rest/v2.0/gateways/

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #29 am: 20 Juli 2018, 06:43:12 »
Über diesen Link bekommt man doch nach dem Einloggen gleich Quelltext serviert. Hier stehen zumindest Inhalt wie "id" etc..
https://api.viessmann.io/estrella/rest/v2.0/gateways/

Mensch, manchmal kann es doch so einfach sein. Danke für den Hinweis.

Hier eine kleine Anleitung
"

Offline Shadow3561

  • Full Member
  • ***
  • Beiträge: 223
Antw:Viessmann VitoConnect API
« Antwort #30 am: 20 Juli 2018, 08:07:54 »
Das klappt bei mir leider nicht.
Wenn ich mich mit den Login Daten der vitoconnect einloggen möchte fragt er nach Benutzername und Passwort.
Sofort nach Eingabe und Bestätigung fragt er wieder danach.
Ein Login ist zumindest bei mir nicht möglich.

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #31 am: 20 Juli 2018, 08:47:41 »
Das klappt bei mir leider nicht.
Wenn ich mich mit den Login Daten der vitoconnect einloggen möchte fragt er nach Benutzername und Passwort.
Sofort nach Eingabe und Bestätigung fragt er wieder danach.
Ein Login ist zumindest bei mir nicht möglich.

Komisch, ich logge mich mit den Zugangdaten meiner App (ViCare) ... Hast du dich vielleicht vertippt?
"

Offline Shadow3561

  • Full Member
  • ***
  • Beiträge: 223
Antw:Viessmann VitoConnect API
« Antwort #32 am: 20 Juli 2018, 09:46:48 »
Leider habe ich mich nicht vertippt.
Habe das Passwort in der Vicare App auch schon geändert(1111)
So dass ein Tippfehler ausgeschlossen werden kann.
Habe es mit Android, Ios und diversen Desktopbrowsern versucht, aber nirgends ist ein Login mit meinen vicare Nutzerdaten möglich.

Schade eigentlich.
Habe auch schon mehrfach mit Viessmann telefoniert (arbeite in einer Heizungsinstallationsfirma). Dort sagte man mir, dass der Estrella-server wohl bald abgeschaltet werden soll und alle neuen Nutzer(zu denen ich wohl schön gehöre)  bereits auf dem neuen Server landen. Nur darf, besser möchte,  mir leider niemand mitteilen welche Adresse der Server hat und ob es eine api gibt.

Nun lese ich meine Heizung mit dem Vconnect Modul aus.
Auf die 5 Jahre Garantie bin ich hoffentlich nicht angewiesen, und falls doch, zahle ich auch nur die Ersatzteilkosten.

MfG

Edit:
Ich habe mir auch eine alte Version der Vitotrol Plus App heruntergeladen, damit ist ein Login mit meinen Daten ebenfalls nicht möglich.
Dann habe ich versucht die Vitoconnect damit in Betrieb zu nehmen, das klappt aber auch nicht.
« Letzte Änderung: 20 Juli 2018, 09:54:37 von Shadow3561 »

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #33 am: 22 Juli 2018, 08:16:34 »
Seit wann hast denn deine Vito Connect im Einsatz. Ich habe meine am 15.03.2018 in Betrieb genommen.


Gesendet von iPhone mit Tapatalk
"

Offline Shadow3561

  • Full Member
  • ***
  • Beiträge: 223
Antw:Viessmann VitoConnect API
« Antwort #34 am: 22 Juli 2018, 08:58:10 »
Am 5.7.18

Ich habe mittlerweile ungefähr 10 Browser auf 3 verschiedenen Betriebssystemen ausprobiert und es ist immer das Gleiche.
Nach Eingabe von Benutzername(Email Adresse vom vicare Login) und Passwort (vicare) erscheint die Abfrage dieser sofort wieder.
Kannst du dich denn mit deinen vicare Daten noch bei der vitotrol-plus app einloggen?
Diese sagt mir "Benutzername oder Passwort falsch".

MfG

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #35 am: 22 Juli 2018, 10:25:26 »
Da kann ich mich auch nicht anmelden


Gesendet von iPhone mit Tapatalk
"

Offline Viprex

  • New Member
  • *
  • Beiträge: 14
Antw:Viessmann VitoConnect API
« Antwort #36 am: 03 August 2018, 00:00:47 »
Mensch, manchmal kann es doch so einfach sein. Danke für den Hinweis.

Hier eine kleine Anleitung

Hallo ritschi,

ich scheine etwas auf dem Schlauch zu stehen. Ich kann micht im Link https://api.viessmann.io/estrella/rest/v2.0/gateways/ sofort anmelden (habe meine Anlage seit Februar 2018). Dort sehe ich dann zwar eine ID, aber keine Controller ID. Es taucht eine Owner ID auf oder eine Gateway Seriennummer.

Beide führen eingesetzt in <controllerID> aber nur zu
error "UNKNOWN_RESOURCE"
errorData {}
.

Kannst du mir auf die Sprünge helfen?

Lieben Gruß,
Tim


Offline renardfm

  • New Member
  • *
  • Beiträge: 20
Antw:Viessmann VitoConnect API
« Antwort #37 am: 24 August 2018, 23:12:34 »
Mist... mittlerweile wurde der Estrella Server abgeschalten.

Aber die Franzosen sind schon einen Schritt weiter... Leider fehlt mir mit den Informationen (trotz Google Translator) dann der letzte Schliff.. Kennt sich jemand mit OAuth2, und dem neumodischen Zeug aus?? Ich bekomme immer die Meldung NO TOKEN... :-\

ich habe es nach Angabe versucht mit ?client_id=...&isiwebuserid=user@xy.de&isiwebpasswd=12345

Quelle:
https://www.jeedom.com/forum/viewtopic.php?f=31&t=31567&sid=c14a9295cbc07369cd6ca3552badc7e9&start=100#p642666

Zitat
Für das Token ist es Oauth2 (Träger-Token).

URL - Verbindung ist https://iam.viessmann.com/idp/v1/authorize
mit als Parameter client_id, isiwebpasswd, isiwebuserid

Für das Token: https://iam.viessmann.com/idp/v1/token
für Aktualisieren Sie es und normalerweise, um es zu haben.

und für die API ist es diejenige, die gegeben wurde.

...

Eine weitere Möglichkeit , direkt auf den Anruf zu erhalten ist:
GET https://api.viessmann-platform.io/operational-data/installations/55994/gateways/7571381753685105/devices/0/features/heating.boiler.sensors.temperature.main
« Letzte Änderung: 24 August 2018, 23:14:23 von renardfm »

Offline andies

  • Hero Member
  • *****
  • Beiträge: 1441
Antw:Viessmann VitoConnect API
« Antwort #38 am: 25 August 2018, 07:39:09 »
kenne mich nicht wirklich aus, hatte das aber mal beim speedport. beim aufruf der login-seite wird der token vergeben. Loggst du dich ein, musst du den token mit aufrufen, sonst wird der login nicht durchgeführt. Das ist eigentlich alles. Ausgelesen habe ich das damals mit HTTPMOD. Weil das am ende alles so umständlich war, habe ich mir dann eine Fritzbox gekauft ;-)


Gesendet von iPad mit Tapatalk Pro
FHEM 5.8 auf RaspPi3 (Raspbian:  4.14.34-v7+ ); Perl: v5.20.2
SIGNALduino (433 MHz) und HM-UART (868 MHz)
wenige Brennenstuhl-IT, gaanz viele Sonoffs, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Offline renardfm

  • New Member
  • *
  • Beiträge: 20
Antw:Viessmann VitoConnect API
« Antwort #39 am: 28 August 2018, 09:52:47 »
Hallo zusammen,
im JEEDOM Forum bzw. auf Github wurde bereits vom französischen Kollegen eine php Datei zur Verfügung gestellt.
Diese handelt den Token aus, und verwendet den dann für die Abfrage (neue API). Es sollte auch für die Kollegen funktionieren, bei denen die alte Schnittstelle nicht mehr funktionierte.
Ich habe es bereits mit FHEM zum Laufen gebracht und auch einen Großteil extrahieren können (Speicher, Kessel, Soll-Temperaturen, Aussentemperatur)... leider finde ich den Datenpunkt für die Abgastemperatur nicht (war zum Optimieren des Brennwerteffektes ganz brauchbar). Ich konnte auch nur Messwerte extrahieren, die mit meiner Heizungskonfig in der App verfügbar sind, da ich mit Wireshark den Traffic der ViCare App mitgeschnitten habe.

Die PHP Datei wird ausführbar gemacht und dem User fhem zugeordnet (Raspi), der Aufruf geht dann mittels {my $output = qx(/opt/fhem/viessmann.php &); fhem("setreading testdummy rohdaten ${output}")} ...
edit: besser ist die folgende Funktion dafür zu nehmen, da sonst der Aufruf Blocking stattfindet. Über system() ist der Aufruf nicht möglich, hier landet die php-Ausgabe nur im Logfile. :
https://forum.fhem.de/index.php/topic,60474.msg523776.html#msg523776


Die Werte werden in ein Dummy-Reading geschrieben. Aktuell stehe ich noch vor dem Problem die Werte zu trennen (Userreading und Regexp) .. wir sind nicht unbedingt Freunde :-D

Es soll wohl demnächst noch eine neue Version der php Datei geben, mit der dann auch Werte geschrieben werden können.
Somit ist dann endlich auch eine prädiktive Vorsteuerung (z.B. an Hand Wettervorhersage) möglich :-)
« Letzte Änderung: 28 August 2018, 21:25:26 von renardfm »

Offline budaks

  • Newbie
  • Beiträge: 1
Antw:Viessmann VitoConnect API
« Antwort #40 am: 30 August 2018, 00:23:19 »
Hallo renardfm,

super, erst mal vielen Dank! Deine Infos waren genau, was ich gerade brauche. Ich will meine Vitodens mit dem MAX! -System reden lassen. Leider ist gerade etwas Ernüchterung eingekehrt: Nach den ersten (positiven) Tests mit dem Estrella-Server wollte ich das ganze jetzt konkretisieren. Beim rumspielen mit dem php-script hat sich aber gezeigt, dass über die (neue) api offenbar nur das angeboten wird, was in der Vicare-app darstellbar ist. Und die kann im Vergleich zur alten VitotrolPlus viel weniger. Ich wollte den Zustand der Heizkreis-Pumpe abfragen - die hab ich aber nirgends gefunden. Komischerweise funktioniert die VitotrolPlus-App aber noch, worauf ich mir keinen Reim machen kann. Hast du eine Idee - ich bin leider des französischen nicht mächtig...

viele Grüße,
budaks

Offline renardfm

  • New Member
  • *
  • Beiträge: 20
Antw:Viessmann VitoConnect API
« Antwort #41 am: 30 August 2018, 12:05:20 »
hi.
ich habe es mit Google Translate (im Browser) gelesen.

Gestern habe ich nochmal versucht über "man in the middle" via Packet Capture auf dem Handy den Traffic der Vitotrol App mitzumessen. Hier scheint irgendwie noch die alte Syntax zu laufen, die es eben in der Vicare nicht mehr gibt. Da bin ich nicht weitergekommen. Kannst du auch mal probieren. Die App macht lokal einen VPN über den der gesamte Traffic läuft.. Ist ganz interessant.. die alte App hat Passwort und Benutzer auch noch im Klartext übertragen!

Ich hätte noch Datenpunkte für Betriebsart, Kesseltemperatur und Solltemperaturen anzubieten...
Leider fehlen auch mir Punkte wie Abgastemperatur, Brenner- und Pumpenzustände :-(
Vielleicht kriegen die Franzosen noch etwas hin.

Offline Philipp_CGN

  • Newbie
  • Beiträge: 1
Antw:Viessmann VitoConnect API
« Antwort #42 am: 01 September 2018, 12:50:47 »
Hallo renardfm,

ich möchte die Messwerte meiner VitoDens 300 über VitoConnect und die neue API auch in Fhem einfließen lassen. Könntest du deine Datenpunkte mal posten. Ich habe bisher
  • .../devices/0/features/heating.sensors.temperature.outside
  • .../devices/0/features/heating.boiler.sensors.temperature.main

Viele Grüße
Philipp

Offline renardfm

  • New Member
  • *
  • Beiträge: 20
Antw:Viessmann VitoConnect API
« Antwort #43 am: 01 September 2018, 14:14:20 »
voilà

$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.boiler.sensors.temperature.main");
debug_msg("resource: $resource", $debug);
$Kesseltemperatur = strval(json_decode($resource, true)["properties"]["value"]["value"]);
echo "Kesseltemperatur=$Kesseltemperatur\n";

$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.circuits.0.sensors.temperature.supply");
debug_msg("resource: $resource", $debug);
$Raumsolltemperatur = strval(json_decode($resource, true)["properties"]["value"]["value"]);
echo "supply_temperatur=$Raumsolltemperatur\n";

$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.circuits.0.sensors.temperature.room");
debug_msg("resource: $resource", $debug);
$Raumsolltemperatur = strval(json_decode($resource, true)["properties"]["value"]["value"]);
echo "room_temperatur=$Raumsolltemperatur\n";

$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.circuits.0.operating.programs.normal");
debug_msg("resource: $resource", $debug);
$solltemperatur = strval(json_decode($resource, true)["properties"]["temperature"]["value"]);
echo "Solltemperatur_normal=$solltemperatur\n";

$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.circuits.0.operating.programs.reduced");
debug_msg("resource: $resource", $debug);
$solltemperatur = strval(json_decode($resource, true)["properties"]["temperature"]["value"]);
echo "Solltemperatur_reduziert=$solltemperatur\n";

$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.dhw.temperature");
debug_msg("resource: $resource", $debug);
$sollSpeichertemperatur = strval(json_decode($resource, true)["properties"]["value"]["value"]);
echo "Speicher-Solltemperatur=$sollSpeichertemperatur\n";


$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.dhw.sensors.temperature.hotWaterStorage");
debug_msg("resource: $resource", $debug);
$Speichertemperatur = strval(json_decode($resource, true)["properties"]["value"]["value"]);
echo "Speicher-Isttemperatur=$Speichertemperatur\n";

$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.circuits.0.operating.modes.active");
debug_msg("resource: $resource", $debug);
$art = strval(json_decode($resource, true)["properties"]["value"]["value"]);
echo "Betriebsart=$art\n";

$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.burner.automatic");
debug_msg("resource: $resource", $debug);
$brennerzustand = strval(json_decode($resource, true)["properties"]["status"]["value"]);
echo "Brennerzustand=$brennerzustand\n";

$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.burner.automatic");
debug_msg("resource: $resource", $debug);
$errorcode = strval(json_decode($resource, true)["properties"]["errorCode"]["value"]);
echo "ErrorCode=$errorcode\n";

$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.circuits.0.operating.programs.active");
debug_msg("resource: $resource", $debug);
$state = strval(json_decode($resource, true)["properties"]["value"]["value"]);
echo "Programmstatus=$state\n";





hier stehen auch noch welche:
https://github.com/thetrueavatar/Viessmann-Api/blob/master/src/API/ViessmannAPI.php

ist schon die zweite api der franzosen...
« Letzte Änderung: 01 September 2018, 14:31:26 von renardfm »

Offline seppe

  • New Member
  • *
  • Beiträge: 11
Antw:Viessmann VitoConnect API
« Antwort #44 am: 03 September 2018, 20:09:12 »
ja von den Franzosen scheints einer geschafft zu haben... aber ich werd dadraus einfach nicht schlau... wie erfahre ich die Knotenpunkte?

Offline renardfm

  • New Member
  • *
  • Beiträge: 20
Antw:Viessmann VitoConnect API
« Antwort #45 am: 03 September 2018, 20:14:00 »
Meinst du die Messwerte?

Ich habe auf dem Handy Packet Capture installiert und das gestartet. Dann 1x die VicareApp benutzt. Dadurch wurde alles protokolliert und ich habe einfach nur den Quelltext durchsucht, bis ich was passendes gefunden habe.

Offline seppe

  • New Member
  • *
  • Beiträge: 11
Antw:Viessmann VitoConnect API
« Antwort #46 am: 03 September 2018, 20:25:28 »
Ja genau, das scheint mit dem Iphone leider nicht zu funktionieren...

Offline dr_laplace

  • New Member
  • *
  • Beiträge: 28
Antw:Viessmann VitoConnect API
« Antwort #47 am: 07 September 2018, 15:13:14 »
Hallo,
ich versuche mich mal einzuklinken. Hat jemand schon einmal die neue Viessmann-Api zum laufen bekommen? Ich bekomme beim Auslesen von "code" folgenden Fehler

PHP Notice:  Undefined offset: 0 in /home/ss/Downloads/Viessmann-Api-master/src/Oauth/ViessmannOauthClient.php on line 78
PHP Fatal error:  Uncaught TypeError: Return value of Viessmann\Oauth\ViessmannOauthClient::getCode() must be of the type string, null returned in /home/ss/Downloads/Viessmann-Api-master/src/Oauth/ViessmannOauthClient.php:78

Alternativ hab ich das Skript von den Franzosen ausprobiert.
https://www.jeedom.com/forum/viewtopic.php?f=31&t=31567&start=120#p644178
Hier bekomme ich zwar den "Code" jedoch beim Auslesen des Tokens die Fehlermeldung
{"statusCode":404,"error":"Not Found","message":"Params Validation Error"}
Beim der Anmeldung bei https://iam.viessmann.com/idp/v1/authorize? wird kurz vor der Umleitung das Token anzegeigt. Jedoch kommt dann nur eine Seite mit der Meldung "Permission denied".? Ist das richtig, oder wie sieht das bei euch aus?

https://abload.de/img/viessmannb6e2y.png




Offline renardfm

  • New Member
  • *
  • Beiträge: 20
Antw:Viessmann VitoConnect API
« Antwort #48 am: 15 September 2018, 22:38:57 »
Ich versuche mal meinen Weg darzustellen - mit dem ich wieder (bis auf die Abgastemperatur und Speicher/ Heizungspumpe) alle Werte zur Verfügung habe.

1. php-Skript bearbeiten (User und Passwort der Vicare-App) eintragen. PHP Skript siehe Anhang. Ist die Basisversion aus dem Jeedom Forum.
2. php-Skript in den fhem-Ordner einfügen (oder copy& paste mit "sudo nano viessmann.php" in eine neue Daten einfügen)
3. viessmann.php ausführbar machen (sudo chmod +x viessmann.php)
4. fhem user zuweisen! (sudo chown fhem viessmann.php)
5. jetzt kann man diese datei mal über Kommandozeile/ssh testweise ausführen "sudo php viessmann.php" ... oder "sudo php /opt/fhem/viessmann.php"
    Man sollte jetzt einige Rückgabewerte bekommen.

Verknüpfung mit FHEM:
1. Dummy anlegen (bei mir Vicare300c, da ich einen Vitoladens300c) habe.
2. mittels at-Befehl in gewünschtem Interval die php-Datei ausführen lassen.
    Hier gab es für mich eine kleine Hürde. Wir brauchen ja die Ausgabe des perl-Skriptes. Diese Strings sollen in einen Dummy geschrieben werden. Damit lässt sich dann weiterarbeiten.
    Der Aufruf der PHP-Datei MIT Rückgabewerte über die Perl-Funktion system() läuft blocking. D.h. FHEM reagiert in der Zeit nicht.. ziemlich blöd.
    die non-blocking qx() funktion liefert aber keinen Rückgabewert, bzw. der steht dann nur im FHEM-Logfile, und da habe ich es nicht extrahieren können.
    Die Lösung ist mittels fhem-Funktion "systemCommand". Man muss das Modul noch in myUtils.pm kopieren.
    Damit habe ich dann also in fhem erstellt:
            define fetchVicare at +*00:02:00 {systemCommand('/opt/fhem/viessmann.php','Vicare300c rawData')}
    Die Rückgabewerte der php-Datei werden in das Reading "rawData" des Dummys "Vicare300x" geschrieben. Das ergibt dann so einen Inhalt:
rawData
Installation=xxx\Gateway=xxx\Aussentemperatur=15.3\Kesseltemperatur=57\supply_temperatur=57\room_temperatur=20\Solltemperatur_normal=22\Solltemperatur_reduziert=17\Speicher-Solltemperatur=58\Speicher-Isttemperatur=57.8\Betriebsart=dhw\Brennerzustand=ok\ErrorCode=0\Programmstatus=standby\Heizkurve_Niveau=4\Heizkurve_Steigung=1.4\Brenner=0\
3. Damit man einzelne Readings bekommt muss man das Attribut userReadings mit z.B. folgendem Inhalt anlegen
vicare_aussentemperatur {my $v= ReadingsVal("Vicare300c","rawData","0"); $v=~ /Aussentemperatur=(\d+\.\d)/; return $1}, vicare_Kesseltemperatur {my $v= ReadingsVal("Vicare300c","rawData","0"); $v=~ /Kesseltemperatur=(\d+\.?\d?)/; return $1}, vicare_Speicher-Isttemperatur {my $v= ReadingsVal("Vicare300c","rawData","0"); $v=~ /Speicher-Isttemperatur=(\d+\.?\d?)/; return $1}, vicare_Speicher-Solltemperatur {my $v= ReadingsVal("Vicare300c","rawData","0"); $v=~ /Speicher-Solltemperatur=(\d+\.?\d?)/; return $1}, vicare_Programmstatus {my $v= ReadingsVal("Vicare300c","rawData","0"); $v=~ /Programmstatus=(normal|standby|reduced)/; return $1}, state {my $v= ReadingsVal("Vicare300c","rawData","0"); $v=~ /Programmstatus=(normal|standby)/; return $1}, vicare_Solltemperatur-normal {my $v= ReadingsVal("Vicare300c","rawData","0"); $v=~ /Solltemperatur_normal=(\d+\.?\d?)/; return $1}, vicare_Betriebsart {my $v= ReadingsVal("Vicare300c","rawData","0"); $v=~ /Betriebsart=(dhw|forcedReduced|forcedNormal|dhwAndHeating)/; return $1}, vicare_Heizkurve_Niveau {my $v= ReadingsVal("Vicare300c","rawData","0"); $v=~ /Heizkurve_Niveau=(\d+)/; return $1}, vicare_Heizkurve_Steigung {my $v= ReadingsVal("Vicare300c","rawData","0"); $v=~ /Heizkurve_Steigung=(\d+\.\d)/; return $1}, Speichertemperatur_gerundet {sprintf("%.0f",ReadingsVal("Vicare300c","vicare_Speicher-Isttemperatur",0))}, vicare_Brenner {my $v= ReadingsVal("Vicare300c","rawData","0"); $v=~ /Brenner=(\d+)/; return $1}4. Jetzt noch das Attribut stateFormat setzen mit Inhalt:
Speicher: vicare_Speicher-Isttemperatur °C,
Status: vicare_Programmstatus,
Flamme: vicare_Brenner

... jetzt lassen sich auch wieder schöne DOIFs und Plots generieren...

demnächst schreibe ich noch etwas zu den bash-Skripten, mit denen man die verschiedenen Modi und Temperaturen der Heizung mittels FHEM steuern kann.
Ich möchte damit versuchsweise meine Heizkurve selbständig adaptieren lassen, da man diese auch auslesen und verändern kann. Es ist ja quasi über Soll-Ist Temperatur-Deltas und Aktorpositionen erfassbar, ob die Vorlauftemperatur ausreicht oder zu gering/hoch ist. In Kombination mit der Aussentemperatur kann der Algorithmus dann entscheiden, ob Niveau, Steigung oder beides angepasst wird. Weiterhin soll die Wettervorhersage und Abwesenheit berücksichtigt werden...


btw. client-ID und client-Secret ist wohl immer gleich (das ließ sich über mitm-Attack rausfinden. Ich konnte es nicht nachvollziehen, musste die Werte aber auch nicht ändern.) Es reicht im php-Skript User und Passwort am Anfang zwischen die '' zu ergänzen.


edit: ich finde den Foren-Eintrag zur systemCommand Funktion nicht mehr , die man in die myUtils.pm kopieren muss.
    Hier der Auszug. Das stammt nicht von mir!!
sub systemCommand($;$) {

    my ($command, $reading) = @_;
$command = encode_base64($command,"");
$reading //= 0;
$reading = encode_base64($reading,"");
$command .= "|".$reading;
    my $hash = $defs{$command};
   
    Log3 "SystemCommand", 4, "Sub systemCommand - START: $command";   
BlockingKill($hash->{helper}{RUNNING_PID}) if(defined($hash->{helper}{RUNNING_PID}));
    $hash->{helper}{RUNNING_PID} = BlockingCall("systemCommand_Run", $command, "systemCommand_Done", 60, "systemCommand_Aborted", $hash) unless(exists($hash->{helper}{RUNNING_PID}));
    Log3 "SystemCommand", 4, "Sub systemCommand - START BLOCKING CALL - $command";
}

sub systemCommand_Run($) {

    my ($string) = @_;
    my ( $command, $reading ) = split("\\|", $string);
    my $result;
   
    Log3 "SystemCommand", 4, "Sub systemCommand - BEGIN SystemCommand: $command";
my $cmd = decode_base64($command);
$result = qx($cmd);
Log3 "SystemCommand", 4, "Sub systemCommand - END SystemCommand: $command, Result: $result";   
    if (!$result) {
$result = 0;
}
    $result = encode_base64($result,"");
    return "$command|$reading|$result";
}

sub systemCommand_Done($) {

    my ($string) = @_;
    my @a = split("\\|",$string);
    my $hash = $defs{$a[0]};
    my $name = $hash->{NAME};
    my $reading = $a[1];
my $result = $a[2];   
   
    delete($hash->{helper}{RUNNING_PID});
   
    Log3 "SystemCommand", 3, "Sub systemCommand_Done - $name) - Der Helper ist disabled. Daher wird hier abgebrochen" if($hash->{helper}{DISABLED});
    return if($hash->{helper}{DISABLED});
   
    $reading = decode_base64($reading);
if ($reading) {
if ((split(" ",$reading)) == 2 && $defs{(split(" ",$reading))[0]}) {
$result = decode_base64($result);
# add slashes at the end of lines for valid multiline readings
$result =~ s/\n/\\/g;
# $result =~ /(Sender:\s)(\+\d*)\s/;
fhem "setreading " . (split("\\|",$reading))[0] . " " . (split("\\|",$reading))[1] . " " . $result;
Log3 "SystemCommand", 4, "Sub systemCommand_Done - Result: $result, Reading: $reading";
} else {
Log3 "SystemCommand", 3, "Sub systemCommand_Done ERROR - device reading '$reading' not valid or device does not exist. Use setreading syntax like 'Device MyReading'";
}
} elsif ($result) {
Log3 "SystemCommand", 4, "Sub systemCommand_Done INFO - existing system command result has been ignored because you did not specify a device reading.";
}
       
}

sub systemCommand_Aborted($) {

    my ($hash) = @_;
    my $name = $hash->{NAME};

    delete($hash->{helper}{RUNNING_PID});
    Log3 "SystemCommand", 3, "Sub systemCommand_Aborted - $name - The BlockingCall Process terminated unexpectedly. Timedout.";
}
« Letzte Änderung: 15 September 2018, 22:55:25 von renardfm »
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline dr_laplace

  • New Member
  • *
  • Beiträge: 28
Antw:Viessmann VitoConnect API
« Antwort #49 am: 17 September 2018, 15:18:11 »
Das PHP Script hat super funktioniert. Danke. TOP :)

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #50 am: 17 September 2018, 16:50:25 »
@renardfm Kurz und bündig: TOP Leistung!!!  8)
"

Offline ritschi

  • New Member
  • *
  • Beiträge: 39
Antw:Viessmann VitoConnect API
« Antwort #51 am: 18 September 2018, 10:05:20 »
demnächst schreibe ich noch etwas zu den bash-Skripten, mit denen man die verschiedenen Modi und Temperaturen der Heizung mittels FHEM steuern kann.


Ich habe mich mal an Hand der Informationen aus dem französischen Forum an den Bash Scripten probiert und ich muss sagen, dass wechseln der Modi an Hand von Anwesenheit oder Temperatur funktioniert wunderbar.

Dieses Script setzt die Heizung auf Heizen und Warmwasser (Vitodens 300) (mode:dhwAndHeating) (Warmwasser mode:dhw)
isiwebuserid & isiwebpasswd muss eingetragen werden, sowie in der unteren URL <ID> und <GATEWAY> (ID und GATEWAY findet man durch renardfm Beitrag heraus) 
#!/bin/bash
export CLIENTID=79742319e39245de5f91d15ff4cac2a8
export CLIENTSECRET=8ad97aceb92c5892e102b093c7c083fa
export TOKEN_EP=https://iam.viessmann.com/idp/v1/token
export AUTHZ_EP=https://iam.viessmann.com/idp/v1/authorize
export SCOPE=openid
export REDIRECTURI=vicare://oauth-callback/everest
export isiwebuserid=<BENUTZER>
export isiwebpasswd=<PASSWORT>
CODE=`curl -s -k --user "$isiwebuserid:$isiwebpasswd" "$AUTHZ_EP?client_id=$CLIENTID&scope=$SCOPE&redirect_uri=$REDIRECTURI&response_type=code"| grep -Eio 'code=(.)*"'|  cut -c"6-" | sed 's/.$//'`
#echo "CODE=$CODE"
TOKEN=`curl -s -k --user "$CLIENTID:$CLIENTSECRET" -d "code=$CODE&grant_type=authorization_code&client_id=$CLIENTID&redirect_uri=$REDIRECTURI" $TOKEN_EP | sed 's/{"access_token":"//' | sed 's/".*//'`
#REP_STATUS=`curl -k -H "AUTHORIZATION: Bearer $TOKEN" "https://api.viessmann-platform.io/operational-data/installations/votre_numero/gateways/votre_numero/devices/0/features/heating.circuits.0.operating.modes.active?expanded=false&"`
#echo "$REP_STATUS"
REP=`curl -X POST  https://api.viessmann-platform.io/operational-data/installations/<ID>/gateways/<GATEWAY>/devices/0/features/heating.circuits.0.operating.modes.active/setMode -S -s -H "Content-Type: application/json" -H "AUTHORIZATION: Bearer $TOKEN" -d '{"mode":"dhwAndHeating"}'`
echo "$REP"
"

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15715
Antw:Viessmann VitoConnect API
« Antwort #52 am: 18 September 2018, 10:10:53 »
edit: ich finde den Foren-Eintrag zur systemCommand Funktion nicht mehr , die man in die myUtils.pm kopieren muss.
    Hier der Auszug. Das stammt nicht von mir!!
sub systemCommand($;$) {

    my ($command, $reading) = @_;
$command = encode_base64($command,"");
$reading //= 0;
$reading = encode_base64($reading,"");
$command .= "|".$reading;
    my $hash = $defs{$command};
   
    Log3 "SystemCommand", 4, "Sub systemCommand - START: $command";   
BlockingKill($hash->{helper}{RUNNING_PID}) if(defined($hash->{helper}{RUNNING_PID}));
    $hash->{helper}{RUNNING_PID} = BlockingCall("systemCommand_Run", $command, "systemCommand_Done", 60, "systemCommand_Aborted", $hash) unless(exists($hash->{helper}{RUNNING_PID}));
    Log3 "SystemCommand", 4, "Sub systemCommand - START BLOCKING CALL - $command";
}

sub systemCommand_Run($) {

    my ($string) = @_;
    my ( $command, $reading ) = split("\\|", $string);
    my $result;
   
    Log3 "SystemCommand", 4, "Sub systemCommand - BEGIN SystemCommand: $command";
my $cmd = decode_base64($command);
$result = qx($cmd);
Log3 "SystemCommand", 4, "Sub systemCommand - END SystemCommand: $command, Result: $result";   
    if (!$result) {
$result = 0;
}
    $result = encode_base64($result,"");
    return "$command|$reading|$result";
}

sub systemCommand_Done($) {

    my ($string) = @_;
    my @a = split("\\|",$string);
    my $hash = $defs{$a[0]};
    my $name = $hash->{NAME};
    my $reading = $a[1];
my $result = $a[2];   
   
    delete($hash->{helper}{RUNNING_PID});
   
    Log3 "SystemCommand", 3, "Sub systemCommand_Done - $name) - Der Helper ist disabled. Daher wird hier abgebrochen" if($hash->{helper}{DISABLED});
    return if($hash->{helper}{DISABLED});
   
    $reading = decode_base64($reading);
if ($reading) {
if ((split(" ",$reading)) == 2 && $defs{(split(" ",$reading))[0]}) {
$result = decode_base64($result);
# add slashes at the end of lines for valid multiline readings
$result =~ s/\n/\\/g;
# $result =~ /(Sender:\s)(\+\d*)\s/;
fhem "setreading " . (split("\\|",$reading))[0] . " " . (split("\\|",$reading))[1] . " " . $result;
Log3 "SystemCommand", 4, "Sub systemCommand_Done - Result: $result, Reading: $reading";
} else {
Log3 "SystemCommand", 3, "Sub systemCommand_Done ERROR - device reading '$reading' not valid or device does not exist. Use setreading syntax like 'Device MyReading'";
}
} elsif ($result) {
Log3 "SystemCommand", 4, "Sub systemCommand_Done INFO - existing system command result has been ignored because you did not specify a device reading.";
}
       
}

sub systemCommand_Aborted($) {

    my ($hash) = @_;
    my $name = $hash->{NAME};

    delete($hash->{helper}{RUNNING_PID});
    Log3 "SystemCommand", 3, "Sub systemCommand_Aborted - $name - The BlockingCall Process terminated unexpectedly. Timedout.";
}

Hier ist das Original zu finden.
https://forum.fhem.de/index.php/topic,28753.msg501336.html#msg501336
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

Offline thetrueavatar

  • Newbie
  • Beiträge: 1
Antw:Viessmann VitoConnect API
« Antwort #53 am: Gestern um 08:47:34 »
Hello, I'm the developer of the viessmann-api on https://github.com/thetrueavatar/Viessmann-API. I don't speak german but can write in english.
I have been developing the api for 2 week and now it's quite ok I guess.
The usage is quite simple. The api is package as a phar(php archive). You only need to download the release on https://github.com/thetrueavatar/Viessmann-Api/releases to use it in your php file by including it with the line:
include 'phar://'.__DIR__.'/Viessmann-Api-0.3-SNAPSHOT.phar/index.php'; The main object to use is ViessmannAPI that you can use with a
use Viessmann\API\ViessmannAPI; However, to ease the use of my api, I have done a couple of example in the example directory. In this directory the bootstrap.php does everything to instanciate the api. It use a credentials.properties file to get the viessmann credentials. So in practice you need to put the phar, the bootstrap.php and the credentials.properties in the same directory. THen fill in your credentials in the credentials.properties Then create your php file like this for instance:
<?php include __DIR__.'/bootstrap.php'
echo 
"Boiler temperature " $viessmannApi->getBoilerTemperature();
and voila this is it you get the boiler temperature. I have implemented generic method to get and set data but you'll receive and fill in json. I'm trying to implement easier method such as getBoilerTemperature() to hide the complexity of the json. Feel free to contact me through the github. Any pull request is appreciate too. Hope this help.

​​​​​​​I have tried to give so more documentation on the wiki page: https://github.com/thetrueavatar/Viessmann-Api/wiki
« Letzte Änderung: Gestern um 08:49:48 von thetrueavatar »

 

decade-submarginal