FHEM Forum

FHEM - Anwendungen => Heizungssteuerung/Raumklima => Thema gestartet von: ritschi am 22 März 2018, 06:53:24

Titel: Viessmann VitoConnect API
Beitrag von: ritschi 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi 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.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi 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.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: seppe 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 02 April 2018, 16:24:52
Zitatokay 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?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: seppe 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

Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: seppe 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!!
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 16 April 2018, 08:08:13
Zitat von: seppe 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!!

Bei mir sind die beiden Readings bereis schon richtig in kWh formatiert.  Ich hol mir nur alles, was ich benötige in UserReadings.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 19 April 2018, 13:07:40
Mal ein Beispiel, welche Daten man so bekommt:
Titel: Antw:Viessmann VitoConnect API
Beitrag von: demaya am 28 April 2018, 16:13:46
Wie lang / kurz ist euer Intervall für HTTPMOD in Sekunden?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 28 April 2018, 16:30:28
Zitat von: demaya am 28 April 2018, 16:13:46
Wie lang / kurz ist euer Intervall für HTTPMOD in Sekunden?
Ich habe 120sek eingestellt


Gesendet von iPhone mit Tapatalk
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm am 18 Mai 2018, 18:03:51
Auslesen geht jetzt..juhuu..

Hat jemand schon versucht auch etwas zu verstellen?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 18 Mai 2018, 22:11:43
Zitat von: renardfm am 18 Mai 2018, 18:03:51
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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: andies am 19 Mai 2018, 06:36:18
Zitat von: ritschi am 19 April 2018, 13:07:40
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):
Titel: Antw:Viessmann VitoConnect API
Beitrag von: seppe am 20 Mai 2018, 07:52:20
Zitat von: ritschi am 19 April 2018, 13:07:40
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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 20 Mai 2018, 13:54:42
Hier sind die Screenshots von meiner Grafana Konfiguration
Titel: Antw:Viessmann VitoConnect API
Beitrag von: avg123-de 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi 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 @.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: avg123-de am 28 Mai 2018, 21:33:35
Zitat von: ritschi am 28 Mai 2018, 09:53:41
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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 29 Mai 2018, 06:31:11
Zitat von: avg123-de am 28 Mai 2018, 21:33:35
Danke, hat direkt funktioniert!

viele Grüße
Alexander

Super das freut mich ...
Titel: Antw:Viessmann VitoConnect API
Beitrag von: BlackHawk133 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....
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Shadow3561 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Shadow3561 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 07 Juli 2018, 20:32:22
Leider passen die Nummern nicht .. tut mir leid


Gesendet von iPhone mit Tapatalk
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Shadow3561 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm 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/
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 20 Juli 2018, 06:43:12
Zitat von: renardfm 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/

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

Hier eine kleine Anleitung
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Shadow3561 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.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 20 Juli 2018, 08:47:41
Zitat von: Shadow3561 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.

Komisch, ich logge mich mit den Zugangdaten meiner App (ViCare) ... Hast du dich vielleicht vertippt?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Shadow3561 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.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Shadow3561 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 22 Juli 2018, 10:25:26
Da kann ich mich auch nicht anmelden


Gesendet von iPhone mit Tapatalk
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Viprex am 03 August 2018, 00:00:47
Zitat von: ritschi am 20 Juli 2018, 06:43:12
Mensch, manchmal kann es doch so einfach sein. Danke für den Hinweis.

Hier eine kleine Anleitung

  • Ruft https://api.viessmann.io/estrella/rest/v2.0/gateways/ auf
    Die Zahl bei "id" ist Eure GatewayID und fügt sie an die URL an und ergänzt noch /controllers https://api.viessmann.io/estrella/rest/v2.0/gateways/GATEWAYID

  • Die URL müsste nun so aussehen https://api.viessmann.io/estrella/rest/v2.0/gateways/<GATEWAYID>/controllers .

    Die nächste ID ist Eure Controller ID, die kommt hinter "controllers"
    hen https://api.viessmann.io/estrella/rest/v2.0/gateways/<GATEWAYID>/controllers /<CONTROLLERID>/


  • Komplett sieht das eure URL so aus...
    https://api.viessmann.io/estrella/rest/v2.0/gateways/<GATEWAYID>/controllers/<CONTROLERID>/datapoints

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

Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm 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

ZitatFü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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: andies 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm 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 :-)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: budaks 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm 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.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Philipp_CGN 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

Viele Grüße
Philipp
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm 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...
Titel: Antw:Viessmann VitoConnect API
Beitrag von: seppe 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?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm 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.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: seppe am 03 September 2018, 20:25:28
Ja genau, das scheint mit dem Iphone leider nicht zu funktionieren...
Titel: Antw:Viessmann VitoConnect API
Beitrag von: dr_laplace 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



Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm 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.";
}

Titel: Antw:Viessmann VitoConnect API
Beitrag von: dr_laplace am 17 September 2018, 15:18:11
Das PHP Script hat super funktioniert. Danke. TOP :)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 17 September 2018, 16:50:25
@renardfm Kurz und bündig: TOP Leistung!!!  8)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 18 September 2018, 10:05:20
Zitat von: renardfm am 15 September 2018, 22:38:57
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"
Titel: Antw:Viessmann VitoConnect API
Beitrag von: CoolTux am 18 September 2018, 10:10:53
Zitat von: renardfm am 15 September 2018, 22:38:57
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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 23 September 2018, 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
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 25 September 2018, 11:15:47
Zitat von: renardfm 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.


Ich hänge bei Punkt 5.
Ich habe mit sudo apt install php-curl nachinstalliert und auch neugestartet
Er installiert auch alles. Allerdings kann ich den Befehl sudo php viessmann.php nicht ausführen. Er erkennt den Command php nicht. Woran kann das liegen?

Edit:
Ein weitere Frage.
Ich habe in Deiner PHP Datei meine Anmeldenamen und mein Passwort eingetragen. Reicht das?
Ich habe ebenfalls versucht über Packet Capture die Daten der ViCare zu tracken, allerding meldet die App sobald ich diese starte, dass die Verbindung zum Server nicht gefunden wird und es kommen keine Daten an.  ???

Ich konnte den Fehler weiter eindämmen. In der ersten Zeile in viessmann.php steht usr/bin/php. Dieser Ordner wird bei mir gar nicht erstellt. Wo speichere ich denn die viessmann.php und was muss ich da reinschreiben?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 25 September 2018, 13:28:50
cool hat auf anhieb funktioniert..
wie sieht es mit "brennerstarts" aus .. und es müsste doch auch funktionieren die werte zu setzen.. also "modus wechseln" usw?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 25 September 2018, 14:16:59
Also ich habe es jetzt eine Stunde versucht. Mittagspause ist zu Ende.
Bei mir hängt es denke ich an php-Ausführung. Ich habe nun das aktuellste Stretch- auf meinem Raspberry laufen und mehrfach php installiert und deinstalliert. Das Verzeichnis
/usr/bin/php 
wird nicht angelegt. Allerdings erhalte ich mit der Abfrage
which php
genau den genannten Ordner.

Das aktuelle PHP ist bei in Version 7.0. und nicht wie verlinkt 5.6. Kann das daran liegen?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 25 September 2018, 14:33:09
Zitat von: Frini am 25 September 2018, 14:16:59
Also ich habe es jetzt eine Stunde versucht. Mittagspause ist zu Ende.
Bei mir hängt es denke ich an php-Ausführung. Ich habe nun das aktuellste Stretch- auf meinem Raspberry laufen und mehrfach php installiert und deinstalliert. Das Verzeichnis
/usr/bin/php 
wird nicht angelegt. Allerdings erhalte ich mit der Abfrage
which php
genau den genannten Ordner.

Das aktuelle PHP ist bei in Version 7.0. und nicht wie verlinkt 5.6. Kann das daran liegen?

probiere:
php -f pfad/zur/datei.php

ich habe mit mittlweriwele dies angeguckt:
https://github.com/thetrueavatar/Viessmann-Api/tree/master
in den examples sind auch "set" methoden.. ich verusche gerade mal etwas wie "setnormal mode" und "set away mode" nach zu bauen
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 25 September 2018, 15:03:28
Nein klappt leider nicht.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 25 September 2018, 15:49:23
Zitat von: Frini am 25 September 2018, 15:03:28
Nein klappt leider nicht.


erstelle eine neue datei mit dem ihnalt
<?php echo "hallo welt"?>
speichere sie als test.php

und führe im terminal folgendes aus

php -f test.php

wie ist die ausgabe?

und was sagt
php -v
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 25 September 2018, 19:49:10
Datei habe ich erstellt.
Hier mal die Eingaben:

pi@raspberrypi:/opt/fhem $ php -f test.php
-bash: /usr/bin/php: /usr/bin/php^M: bad interpreter: No such file or directory



pi@raspberrypi:/opt/fhem $ sudo php -f test.php
sudo: unable to execute /usr/bin/php: No such file or directory


pi@raspberrypi:/opt/fhem $ php -v
-bash: /usr/bin/php: /usr/bin/php^M: bad interpreter: No such file or directory



pi@raspberrypi:/opt/fhem $ sudo php -v
sudo: unable to execute /usr/bin/php: No such file or directory


Also ich habe kein Verzeichnis usr/bin
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 25 September 2018, 21:25:12
hast du php überhaupt installiert?
entweder:
which php

bzw hast du eine auto vervollständigung auf php? ..
also tippe ph und dann 2mal schnell TAB-Taste..

das verzeichnis  /usr/bin/ hat man immer sonst würde sehr viel nicht gehen, ist ja quasi der "programme" ordner ..
php da drin ist eigentlich eine verknüpfung (symbolische link)

ls -la /usr/bin/

oder mal mit sudo proboeren
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 25 September 2018, 21:39:01
ph mit doppelt tab ergibt:
pi@raspberrypi:/opt/fhem $ ph
phar          phar.phar     php           phpdismod     phpquery
phar7.0       phar.phar7.0  php7.0        phpenmod

Ich habe es geschafft.
mit dem aufruf php7.0 viessmann.php kann ich unter putty auf die Heizung zugreifen  ;D
pi@raspberrypi:/opt/fhem $ php7.0 viessmann.php
.#!/usr/bin/php
Installation=XXXXXXXXXXX
Gateway=XXXXXXXXXXXXXXXXXX
Aussentemperatur=8.7
Kesseltemperatur=32.5
supply_temperatur=32.5
PHP Notice:  Undefined index: value in /opt/fhem/viessmann.php on line 66
room_temperatur=
Solltemperatur_normal=20
Solltemperatur_reduziert=16
Speicher-Solltemperatur=55
Speicher-Isttemperatur=47.7
Betriebsart=dhwAndHeating
Brennerzustand=ok
ErrorCode=0
Programmstatus=normal
Heizkurve_Niveau=0
Heizkurve_Steigung=0.8
Brenner=1

Habe jetzt das at in fhem auf
+*00:02:00 {systemCommand('php7.0 /opt/fhem/viessmann.php','dum.Vitodens rawData')} abgeändert und siehe da, es funktioniert.
Verstehen tue ich das nicht.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm am 25 September 2018, 22:19:40
Super.. dann viel Spass damit.   ;D
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 25 September 2018, 22:34:02
Danke.
Bin schon dabei.
Ich habe meine FBH mit einem Mischer eingebunden. Habe also 2 Heizkreise in der Steuerung.

Falls es noch nicht bekann ist,
die 0 hinter .circuits.0.operating bezieht sich auf den HK1

$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.circuits.0.operating.programs.normal");

eine 1 würde sich auf den HK2 beziehen
$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.circuits.1.operating.programs.normal");

Jetzt einmal beobachten und dann mal gucken, ob ich eine manuelle Aufheizung des Warmwassers hinkriege.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 27 September 2018, 07:09:51
Hallo,
ich war etwas fleißig und wollte mein vorläufiges Ergebnis mit Euch teilen.
Ich habe die php-Datei von renardfm weiter aufgebaut und an meine Situation (Vitodens 333f, Heizkreis 1 ohne Mischer, Heizkreis 2 mit Mischer, Warmwasserbereitun, keine Raumaufschaltung) angepasst.
Die Userreadings habe ich wie folgt abgeändert:
vicare_Aussentemperatur {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /Aussentemperatur=(\d+\.\d)/; return $1},
vicare_Kesseltemperatur {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /Kesseltemperatur=(\d+\.?\d?)/; return $1},
vicare_Brennerzustand {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /Brennerzustand=(ok|False)/; return $1},
vicare_Brenner {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /Brenner=(\d+)/; return $1},
Warmwasser-Isttemperatur {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /WW-Isttemperatur=(\d+\.?\d?)/; return $1},
Warmwasser-Solltemperatur {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /WW-Solltemperatur=(\d+\.?\d?)/; return $1},
HK1_Programmstatus {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK1-Programmstatus=(normal|standby|reduced)/; return $1},
HK1_Betriebsart {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK1-Betriebsart=(dhwAndHeating|forcedReduced|forcedNormal|dhw)/; return $1},
HK1_Heizkurve_Niveau {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK1-Heizkurve_Niveau=(\d+)/; return $1},
HK1_Heizkurve_Steigung {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK1-Heizkurve_Steigung=(\d+\.\d)/; return $1},
HK1_Vorlauftemperatur {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK1-Vorlauftemperatur=(\d+\.?\d?)/; return $1},
HK1_Solltemperatur-normal {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK1-Solltemperatur_normal=(\d+\.?\d?)/; return $1},
HK1_Solltemperatur-reduziert {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK1-Solltemperatur_reduziert=(\d+\.?\d?)/; return $1},
HK1_Solltemperatur-eco {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK1-Solltemperatur_eco=(\d+\.?\d?)/; return $1},
HK1_Solltemperatur-comfort {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK1-Solltemperatur_comfort=(\d+\.?\d?)/; return $1},
HK2_Programmstatus {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK2-Programmstatus=(normal|standby|reduced)/; return $1},
HK2_Betriebsart {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK2-Betriebsart=(dhwAndHeating|forcedReduced|forcedNormal|dhw)/; return $1},
HK2_Heizkurve_Niveau {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK2-Heizkurve_Niveau=(\d+)/; return $1},
HK2_Heizkurve_Steigung {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK2-Heizkurve_Steigung=(\d+\.\d)/; return $1},
HK2_Vorlauftemperatur {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK2-Vorlauftemperatur=(\d+\.?\d?)/; return $1},
HK2_Solltemperatur-normal {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK2-Solltemperatur_normal=(\d+\.?\d?)/; return $1},
HK2_Solltemperatur-reduziert {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK2-Solltemperatur_reduziert=(\d+\.?\d?)/; return $1},
HK2_Solltemperatur-eco {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK2-Solltemperatur_eco=(\d+\.?\d?)/; return $1},
HK2_Solltemperatur-comfort {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK2-Solltemperatur_comfort=(\d+\.?\d?)/; return $1},
Speichertemperatur_gerundet {sprintf("%.0f",ReadingsVal("dum.Vitodens","vicare_Warmwasser-Isttemperatur",0))},
state {my $v= ReadingsVal("dum.Vitodens","rawData","0"); $v=~ /HK1-Programmstatus=(normal|standby)/; return $1}


Die Brennerstarts tracke ich mit dem Modul HourCounter, um das Verhalten der Heizung jetzt in der beginnenden Heizperiode zu verstehen. Da die Heizung erst seit einem Monat in unserem Haus wohnt, starte ich quasi jetzt mit der Optimierung.

Folgende Werte vermisse ich noch:
Rücklauftemperatur der Heizkreise
Gasverbrauch (Könnte man anhand der Brennerleistung, und Brennerbetriebszeit errechnen)
Wochenplan Heizrkreise
Wochenplan Warmwasser
Brennerleistung
Warmwasserzirkulation

Folgende Variablen habe ich noch gefunden, welche vielleicht zu meinen fehlenden Werten passen könnten.
const HEATING_GAS_CONSUMPTION_DHW="heating.gas.consumption.dhw";
const HEATING_DWH_TEMPERATURE_OUTLET="heating.dhw.sensors.temperature.outlet";
const HEATING_DWH_SCHEDULE="heating.dhw.schedule";

Am Wochenende versuche ich dann mal den Post von thetrueavatar (Ersteller der API) umzusetzen
Eine Steuerung folgender Werte ist später mein Ziel:
manuelle Wasseraufbereitung (forcednormal)
Setzen der Solltemperatur-normal bei beiden Heizkreisen auf 22°C
Starten der Warmwasserzirkulation
Urlaubsmodus der Heizung aktivieren
Setzen der Betriebsart (dhwAndHeating|dhw)


Eine vielleicht blöde Frage hätte ich noch, welche Variante ist besser? Alles in eine PHP (Lösung von renardfm) zu packen oder mittels phar Archiv (Französische Lösung) zu arbeiten?

Ich bin tierisch froh, dass ich soweit gekommen bin. Ich hatte die Hoffnung schon aufgegeben, die Vitodens mit FHEM zu koppeln, da ich nicht bereit bin auf die 5 Jahres-Garantie zu verzichten.

Ich wünsche einen schönen Arbeitstag







Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 27 September 2018, 07:29:21
Helllo,
I'm struggling with the viessmann service to get my hot storage water temperature.
I have been using the "heating.dhw.sensors.temperature.hotWaterStorage" feature but I have got a 404 meaning no data. However, data is still available with the old SOAP service used by Vitotrol Plus.
Can you tell me how do you get your hot storage water temperature ? I have got a Vitodens 300+ Vitocelle 100B.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 27 September 2018, 07:59:41
Hi,
it could be a difference between an internal water storage and an external storage. My Vitodens 33 has an internal and I get the temperature with the below one.

Maybe something like "heating.circuits.dhw.sensors.temperature.hotWaterStorage" or "heating.circuits.0.sensors temperature.hotWaterStorage" works?

Is there a possibility to get a list of which temperatures can be requested? I am searching for te return temperature of the heating circuits.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 27 September 2018, 08:44:33
I have tried both feature but still get a 404.  :-\
Well since available data depends of the installation, what I usually do is to call the getFeatures() on my installation with my API. So that I receive a json which contains 84 feature for me. I'm using an xml editor that can display json to see what are the interesting values. I have added some screenshot so you see how does it looks. I have removed all the feature without properties(and so value) and so siren boilerplate data(links,rel)  that as no interest for us

However, by decompiling ViCare app I have see they have embedded "demo" json sample. One file per feature. I'm not sure that it's an exhaustive list of all the "feature" available.
I will add it to the github resources directory https://github.com/thetrueavatar/Viessmann-API
I will have a look to see if there is an external hot storage feature. That sould explain why some people can get their hot storage temperature while I don't
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 27 September 2018, 14:20:35
Ich habe jetzt in der Mittagspause versucht mir einmal das Heizprogramm (Schedule) heraus zu ziehen. Scheitere aber kläglich mit der Fehlermeldung string to Array conversion

[///Heizkreis1Schedule
$resource = getResource($access_token, "https://api.viessmann-platform.io/operational-data/installations/$installation/gateways/$gw/devices/0/features/heating.circuits.0.circulation.schedule");
debug_msg("resource: $resource", $debug);
//echo $resource;
$schedule = strval(json_decode($resource, true)["properties"]["entries"]["value"]);
echo "HK1-Heizkurve_Scheduletest2=$schedule\n";code]

Wenn ich das richtig verstanden habe, müsste der Schedule als Array hinterlegt sein. Hat es schon jemand geschafft?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: mawi am 30 September 2018, 18:45:19
Hallo ,
könntet Ihr bitte euren entsprechenden Passagen der fhem.cfg und den 99_MyUtils  posten?
Event Monitor zeigt bei mir zwar das die Werte kommen ich kann sie jedoch nicht wirklich verwerten.
LG
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 01 Oktober 2018, 09:31:03
Hallo,
ich habe mal das Ergebnis von der GetFeature() Abfrage angehangen. Auf die Werte reduziert, wo properties und values ausgefüllt waren.
Ich habe leider nichts zur Brennerleistung, CirculationPump gefunden  :(
@thetrueavatar:
I have attached the GetFeature result. Do you think, there will be a possibility to set the schedules via php?
Hopes, that Viessmann will add more functions to the api. I am missing the burner modulation or power or pump time. With the old Vitrotol Plus this should work.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 01 Oktober 2018, 10:11:35
Zitat von: Frini am 01 Oktober 2018, 09:31:03
Hallo,
ich habe mal das Ergebnis von der GetFeature() Abfrage angehangen. Auf die Werte reduziert, wo properties und values ausgefüllt waren.
Ich habe leider nichts zur Brennerleistung, CirculationPump gefunden  :(
@thetrueavatar:
I have attached the GetFeature result. Do you think, there will be a possibility to set the schedules via php?
Hopes, that Viessmann will add more functions to the api. I am missing the burner modulation or power or pump time. With the old Vitrotol Plus this should work.
It's indeed possible to write and get schedule through the getJsonrawData and setJsonRawData.
Here is how to get hot water,circulation and heating schedule:

<?php
include __DIR__.'/bootstrap.php';
use 
Viessmann\API\ViessmannAPI;
echo 
"Get Hot Water schedule " $viessmannApi->getRawJsonData(ViessmannApi::HEATING_DWH_SCHEDULE). "\n";
echo 
"Get circulation schedule " $viessmannApi->getRawJsonData("heating.circuits.0.circulation.schedule"). "\n";
echo 
"Get Heating schedule " $viessmannApi->getRawJsonData("heating.circuits.0.heating.schedule");

For updating schedule you should find in the actions part of the json the data to provide to the setRawJsonData. I will add heating.circuits.0.circulation.schedule and heating.circuits.0.heating.schedule as constant.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 01 Oktober 2018, 17:20:27
Oh great. I see the schedule now on my raspberry.
Now I have to learn, how I can transfer the array into a readingsgroup. I just wanna see the schedules for information.  :D Thank you very much.

Do you have seen an entry about the "party mode"? I haven't found it in my getfeature() list. This should be very nice, for an manual hotwater  loading.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 05 Oktober 2018, 10:49:23
hat mittlerweile jemand was zu brennerstarts gefunden?
könnte man ggf heating.burner  (liefert 1 oder 0) zählen (wie oft sich der wert ändert) um daraus die brennerstarts ab leiten
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm am 05 Oktober 2018, 11:12:03
In meiner angehängten viessmann.php werden die Starts ausgegeben.. bzw Brenner=0, Brenner=1 ... leider nicht die Stufe..


Zitat von: renardfm 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.";
}

Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 05 Oktober 2018, 12:33:06
Hallo,
ich zähle die Rückmeldung aus der PHP vicare_Brenner mit HourCounter und schreibe mir nachts um 23:59 via at die CountsPerDay in ein Reading im  Hauptdummy. So habe ich die aktuellen Brennerstarts pro Tag und die GesamtBrennerstarts im Log und kann diese im Plot visualisieren.

Ich habe leider auch noch keine Möglichkeit gefunden die Modulation zu finden und ähnlich auch die Pumpenleistung. Wird aber mit geffeature auch nicht von der Heizung übermittelt. Ich denke, da müssen wir auf Viessmann warten. Die werden hoffentlich im 4. Quartal die Vicare App updaten. Ich hoffe wirklich, dass da neue Funktionen dazukommen.
Warmwassereinmalladung wäre für mich wirklich hilfreich, genau wie die Verbräuche/Brennerleistung.

Ich habe es übrigens geschafft die Schedules auszulesen. Allerdings bin ich bisher zu blöd diese Ausgabe so aufzubereiten, dass ich damit Readings in FHEM füllen kann.
"mon":[{"start":"05:00","end":"07:00","mode":"normal","position":0},{"start":"05:00","end":"07:00","mode":"normal","position":1},{"start":"05:00","end":"07:00","mode":"normal","position":2}],"tue":[{"start":"05:00","end":"07:00","mode":"normal","position":0}],"wen":[{"start":"05:00","end":"07:00","mode":"normal","position":0}],"thu":[{"start":"05:00","end":"07:00","mode":"normal","position":0},{"start":"11:00","end":"13:00","mode":"normal","position":1},{"start":"16:00","end":"22:00","mode":"normal","position":2}],"fri":[{"start":"05:00","end":"07:00","mode":"normal","position":0}],"sat":[{"start":"05:00","end":"07:00","mode":"normal","position":0}],"sun":[{"start":"05:00","end":"07:00","mode":"normal","position":0}],

Ich möchte im ersten Step die Zeitpläne visualieren und dann darüber Abfragen laufen lassen.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 07 Oktober 2018, 12:13:11
Zitat von: renardfm am 05 Oktober 2018, 11:12:03
In meiner angehängten viessmann.php werden die Starts ausgegeben.. bzw Brenner=0, Brenner=1 ... leider nicht die Stufe..

Brenner=1 und Brenner=0 bekomme ich auch.
ich suche
BrennerStarts 15080
BrennerStartsDayStart 15080.00
BrennerStartsLastDay0
BrennerStartsToday 0.00

wenn man mit dem optischen sensor direkt an den kessel geht kann das fhem viessmann modul die brennerstarts auslesen
ich glaube die vicare api kann das nicht (gibt es in der offiziellen app auch nicht)

Brenner=1 und Brenner=0... bedeutet glaube ich nur ob die heizung generell an oder aus ist
ich glaube der wechsel während des betriebes nicht von 1 auf 0.. (ich teste das mal)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm am 07 Oktober 2018, 12:52:50
Ok..
Ja das Brenner=1 .. an und Brenner=0 .. aus habe ich so gemacht um zu sehen wie die Taktung ist. War ein wenig kniffelig, da der Datentyp Boolean ist. Die Vicare App hat leider einige Werte nicht, egal ob sie angezeigt werden oder nicht. Ich hoffe da kommt demnächst noch was.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 07 Oktober 2018, 13:27:52
Ich hab mich mal vor die Heizung gesetzt und beobachtet Brenner =1 ist der Brennerzustand also an oder aus. Mit dem HiurCounter kannst du dir die Readings selber erzeugen. Klar wäre das schöner direkt aus der Heizung. Aber mal gucken. Viessmann hat für Q4 2018 und Q1 2019 weitere Funktionen für die App zugesagt.

Habt ihr eine Idee, wie man eine Einmalladung für das Warmwasser generieren könnte?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 07 Oktober 2018, 14:07:44
jop habe mir gerade auch einen notify gebaut der triggert wenn sich brenner ändert.
ich gucke mir mal
an, danke..
ich würde jetzt auch ein file log erzeugen und dann ein plot .. da kann man glaube ich auch die summe von mehreren einträgen anzeigen lassen
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 07 Oktober 2018, 14:56:31
So sieht das bei mir aktuell aus.
Das erste ist nen TemperaturenPlot um die Anlage näher kennen zu lernen. Ist ja noch neu und muss noch eingestellt/ optimiert werden.
Das zweite sind die Brennerstars pro Tag.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 07 Oktober 2018, 21:29:44
kannst du mir sagen wie du das zweite chart realisiert hast?
das erste sieht bei mir ganz ähnlich aus habe noch einen rücklauf und einen  innen temparatur sensor
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 08 Oktober 2018, 08:33:15
Ich schreibe jeden abend um 23:59 die Brennerstarts aus dem CountsperDay Reading in mein Vitodens device namens Brennerstarts Vortag.
Das Reading Brennerstarts wird normal im FileLog mit den anderen Temperaturen gespeichert.

Ich erzeuge ein Filelog nur mit den BrennerstartsVortag.
Folgende Attribute habe ich gesetzt:
fixedrange: month
plotsize: 1400,300

Die Datenlinien werden als bars mit l1fill dargestellt.
Die Skala habe ich auf 30 meine ich begrenzt. Alles darüber möchte ich eh nicht sehen.

Sorry, für die ungenauen Angaben, sitze gerade auf der Arbeit. Kann Dir wenn benötigt heute Abend noch mal den Code schicken.

Aktuell ist es so, dass ich die BrennerstartsVortag zusammen mit den anderen Daten alle 2 Minuten in das Filelog schreibe. Das kann man natürlich auch noch ändern und in einen seperaten Log schreiben.



Titel: Antw:Viessmann VitoConnect API
Beitrag von: tnt99 am 08 Oktober 2018, 11:07:11
Hallo zusammen,

erst einmal großes Lob für das PHP-API. Es funktioniert sehr gut, aber etwas ganz entscheidendes fehlt mir noch. Ich habe einen Vitoligno, also einen Holzvergaser mit Pufferspeichern.
Ich muss den Brenner starten, wenn die Temperatur der Pufferspeicher unter einen gewissen Wert sinkt.

Daher ist es für mich ganz entscheidend, die IST-Temperatur der Pufferspeicher abzufragen. Weiß jemand, ob - und mit welchem "feature" das möglich ist??


Viele Grüße,

Sebastian
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 08 Oktober 2018, 13:01:56
Ich habe eine getfeature Abfrage ein paar Post weiter vorne hochgeladen.
Das versuch bei Dir auch mal, dann dürftest Du die Adressen sehen, welche in Deiner Heizung verfügbar sind.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 08 Oktober 2018, 15:04:09
Zitat von: tnt99 am 08 Oktober 2018, 11:07:11
Hallo zusammen,

erst einmal großes Lob für das PHP-API. Es funktioniert sehr gut, aber etwas ganz entscheidendes fehlt mir noch. Ich habe einen Vitoligno, also einen Holzvergaser mit Pufferspeichern.
Ich muss den Brenner starten, wenn die Temperatur der Pufferspeicher unter einen gewissen Wert sinkt.

Daher ist es für mich ganz entscheidend, die IST-Temperatur der Pufferspeicher abzufragen. Weiß jemand, ob - und mit welchem "feature" das möglich ist??


Viele Grüße,

Sebastian
Hello. Just to tell you I have update the wiki to provide a list of feature that I have found by decompiling ViCare App. Most of them are already use by my API but due to limitation of my device some are not available while testing such as     heating.dhw.sensors.temperature.hotWaterStorage
https://github.com/thetrueavatar/Viessmann-Api/wiki/English

I have also done some update to be able to use different circuit number and deviceId such as show hereby:

<?php
include __DIR__.'/../index.php';
use 
Viessmann\API\ViessmannAPI;
$credentials file(__DIR__."/credentials.properties");
$params = [
    
"user" => trim("$credentials[0]""\n"),
    
"pwd" => trim("$credentials[1]""\n"),
    
"deviceId" => "0",
    
"circuitId"=>"4"
];
$viessmannApi = new ViessmannAPI($params);



<?php
include __DIR__.'/bootstrap.php';
echo 
"Active mode for default circuit: ".$viessmannApi->getActiveMode()."\n";// will use circuit 4 such as defined in bootstrap.php
echo "Active mode for given circuit(1): ".$viessmannApi->getActiveMode(1);//will overwritte bootstrap value by value given on method call(1 here);

Titel: Antw:Viessmann VitoConnect API
Beitrag von: tnt99 am 09 Oktober 2018, 09:21:43
Hallo Frini und thetrueavatar,

ich habe alle möglichen Features durchprobiert.
Die Liste aus https://github.com/thetrueavatar/Viessmann-Api/wiki/English und getfeature Abfrage von Frini.

Leider habe ich nichts gefunden, was die Pufferspeicher-Temperatur ausgibt :-(

Hat schon mal jemand versucht, einen Paketmitschnitt des Vitoconnect zu machen um zu sehen, welche Daten denn hochgeladen werden?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 09 Oktober 2018, 12:06:29
I have done a support request on Viessmann Belgium about missing data. They didn't help me but gave me a interesting information. Deployment in Augustus was of the new service was a mistake. That's why ViCare application wasn't ready to display data of the service. They plan to fix things on version 2.0.5 of the version. My guess is hat they will update service too so that currently missing information are provided. I'm currently unable to get some data(hotstorage water temp, ...) with the new service but data is still available with the very old one use by Vitotrol Plus. I guess we will have to wait...
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 09 Oktober 2018, 19:50:20
seit 16:30 geht "getActiveProgram" nicht mehr bei mir
Titel: Antw:Viessmann VitoConnect API
Beitrag von: heiko73 am 09 Oktober 2018, 20:52:08
Hi, vielen Dank an alle Vorarbeiter! Habe eine neue Ölheizung und mir nach Durchlesen des Threads die viessmann.php mal vorgenommen und etwas angepasst/aufgeräumt.

Änderungen:
- Daten werden nur einmal abgerufen und dann komplett
- Ein RequestList Array wird definiert, das die gewünschten Werte aus den Komplettdaten zieht und ausgibt

Dadurch weniger doppelter Code und weniger Zugriffe auf den Viessmann Server. Eventuell findet ja noch jemand interessante Werte in der Antwort. Ausserdem wird's schneller...

Jetzt muss ich das nur noch sauber in FHEM reinbekommen  8)

Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 09 Oktober 2018, 20:57:48
Zitat von: onkeloki am 09 Oktober 2018, 19:50:20
seit 16:30 geht "getActiveProgram" nicht mehr bei mir
Could you be more precise ? What kind of error ? Which version ? I wasn't able to reproduce it so I need to get more information.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 09 Oktober 2018, 21:28:29
Bei mir funktioniert die Abfrage noch.
@Heiko sehr cool. Ich bin das gerade noch mal überflogen. Hast du auch ein Set mit eingebaut? Also um die Betriebsart zu wählen oder die Solltemperatur anzupassen,? Mache das aktuell mit 4 verschiedenen phpDateien. 3°C, 20°C, 21°C, 22°C
Titel: Antw:Viessmann VitoConnect API
Beitrag von: heiko73 am 10 Oktober 2018, 06:42:21
Wie geht das Setzen denn, kannst Du ein Beispiel posten?

Ich habe in meine Version jetzt mal schnell eingebaut, dass es über die Telnet Schittstelle direkt die Werte mit setreading in FHEM reinpusht. Konnte so über Nacht schon eine schöne Kurve malen und in FHEM selbst braucht es keinerlei System-Calls etc. Nur ein Dummy anlegen und das PHP füttert dann die Werte ein. Umgekehrt (setzen) geht das wahrscheinlich nicht so einfach ;-)

Meine ViCare App auf dem Android Smartphone geht seit gestern nicht mehr. Mir ist bei diesem Cloud Service basiertem Ansatz nicht so ganz wohl, weil Viessmann jederzeit ohne Vorwarnung was ändern kann bzw. uns aussperren könnte.

Hat mal jemand versucht, direkt das Vitoconnect Teil abzufragen? Oder gibts andere Möglichkeiten, da über USB oder seriell an die Anlage zu kommen und dann vielleicht einen kleinen Raspi davorzuschalten, der dann die Schnittstelle ins FHEM macht?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 10 Oktober 2018, 09:08:45
Ich habe mir kleine phps nach dem Vorbild von thetrueavatars phps gebastelt. Gebastelt deswegen, weil ich recht begrenztes KnowHow habe. Aber ers funktioniert.
Ich kann gerade nicht auf meinen Raspi zugreifen, daher hier die Originalen von TheTrueAvatar.
https://github.com/thetrueavatar/Viessmann-Api/tree/develop/example (https://github.com/thetrueavatar/Viessmann-Api/tree/develop/example)
Mit SystemCommand führe ich die phps aus. Ich bastel gerade an einer gesamten Steuerung, die über die Heizungsventilöffnungen gesteuert wird. Sprich, alle Ventile geschlossen, Raumsolltemperatur auf 3°C damit die Heizung gar nicht in Versuchung kommt zu takten. Ventilöffnung von über 70%, dann erhöhe die Raumsolltemperatur schrittweise bis Öffnung auf 70% ist. Aktuell echt rudimentär, ich versuche das gerade analog ein paar Informationen hier aus dem Forum (Elektrolurch) nach zu bauen. Ein einfaches Ein-und Ausschalten des Brenners wäre natürlich schöner, aber hier weiß ich nicht, wie das mit dem Brennwerteffekt und der Brennermodulation läuft. Da will ich eher nicht eingreifen.
Ich habe gestern noch einmal die Anleitung gewälzt, und gerade bei den Vidotens Geräten kann man über zwei potentialfreie Klemmen einen externen Betrieb aufzwingen. Heißt so viel wie Schnittstelle 58 geschlossen, dann reduzierter Betrieb. Die könnte man mit einem Homematic Aktor mit potentialfreiem Ausgang schließen  :D Gleiches gilt für die Heizkreislaufpumpe.

Also ich wäre an der Telnet-Lösung sehr interessiert  ;D. Klingt erst einmal einfacher.

ViCare klappt bei mir stand heute noch. Ich warte eigentlich sehnsüchtig auf ein neues Update der App, mit der Hoffnung auf weitere Funktionen.

Es gibt einen Lösungsansatz wo man mit dem OptoLink-Kabel direkt an einen Raspberry geht. https://www.schlocke.de/viessmann-heizungswerte-mit-openv-auslesen-und-mit-volkszaehler-darstellen/ (https://www.schlocke.de/viessmann-heizungswerte-mit-openv-auslesen-und-mit-volkszaehler-darstellen/)
Allerdings kann man dann die Viconnect100 Verbindung nicht mehr nutzen und somit (in meinem Fall wichtig) entfällt ebenfalls die Garantieverlängerung und der ServiceBetrieb kann die Heizung nicht mehr auslesen bei Fehlermeldungen. Daher hatte ich dies noch nicht weiter verfolgt.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 10 Oktober 2018, 09:14:19
Zitat von: thetrueavatar am 09 Oktober 2018, 20:57:48
Could you be more precise ? What kind of error ? Which version ? I wasn't able to reproduce it so I need to get more information.

i figured out that on all  values my heater did not support (eco program / supporttemperature.. )  i can not do the calls..
the php script get oauth errors..

//$getter[] = "getActiveProgram";
//$getter[] = "getComfortProgramTemperature";
//$getter[] = "getEcoProgramTemperature";
//$getter[] = "getExternalProgramTemperature";
//$getter[] = "getSupplyProgramTemperature";
//$getter[] = "isDhwModeActive";

the others works ;)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 10 Oktober 2018, 09:20:49
Falls es jemanden etwas bringt hier ist mein php Schnippsel
ich habe es der einfachkeit halber in folgenden odner gelegt:

/home/pi/Viessmann-Api-master/example/SetInFhem.php
weil ich eh ein Example modifiziert habe bis es für mich geklappt hat..
Hier der code:

<?php
include __DIR__.'/bootstrap.php';
use 
Viessmann\API\ViessmannAPI;

function 
setTofhem($name,$val){
if(
$val == false){
$val "0"
}
$r =  "setreading ViessmannAPI ".$name." ".$val;
$addlog "trigger ViessmannAPI  ".$name.": ".$val."   << addLog";
echo 
$name.":".$val ."\n";
shell_exec('perl /opt/fhem/fhem.pl 7072 "'.$r.'"'); 
shell_exec('perl /opt/fhem/fhem.pl 7072 "'.$addlog.'"'); 
}

$getter = array();
$getter[] = "getOutsideTemperature";
$getter[] = "getBoilerTemperature";
$getter[] = "getSlope";
$getter[] = "getShift";
$getter[] = "getActiveMode";
$getter[] = "isHeatingBurnerActive";
$getter[] = "getNormalProgramTemperature";
$getter[] = "getReducedProgramTemperature";
$getter[] = "isInStandbyMode";

//$getter[] = "getActiveProgram";
//$getter[] = "getComfortProgramTemperature";
//$getter[] = "getEcoProgramTemperature";
//$getter[] = "getExternalProgramTemperature";
//$getter[] = "getSupplyProgramTemperature";
//$getter[] = "isDhwModeActive";

while (list($key$val) = each($getter))
  {
@
setTofhem($val$viessmannApi->$val());
  }






die "getter" welche bei mir seit gestern nicht mehr funktionieren (oauth error) sind auskommentier
ich vermute die gehen nicht mehr weil ich z.b. kein warm wasser habe und auch keinen eco mode


@thetrueavatar:
watch the commented rows.. this are the functions which stoped working for me
i think this is because my heater does not support this programs so maybe the vicare endpoint has changed .. yesterdey before 16:00 i got answers from this calls
now php runs into a oauth error ..
after oauth error the whole scrip breaks ;) so maybe its a good idea to catch the error or prevent the warning





die file rufe ich via "php -f /home/pi/Viessmann-Api-master/example/SetInFhem.php" auf   

das quellpaket ist hier zu finden
https://github.com/thetrueavatar/Viessmann-Api
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 10 Oktober 2018, 16:35:37
Seit gestern funktioniert bei mir die Aussentemperaturabfrage nicht mehr.
Gibt mir folgende Fehlermeldung in der Konsole aus:

PHP Notice:  Undefined index: properties in /opt/fhem/viessmann.php on line 41
Aussentemperatur=

Im Getfeature() kriege ich ebenfalls keine Rückmeldung mehr.

In der Vicare App ist die Außentemperatur ebenfalls entfernt. Die scheinen dran zu Arbeiten :-)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: heiko73 am 10 Oktober 2018, 19:48:36
OK, hier mal ein Update.

Habe jetzt eingebaut, dass direkt per Telnet Zugriff die Readings eines Dummy Objects mit den in der Requestlist angegebenen Werten gefüllt werden.

Einfach ein Dummy Object XXX definieren und im php Code angeben:
$FHEMObject = "XXX";

Man kann ausserdem den FHEM Server und Port angeben (ist voreingestellt auf localhost:7072). Wird das FHEMObject leer definiert, wird keine Telnet Verbindung versucht. Wer also weiterhin nur die Ausgabe parsen möchte, setzt $FHEMObject = "";

Das Setzen von Werten (Danke für die Beispiele) verwendet dann doch das Viessmann API Projekt, da ist mehr umzubauen für mich. Ich schaue mir das bei Gelegenheit mal an, finde aber das aktuelle php ganz nett, weil es komplett eigenständig funktioniert. Das API schaut schon sehr aufgeräumt und gut organisiert aus, aber da muss ich mich dann erstmal einarbeiten.

So wie es aussieht, empfange ich die Aussentemperatur noch, liegt eventuell daran dass ich alle Daten abrufe und dann darin nach den passenden Werten suche. Aber interessanterweise funktioniert meine App nicht mehr, seitdem ich hier rumteste. Eventuell gibt es da einen Zusammenhang? Es wird durchgängig gemeldet, dass es ein Verbindungsproblem gibt und dass der Server nicht erreicht werden kann.

Strange ... ;)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: CoolTux am 10 Oktober 2018, 19:51:47
Hab da mal eine Frage. Wieso wird hier nicht versucht ein FHEM Modul zu entwickeln statt die Ressourcen in eine externe Lösung zu stecken?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: heiko73 am 10 Oktober 2018, 19:55:21
Gute Frage, meine (persönliche) Antwort:
a) ich kann php besser als PERL
b) ich habe auf den bereits existierenden PHP Code aufgesetzt, für PERL müsste ich "from Scratch" anfangen
c) ich weiß nicht, wie lange Viessmann seine API und seine Server noch so beibehält, da lohnt sich eventuell der Aufwand für einen kompletten Rewrite in PERL einfach nicht.

Aber generell bin ich bei Dir: Es wäre schon 10x einfacher und besser zu benutzen, wenn man das direkt als FHEM Modul aufsetzt. Da bin ich dann aber wohl raus, dafür reichts bei mir im Bezug auf PERL nicht.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 10 Oktober 2018, 20:23:13
Ist ganz einfach. Ich kanns einfach nicht. Das bisschen php Wissen, habe ich mir die letzten 2 Wochen angeeignet. Und bin froh, dass es irgendwie funktioniert.


Viessmann ist gerade dabei eine neue Version zu veröffentlichen. Dieses oder nächstes Quartal. Die Serverstruktur wurde bei Viessmann gerade erst umgestellt.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 10 Oktober 2018, 20:32:00
bin auch eher PHPler ;)

habe auf die existierenden scripts aufgesetzt vorher hatte ich das vitodens fhem modul am start
Naja triggern tu ich mein scrhpt mit dem fhem modul HTTPMOD alle 2 min ;)

ansonsten habe ich die ein oder andere php Implementierung auf meinen Raspberry  welche ich dann ähnlich eingebaut habe
das ganze oauth zeugs wäre mir mit php aber auch selbst schon zu nervig
mein wissen ist noch von  php 7 seitdem bin ich berufluch  in node.js unterwegs
Titel: Antw:Viessmann VitoConnect API
Beitrag von: heiko73 am 10 Oktober 2018, 20:36:52
Noch ein Update (sorry wegen der vielen Posts ...):

- unterstützt jetzt Kommandozeilen-Argumente:
   ./viessmann_hg.php --dump
       gibt alle vom Server gefundenen Daten formatiert aus, da findet man vielleicht für seine Anlage noch ein paar Schätzchen.
  ./viessmann_hg.php --get Aussentemperatur NUM:heating.sensors.temperature.outside:value
       ignoriert die RequestList und sucht nur nach dem einen angegebenen Wert

Das sollte es erstmal für heute sein. Gern testen und Feedback geben. @Frini: Du findest somit jetzt auch ein paar Beispiele, wie man einem PHP Kommandozeilenparameter übergibt. Eventuell hilft das ja, Deine drei Setz-Dateien in eine zu verwandeln und dann den gewünschten Wert als Parameter zu übergeben.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 10 Oktober 2018, 21:25:38
hier übrigens meine plots
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 10 Oktober 2018, 21:40:45
Ich habe gerade mal Deine php getestet. Funktioniert soweit.
Allerdings klappt die telnet Verbindung nicht.
PHP Notice:  fputs(): send of 51 bytes failed with errno=32 Broken pipe in /opt/fhem/viessmannhg.php on line 183
Titel: Antw:Viessmann VitoConnect API
Beitrag von: heiko73 am 10 Oktober 2018, 21:52:21
Tja, schwierig.

Kann ich hier so spontan nicht nachvollziehen, habe getestet mit falschem Hostnamen für den FHEM Server und falschem Port (connection refused), aber "Broken Pipe" habe ich noch nicht gesehen. Läuft das PHP Script auf Deinem FHEM Server und ist das ein Raspi mit Linux oder irgendwas anderes?

Ach ja: der Telnet Port muss im Moment noch ohne Passwortschutz sein, hast Du das auch so?

Noch ne Idee: Bei der Verbindungsanbahnung gibt es einen sleep(4), eventuell mal mit dem Wert spielen und kleiner oder größer machen.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 10 Oktober 2018, 22:05:27
Hat geklappt.
Ich habe den telnetport noch mal gelöscht und dann bei der Definition das global weggelassen.
So ganz versteh ich das nicht.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: heiko73 am 10 Oktober 2018, 22:07:15
OK, konnte den Fehler nachstellen indem ich während des Ausführens des PHP Scripts (und nach dem Start der Telnet Verbindung) einen "shutdown restart" ausgeführt habe. "Broken Pipe" heisst soviel wie "Die Verbindung wurde erfolgreich aufgebaut, ist dann aber mittendrin weggebrochen".

Eventuell kannst Du auch für dieses Script einen eigenen Telnet Port definieren (mit anderer Portnummer), wenn Du den 7072 noch für andere Sachen brauchst.


Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 11 Oktober 2018, 13:10:10
Zitat von: onkeloki am 10 Oktober 2018, 09:20:49
Falls es jemanden etwas bringt hier ist mein php Schnippsel
ich habe es der einfachkeit halber in folgenden odner gelegt:

/home/pi/Viessmann-Api-master/example/SetInFhem.php
weil ich eh ein Example modifiziert habe bis es für mich geklappt hat..
Hier der code:

<?php
include __DIR__.'/bootstrap.php';
use 
Viessmann\API\ViessmannAPI;

function 
setTofhem($name,$val){
if(
$val == false){
$val "0"
}
$r =  "setreading ViessmannAPI ".$name." ".$val;
$addlog "trigger ViessmannAPI  ".$name.": ".$val."   << addLog";
echo 
$name.":".$val ."\n";
shell_exec('perl /opt/fhem/fhem.pl 7072 "'.$r.'"'); 
shell_exec('perl /opt/fhem/fhem.pl 7072 "'.$addlog.'"'); 
}

$getter = array();
$getter[] = "getOutsideTemperature";
$getter[] = "getBoilerTemperature";
$getter[] = "getSlope";
$getter[] = "getShift";
$getter[] = "getActiveMode";
$getter[] = "isHeatingBurnerActive";
$getter[] = "getNormalProgramTemperature";
$getter[] = "getReducedProgramTemperature";
$getter[] = "isInStandbyMode";

//$getter[] = "getActiveProgram";
//$getter[] = "getComfortProgramTemperature";
//$getter[] = "getEcoProgramTemperature";
//$getter[] = "getExternalProgramTemperature";
//$getter[] = "getSupplyProgramTemperature";
//$getter[] = "isDhwModeActive";

while (list($key$val) = each($getter))
  {
@
setTofhem($val$viessmannApi->$val());
  }






die "getter" welche bei mir seit gestern nicht mehr funktionieren (oauth error) sind auskommentier
ich vermute die gehen nicht mehr weil ich z.b. kein warm wasser habe und auch keinen eco mode


@thetrueavatar:
watch the commented rows.. this are the functions which stoped working for me
i think this is because my heater does not support this programs so maybe the vicare endpoint has changed .. yesterdey before 16:00 i got answers from this calls
now php runs into a oauth error ..
after oauth error the whole scrip breaks ;) so maybe its a good idea to catch the error or prevent the warning




die file rufe ich via "php -f /home/pi/Viessmann-Api-master/example/SetInFhem.php" auf   

das quellpaket ist hier zu finden
https://github.com/thetrueavatar/Viessmann-Api
I'm not sure it's totally related but I have just fixed a bug prevent the right use of default circuitId when upon ViessmanAPI instanciation. So default value for circuitId was always 0. Could you pull the new version of the phar and see if this fix de problem ?
If not could you send me the full error stack trace please ?
I have still some work to do on error management. Usually it's the client's responsability to catch the error and provide the right error management. However, I should at least catch oauth error and provide my own exception with some more explicit message about the error. I might add an "errorcode" to ease the error management too but I'm not yet there tbh.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 12 Oktober 2018, 12:58:55
For information, I have noticed that since yesterday viessmann service return me 3 more features than before including hotWaterStorageTemperature. I have been able to test it and have included a getHotWaterStorageTemperature method on the API. BTW, if you whish to add some method feel free to contribute. I have recently added too roomTemperature thanks to a contribution(I don't have room sensor).
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 12 Oktober 2018, 16:37:10
Version 0.3 available on : https://github.com/thetrueavatar/Viessmann-Api/releases/tag/0.3
Add exception management to display more readable error
Added some new method:
getHotWaterStorageTemperature
getRoomTemperature and getSupplyTemperature thanks to the contribution of Xiaverg16
Added SetActiveMode.php
added the possibility to define deviceId and circuitId either on api instanciation(subsequent method call will use
-added json sample found into the Vicare Ap
- switch to curl client instead of streaming client
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 20 Oktober 2018, 20:29:34
Zitat von: thetrueavatar am 12 Oktober 2018, 16:37:10
Version 0.3 available on : https://github.com/thetrueavatar/Viessmann-Api/releases/tag/0.3
Add exception management to display more readable error
Added some new method:
getHotWaterStorageTemperature
getRoomTemperature and getSupplyTemperature thanks to the contribution of Xiaverg16
Added SetActiveMode.php
added the possibility to define deviceId and circuitId either on api instanciation(subsequent method call will use
-added json sample found into the Vicare Ap
- switch to curl client instead of streaming client

thank you i give it a try
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 20 Oktober 2018, 20:36:29
Zitat von: thetrueavatar am 12 Oktober 2018, 16:37:10
Version 0.3 available on : https://github.com/thetrueavatar/Viessmann-Api/releases/tag/0.3
Add exception management to display more readable error
Added some new method:
getHotWaterStorageTemperature
getRoomTemperature and getSupplyTemperature thanks to the contribution of Xiaverg16
Added SetActiveMode.php
added the possibility to define deviceId and circuitId either on api instanciation(subsequent method call will use
-added json sample found into the Vicare Ap
- switch to curl client instead of streaming client




Température extérieure 6.7
Température boiler 47
Pente 1.4
Parallèle 0
Mode chaudière dhwAndHeating
Programme actif eco
Is Heating Burner active ?
PHP Fatal error:  Uncaught TomPHP\Siren\Exception\NotFound: Property "active" was not found. in phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/vendor/tomphp/exception-constructor-tools/src/ExceptionConstructorTools.php:27
Stack trace:
#0 phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/vendor/tomphp/siren/src/Exception/NotFound.php(32): TomPHP\Siren\Exception\NotFound::create('Property "%s" w...', Array, 1)
#1 phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/vendor/tomphp/siren/src/Entity.php(144): TomPHP\Siren\Exception\NotFound::forProperty('active')
#2 phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/src/API/ViessmannAPI.php(131): TomPHP\Siren\Entity->getProperty('active')
#3 /home/pi/Viessmann-Api-0.3/example/Main.php(14): Viessmann\API\ViessmannAPI->isDhwModeActive()
#4 {main}
  thrown in phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/vendor/tomphp/exception-constructor-tools/src/ExceptionConstructorTools.php on line 27


there it is

i did ... php -f Main.php
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 20 Oktober 2018, 21:01:10
Well it seems that  you have got the feature(otherwise you would receive a FEATURE_NOT_FOUND message) but that you don't have any value for it. 
Does your viessmann manage hot water ?
If yes to find the problem could you add this line and provide me the result(don't worry there is no private data in the response) :
echo $viessmannApi->getRawJsonData("heating.circuits.0.operating.modes.dhw");

By default, viessmanApi use 0 as circuit. However, maybe is your dhw on circuit 1. Could you try with this call too:
echo "Is Dhw mode active ? " . $viessmannApi->isDhwModeActive(1) . "\n";
This would try to find data on circuit 1.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 20 Oktober 2018, 21:08:28
Viessmann updated their Vicare App to Version 2.1. Now it is possible to activate manuel heating of water storage.
I have the Vitodens 333 and here hotwaterstorage dhw is working without problems. The 333 has an integrated waten storage.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 20 Oktober 2018, 21:22:45
Zitat von: thetrueavatar am 20 Oktober 2018, 21:01:10
Well it seems that  you have got the feature(otherwise you would receive a FEATURE_NOT_FOUND message) but that you don't have any value for it. 
Does your viessmann manage hot water ?
If yes to find the problem could you add this line and provide me the result(don't worry there is no private data in the response) :
echo $viessmannApi->getRawJsonData("heating.circuits.0.operating.modes.dhw");

By default, viessmanApi use 0 as circuit. However, maybe is your dhw on circuit 1. Could you try with this call too:
echo "Is Dhw mode active ? " . $viessmannApi->isDhwModeActive(1) . "\n";
This would try to find data on circuit 1.



php -f SetInFhem.php
----PHP Fatal error:  Uncaught TomPHP\Siren\Exception\NotFound: Property "active" was not found. in phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/vendor/tomphp/exception-constructor-tools/src/ExceptionConstructorTools.php:27
Stack trace:
#0 phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/vendor/tomphp/siren/src/Exception/NotFound.php(32): TomPHP\Siren\Exception\NotFound::create('Property "%s" w...', Array, 1)
#1 phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/vendor/tomphp/siren/src/Entity.php(144): TomPHP\Siren\Exception\NotFound::forProperty('active')
#2 phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/src/API/ViessmannAPI.php(131): TomPHP\Siren\Entity->getProperty('active')
#3 /home/pi/Viessmann-Api-0.3/example/SetInFhem.php(16): Viessmann\API\ViessmannAPI->isDhwModeActive(1)
#4 {main}
  thrown in phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/vendor/tomphp/exception-constructor-tools/src/ExceptionConstructorTools.php on line 27


maybe this is because i have not warmwater tank?
i just use the viessmann for heating not for water
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 20 Oktober 2018, 21:48:37
Zitat von: onkeloki am 20 Oktober 2018, 21:22:45


php -f SetInFhem.php
----PHP Fatal error:  Uncaught TomPHP\Siren\Exception\NotFound: Property "active" was not found. in phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/vendor/tomphp/exception-constructor-tools/src/ExceptionConstructorTools.php:27
Stack trace:
#0 phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/vendor/tomphp/siren/src/Exception/NotFound.php(32): TomPHP\Siren\Exception\NotFound::create('Property "%s" w...', Array, 1)
#1 phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/vendor/tomphp/siren/src/Entity.php(144): TomPHP\Siren\Exception\NotFound::forProperty('active')
#2 phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/src/API/ViessmannAPI.php(131): TomPHP\Siren\Entity->getProperty('active')
#3 /home/pi/Viessmann-Api-0.3/example/SetInFhem.php(16): Viessmann\API\ViessmannAPI->isDhwModeActive(1)
#4 {main}
  thrown in phar:///home/pi/Viessmann-Api-0.3/example/Viessmann-Api-0.3.phar/vendor/tomphp/exception-constructor-tools/src/ExceptionConstructorTools.php on line 27


maybe this is because i have not warmwater tank?
i just use the viessmann for heating not for water
You're right. However, imho the viessmann service should return a NOT_FEATURE_FOUND instead of an json with no data... I will try to update error handling however to manage error coming from empty data.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 21 Oktober 2018, 00:02:58
Hi I have done a GetFeature few minutes ago. There are more adresses to use.


"class":["heating.gas.consumption.dhw","feature"],
"properties":{
"day":{"type":"array","value":[128,80,0,8,0,0,0]},
"week":{"type":"array","value":[88,288,640,904,64,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},
"month":{"type":"array","value":[1016,968,32,0,0,0,0,0,0,0,0,0]},"year":{"type":"array","value":[2016,0]}},

"class":["heating.gas.consumption.heating","feature"],
"properties":{
"day":{"type":"array","value":[128,80,0,8,0,0,0]},
"week":{"type":"array","value":[88,288,640,904,64,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},
"month":{"type":"array","value":[1016,968,32,0,0,0,0,0,0,0,0,0]},
"year":{"type":"array","value":[2016,0]}},


/devices/0/features/heating.dhw.oneTimeCharge"

"class":["heating.burner.current.power","feature"],
"properties":{
"value":{"type":"number","value":0}},




Es wurde definitiv etwas von Viessmann geändert.
Den rest habe ich angehangen.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 21 Oktober 2018, 01:04:08
I have already implemented most of those feature in the branch Feature/MethoNotYetTested . As I don't have the information on my heating I'm waiting some real test before including it into a release. Feel free to test it and provide me some feedback.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: andies am 22 Oktober 2018, 07:49:10
Zitat von: Frini am 10 Oktober 2018, 09:08:45
Es gibt einen Lösungsansatz wo man mit dem OptoLink-Kabel direkt an einen Raspberry geht. https://www.schlocke.de/viessmann-heizungswerte-mit-openv-auslesen-und-mit-volkszaehler-darstellen/ (https://www.schlocke.de/viessmann-heizungswerte-mit-openv-auslesen-und-mit-volkszaehler-darstellen/)
Allerdings kann man dann die Viconnect100 Verbindung nicht mehr nutzen und somit (in meinem Fall wichtig) entfällt ebenfalls die Garantieverlängerung und der ServiceBetrieb kann die Heizung nicht mehr auslesen bei Fehlermeldungen. Daher hatte ich dies noch nicht weiter verfolgt.
Bist du dir sicher? Diese Leute erzählen viel, wenn der Tag lang ist. Ich habe so eine selbst gebastelte optolink-Lösung am start (vitodens 100, glaube ich - bin gerade nicht vor Ort) und die funktioniert mit einem raspberry vor ort und in FHEM.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 22 Oktober 2018, 09:45:45
My guess is that it could be easier to intercept data going out from the Vitoconnect to the viessmann server. I have been trying to do so but would need to get access to the vitoconnect by telenet to be able to add a custom certificate. Then I would be able to configure a proxy that would intercept data to viessmann server, copy it and transfer it directly to my raspberry. Do you know if it's possible to access to the Vitoconnect os by any mean ?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: andies am 22 Oktober 2018, 10:32:29
No, no idea. Have you seen https://github.com/openv/openv/wiki/Bauanleitung-USB_Duo-Sniffer (https://github.com/openv/openv/wiki/Bauanleitung-USB_Duo-Sniffer) That's in German but still this site contains a lot of information that might be helpful?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 22 Oktober 2018, 12:35:39
Zitat von: andies am 22 Oktober 2018, 07:49:10
Bist du dir sicher? Diese Leute erzählen viel, wenn der Tag lang ist. Ich habe so eine selbst gebastelte optolink-Lösung am start (vitodens 100, glaube ich - bin gerade nicht vor Ort) und die funktioniert mit einem raspberry vor ort und in FHEM.

Hallo,
Ja das OptoLink Kabel wird in die Vitoconnect eingesteckt. Entweder oder. Ein parallelBetrieb (Vitoconnect und Raspi) ist nicht möglich.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: andreas13 am 24 Oktober 2018, 08:13:07
Hallo zusammen,

hier meine Lösung (zusammenkopiert aus verschiedenen Beiträgen hier im Thread und try and error):

1) angehängte Datei nach /opt/fhem kopieren
2) Dummy anlegen (ggf. anpassen, wenn ihr kein DBLog verwendet!):
defmod vitoconnect100 dummy
attr vitoconnect100 DbLogInclude Gasverbrauch_Heizung/Jahr,Gasverbrauch_aktuelle_Woche,Gasverbrauch_aktueller_Monat,Gasverbrauch_heute,WW-aktiv,HK1-Frostschutz_Status,HK1-WW_und_Heizen_aktiv,HK1-WW_aktiv,HK1-Betriebsart,HK1-Programmstatus,Aussentemperatur,HK1-Solltemperatur_normal,Brenner_aktiv,HK1-Vorlauftemperatur,Kesseltemperatur,WW-Isttemperatur,WW-Solltemperatur
attr vitoconnect100 room Keller
attr vitoconnect100 stateFormat Brenner_Status
attr vitoconnect100 userReadings Gasverbrauch_heute:Gasverbrauch_Heizung/Tag.* { (split /,/, ReadingsVal("vitoconnect100",\
"Gasverbrauch_Heizung/Tag",0))[0] },\
Gasverbrauch_aktuelle_Woche:Gasverbrauch_Heizung/Woche.* { (split /,/, ReadingsVal("vitoconnect100",\
"Gasverbrauch_Heizung/Woche",0))[0] },\
Gasverbrauch_aktueller_Monat:Gasverbrauch_Heizung/Monat.* { (split /,/, ReadingsVal("vitoconnect100",\
"Gasverbrauch_Heizung/Monat",0))[0] }

3) "AT" anlegen um die Datei regelmäßig aufzurufen (Parameter
defmod vito_cron at +*00:01 "/opt/fhem/vissmann.php -user Mailadresse -passwd geheimesPassword"
attr vito_cron alignTime 00:00
attr vito_cron room Keller


Ich bin kein Programmierer. Bitte seit gnädig, was meinen Programmierstil angeht. Das Phar File habe ich nicht genutzt (mangels PHP Kenntnissen, kommt vielleicht noch).

Ich habe versucht, das Programm robust gegen Änderungen der REST-Api zu machen. Es werden alle Werte in den Dummy geschrieben, die übertragen werden. Auch neue Werte sollten automatisch gefunden werden. Die Interpretation der Daten ist dann eine andere Sache:

1) Bei mir sind die Werte für Werte für Gasverbrauch von Heizung und WW zB gleich (Vitodens 200). Wochen-, Monats- und Jahreswerte werden morgens um 4 Uhr aktualisiert.
2) Hat jemand die Rücklauftemperatur gefunden?

Bei Interesse stell ich mal meine Plot ein.

Nächstes Todo: Setzen von Werten :-)

Danke nochmal an die Vorarbeiten der Kollegen hier!

Andreas
Titel: Antw:Viessmann VitoConnect API
Beitrag von: dr_laplace am 24 Oktober 2018, 13:53:33
Hallo Skript funktioniert super. Danke.
Weiß aber jemand wie die Daten beim Gasverbrauch zu verstehen sind? kWh wie in der App sind es wohl kaum. Ebenso passt die Tendenz der Werte überhaupt nicht zu meinem Verbrauch. Mein Verbrauch von WW und Heizung sind ebenfalls identisch. Habe Vitodens 300W.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 24 Oktober 2018, 14:45:07
Ich kriege Dein Skript nicht zum Laufen.
Muss in der PHP noch etwas anpassen? Die Viessmann Zugangsdaten werden in dem at angegeben?
Habe mir extra eine Datenbank angelegt. Hatte ich eh vorgehabt. Läuft das über Telnet oder werden die Daten direkt in die SQLlite Datenbank geschrieben. Ich habe diese mit einem Benutzernamen und Passwort eingerichtet. Wo trage ich die ein?

Das erhalte ich wenn ich in Putty

PHP Notice:  Undefined offset: 0 in /opt/fhem/vissmann.php on line 204
PHP Notice:  Undefined property: stdClass::$access_token in /opt/fhem/vissmann.php on line 238
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/vissmann.php on line 130

Titel: Antw:Viessmann VitoConnect API
Beitrag von: andreas13 am 24 Oktober 2018, 17:53:06
Ich rätsel auch. Wo siehst du denn kWh ins der (ViCare?)-App?

Ich bin auch am Rätseln, wie die Werte zu interpretieren sind. Von der Größenordnung könnten es kWh sein, aber so richtig mit dem Brennerlaufzeiten korreliert es bei mir nicht.



Zitat von: dr_laplace am 24 Oktober 2018, 13:53:33
Hallo Skript funktioniert super. Danke.
Weiß aber jemand wie die Daten beim Gasverbrauch zu verstehen sind? kWh wie in der App sind es wohl kaum. Ebenso passt die Tendenz der Werte überhaupt nicht zu meinem Verbrauch. Mein Verbrauch von WW und Heizung sind ebenfalls identisch. Habe Vitodens 300W.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: andreas13 am 24 Oktober 2018, 17:59:16
Zitat von: Frini am 24 Oktober 2018, 14:45:07
Ich kriege Dein Skript nicht zum Laufen.
Muss in der PHP noch etwas anpassen? Die Viessmann Zugangsdaten werden in dem at angegeben?
Habe mir extra eine Datenbank angelegt. Hatte ich eh vorgehabt. Läuft das über Telnet oder werden die Daten direkt in die SQLlite Datenbank geschrieben. Ich habe diese mit einem Benutzernamen und Passwort eingerichtet. Wo trage ich die ein?

Das erhalte ich wenn ich in Putty

PHP Notice:  Undefined offset: 0 in /opt/fhem/vissmann.php on line 204
PHP Notice:  Undefined property: stdClass::$access_token in /opt/fhem/vissmann.php on line 238
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/vissmann.php on line 130



Passwort und Username nicht gesetzt?

/opt/fhem/vissmann.php --dump -user meine@mailadre.sse -passwd meinPasswort

"--dump" sorgt dafür, dass die Readings nicht gesetzt werden, dafür aber eine Menge Debuginformationen ausgegeben werden.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 24 Oktober 2018, 19:19:51
Fehler gefunden. Dummys werden gefüllt.
Muss bei mir das ganze so aufrufen:

php7.0 /opt/fhem/vissmann.php -user xxx -passwd xxx

Allerdings schreibt er mir folgenden Fehler:
PHP Notice:  Undefined index: heating.burner.current.power.value in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.circulation.schedule.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.circulation.schedule.entries in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.frostprotection.status in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.heating.curve.shift in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.heating.curve.slope in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.heating.schedule.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.heating.schedule.entries in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.modes.active.value in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.modes.dhw.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.modes.dhwAndHeating.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.modes.forcedNormal.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.modes.forcedReduced.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.modes.standby.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.active.value in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.comfort.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.comfort.temperature in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.eco.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.eco.temperature in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.external.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.external.temperature in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.holiday.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.holiday.start in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.holiday.end in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.normal.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.normal.temperature in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.reduced.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.reduced.temperature in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.standby.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.sensors.temperature.room.status in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.sensors.temperature.supply.status in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.sensors.temperature.supply.value in /opt/fhem/vissmann.php on line 171


Die Readings werden aber gefüllt.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: seppe am 24 Oktober 2018, 19:48:56
Zitat von: andreas13 am 24 Oktober 2018, 17:53:06
Ich rätsel auch. Wo siehst du denn kWh ins der (ViCare?)-App?

Ich bin auch am Rätseln, wie die Werte zu interpretieren sind. Von der Größenordnung könnten es kWh sein, aber so richtig mit dem Brennerlaufzeiten korreliert es bei mir nicht.

Ich muss meine Werte durch 8 Teilen, dann habe ich meinen Verbrauch in kwH
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 24 Oktober 2018, 20:29:23
Die kWh wird in der App noch nicht abgebildet.
Mir ist noch aufgefallen, dass die Brennerleistung fehlt
"heating.burner.current.power.value"                                                => "Brenner_Leistung",


Die Werte sind in kW angegeben. Habe es mit der Prozentangabe am Gerät verglichen. Kommt bis auf die Rundungsfehler hin.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: andreas13 am 24 Oktober 2018, 21:19:45
Hat die Datei Ausführungsrecht? Probier mal chmod a+x /opt/fhem/vissmann.php

In dem Array RequestList stehen nur die Readings, die meine Heizung (vitodens 200) mit einem Heizkreis liefert. Vermutlich hast Du zwei Heizkreise? Auch das Reading heating.burner.current.power.value liefert meine Anlage nicht. Hast du einen Ölbrenner?

Die neue Version der vissmann.php sollte auch für Werte, die nicht in der RequestList stehen, Readings in FHEM erzeugen (ohne Fehlermeldung). Die Werte für den 2. Heizkreis und den Brenner habe ich hinzugefügt. Bitte mal testen.

Weiß jemand was "Device_Time_Offset" bedeutet?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 24 Oktober 2018, 23:49:09
Hallo,
die PHP läuft. Anwenderfehler.
Nein ich habe eine Vitodens 333f mit Erdgas.
Ich glaube DEvice_Time_Offset ist die Zeitspanne für die Berechnung der gemittelten Außentemperatur. Abhängig von dem Dämmgrad des Gebäudes.
Beim Schedule werde allerdings nur die ersten Zeitspannen dargestellt. Wird mit position:0 gekennzeichnet. Hier gibt es allerdings bis zu 4 Positionen (position:1....).
Dein Script es wirklich klasse.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: andreas13 am 25 Oktober 2018, 03:40:14
Kannst du mir die Debugausgabe schicken? Dann kann ich versuchen das einzubauen. Aber vorher Passwort entfernen [emoji12]


Gesendet von iPad mit Tapatalk Pro
Titel: Antw:Viessmann VitoConnect API
Beitrag von: dr_laplace am 25 Oktober 2018, 09:08:23
Ich habe mit der "Vitotrol Plus" App verglichen. Wenn ich durch 8 Teile komme ich genau auf meinen Verbrauch in kWh. Aber warum 8 die Logik dahinter verstehe ich leider nicht.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 25 Oktober 2018, 09:56:32
Hallo,
gerne, wenn Du mir sagst, wo ich die Debugausgabe finde  :-)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Aladin222 am 26 Oktober 2018, 13:10:31
@andreas13 , @all ,

da ich mich bis jetzt immer um eine SQL-Datenbank gedrückt habe und alles noch in normalen Logfiles läuft ,stellt sich mir nun folgende Frage :

- wie ( ist es überhaupt möglich ) nutze ich die Einbindung ohne dblog ?
Muss nur der dummy angepasst werden ? Wenn ja wie ?

Schonmal danke für die Hilfe ...! Ein umstellen auf Dblog scheint recht heftig zu sein :-( daher wäre es sehr schön wenn ich mich noch etwas drücken könnte  :)
( alle Plots in fhem müssten dann ja auch umgestellt werden ,oder ? )

Thx

Titel: Antw:Viessmann VitoConnect API
Beitrag von: Johnnyflash am 26 Oktober 2018, 15:14:52
Einfach ein
define FileLog_vitoconnect100 ./log/%Y-%m-vitoconnect100.log vitoconnect100
wobei "vitoconnect100" ggf. an deinen Devicenamen angepasst werden muss. Das DBlog Attribut beim dummy kannst du dann naturlich weglassen. Dann noch ein
attr vitoconnect100 event-on-change-reading .* um nur Änderungen zu loggen.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Aladin222 am 26 Oktober 2018, 18:18:19
Danke !
Dann versuche ich mal das umzusetzen  :D
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 27 Oktober 2018, 08:40:13
Zitat von: Johnnyflash am 26 Oktober 2018, 15:14:52
Einfach ein
define FileLog_vitoconnect100 ./log/%Y-%m-vitoconnect100.log vitoconnect100
wobei "vitoconnect100" ggf. an deinen Devicenamen angepasst werden muss. Das DBlog Attribut beim dummy kannst du dann naturlich weglassen. Dann noch ein
attr vitoconnect100 event-on-change-reading .* um nur Änderungen zu loggen.

Da müsste meiner Meinung nach noch ein FileLog fehlen....
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 27 Oktober 2018, 08:40:59
Zitat von: dr_laplace am 25 Oktober 2018, 09:08:23
Ich habe mit der "Vitotrol Plus" App verglichen. Wenn ich durch 8 Teile komme ich genau auf meinen Verbrauch in kWh. Aber warum 8 die Logik dahinter verstehe ich leider nicht.

Bei Teiler 8 fallen mir spontan Bits und Bytes ein....
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 27 Oktober 2018, 09:15:00
Ich würde eher sagen, dass es die Brennwertzahl ist und die von der Heizung der übermittelten Werte m³ Angaben sind.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 27 Oktober 2018, 11:09:29
Seltsam, ich bekomme das Script nicht gestartet.

Im Log steht:

sh: 1: /opt/fhem/vissmann.php: not found
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm am 27 Oktober 2018, 11:20:02
Probiere mal sudo php /opt/fhem/vissmann.php
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 27 Oktober 2018, 11:24:44
Zitat von: renardfm am 27 Oktober 2018, 11:20:02
Probiere mal sudo php /opt/fhem/vissmann.php


Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die
Regeln erklärt hat.  Normalerweise läuft es auf drei Regeln hinaus:

    #1) Respektieren Sie die Privatsphäre anderer.
    #2) Denken Sie nach, bevor Sie tippen.
    #3) Mit großer Macht kommt große Verantwortung.

sudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben

::)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 27 Oktober 2018, 12:16:41
Bei mir läuft das mit php7.0......viessmann2410.php
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 27 Oktober 2018, 12:42:46
Zitat von: Frini am 27 Oktober 2018, 12:16:41
Bei mir läuft das mit php7.0......viessmann2410.php


sh: 1: php7.0: not found  :-[
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Aladin222 am 27 Oktober 2018, 15:18:41
@mave

installiere mal php !
sudo apt install php7.0-cli

@all

ich bekomme folgende Fehlermeldung


fhem@ubuntu:/opt/fhem$ /opt/fhem/vissmann.php --dump -user xxx -passwd xxx
PHP Notice:  Use of undefined constant CURLOPT_URL - assumed 'CURLOPT_URL' in /opt/fhem/vissmann.php on line 189
PHP Notice:  Use of undefined constant CURLOPT_HTTPHEADER - assumed 'CURLOPT_HTTPHEADER' in /opt/fhem/vissmann.php on line 190
PHP Notice:  Use of undefined constant CURLOPT_SSL_VERIFYPEER - assumed 'CURLOPT_SSL_VERIFYPEER' in /opt/fhem/vissmann.php on line 191
PHP Notice:  Use of undefined constant CURLOPT_RETURNTRANSFER - assumed 'CURLOPT_RETURNTRANSFER' in /opt/fhem/vissmann.php on line 192
PHP Notice:  Use of undefined constant CURLOPT_USERPWD - assumed 'CURLOPT_USERPWD' in /opt/fhem/vissmann.php on line 193
PHP Notice:  Use of undefined constant CURLOPT_HTTPAUTH - assumed 'CURLOPT_HTTPAUTH' in /opt/fhem/vissmann.php on line 194
PHP Notice:  Use of undefined constant CURLAUTH_BASIC - assumed 'CURLAUTH_BASIC' in /opt/fhem/vissmann.php on line 194
PHP Notice:  Use of undefined constant CURLOPT_POST - assumed 'CURLOPT_POST' in /opt/fhem/vissmann.php on line 195
PHP Fatal error:  Uncaught Error: Call to undefined function curl_init() in /opt/fhem/vissmann.php:197
Stack trace:
#0 /opt/fhem/vissmann.php(34): getCode()
#1 {main}
  thrown in /opt/fhem/vissmann.php on line 197
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 27 Oktober 2018, 21:21:47
Zitat von: Aladin222 am 27 Oktober 2018, 15:18:41
@mave

installiere mal php !
sudo apt install php7.0-cli


Vielen Dank.

Die Installation hat eine Menge Fehler geworfen. Die Dateien wurden nicht gefunden.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 27 Oktober 2018, 21:59:16
Jetzt hat es funktioniert, aber ich bekomme dieselben Fehlermeldungen wie Du...  :-[
Titel: Antw:Viessmann VitoConnect API
Beitrag von: sepultura30 am 27 Oktober 2018, 22:18:35
Zitat von: Aladin222 am 27 Oktober 2018, 15:18:41
@mave

installiere mal php !
sudo apt install php7.0-cli

@all

ich bekomme folgende Fehlermeldung


fhem@ubuntu:/opt/fhem$ /opt/fhem/vissmann.php --dump -user xxx -passwd xxx
PHP Notice:  Use of undefined constant CURLOPT_URL - assumed 'CURLOPT_URL' in /opt/fhem/vissmann.php on line 189
PHP Notice:  Use of undefined constant CURLOPT_HTTPHEADER - assumed 'CURLOPT_HTTPHEADER' in /opt/fhem/vissmann.php on line 190
PHP Notice:  Use of undefined constant CURLOPT_SSL_VERIFYPEER - assumed 'CURLOPT_SSL_VERIFYPEER' in /opt/fhem/vissmann.php on line 191
PHP Notice:  Use of undefined constant CURLOPT_RETURNTRANSFER - assumed 'CURLOPT_RETURNTRANSFER' in /opt/fhem/vissmann.php on line 192
PHP Notice:  Use of undefined constant CURLOPT_USERPWD - assumed 'CURLOPT_USERPWD' in /opt/fhem/vissmann.php on line 193
PHP Notice:  Use of undefined constant CURLOPT_HTTPAUTH - assumed 'CURLOPT_HTTPAUTH' in /opt/fhem/vissmann.php on line 194
PHP Notice:  Use of undefined constant CURLAUTH_BASIC - assumed 'CURLAUTH_BASIC' in /opt/fhem/vissmann.php on line 194
PHP Notice:  Use of undefined constant CURLOPT_POST - assumed 'CURLOPT_POST' in /opt/fhem/vissmann.php on line 195
PHP Fatal error:  Uncaught Error: Call to undefined function curl_init() in /opt/fhem/vissmann.php:197
Stack trace:
#0 /opt/fhem/vissmann.php(34): getCode()
#1 {main}
  thrown in /opt/fhem/vissmann.php on line 197


Diese Fehler bekomme ich auch, obwohl PHP7.0 und curl installiert ist.

Die Lösung ist: apt-get install php7.0-curl

Grüse

Sandro
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 28 Oktober 2018, 01:38:24
Mir raucht der Schädel.
Ich versuche den ganzen Abend die Einmalladung irgendwie in ein brauchbares php-Script zu bringen, damit ich diese aus FHEM anstoßen kann.
"links":[{"rel":["self"],"href":"https://api.viessmann-platform.io/operational-data/installations/XXXXXX/gateways/7571381802091109/devices/0/features/heating.dhw.oneTimeCharge"},
{"rel":["up"],"href":"https://api.viessmann-platform.io/operational-data/installations/XXXXXX/gateways/7571381802091109/devices/0/features"},
{"rel":["http://schema.viessmann.com/link-relations#live-updates","https://wiki.viessmann.com/display/VPL/Relations#Relations-live-updates"],
"href":"/operational-data/installations/XXXXXX/gateways/7571381802091109/devices/0/features/heating.dhw.oneTimeCharge"}],
"class":["heating.dhw.oneTimeCharge","feature"],
"properties":{"active":{"type":"boolean","value":false}},
"entities":[{"rel":["http://schema.viessmann.com/link-relations#feature-meta-information",
"https://wiki.viessmann.com/display/VPL/Relations#Relations-feature-meta-information",
"https://wiki.viessmann.com/display/VPL/Amounts#Amounts-unique"],
"properties":{"apiVersion":1,"isEnabled":true,"isReady":true,"gatewayId":"7571381802091109",
"feature":"heating.dhw.oneTimeCharge",
"uri":"/v1/gateways/7571381802091109/devices/0/features/heating.dhw.oneTimeCharge",
"deviceId":"0","timestamp":"2018-10-27T22:57:50.269Z"}}],
"actions":[{"method":"POST","isExecutable":true,"href":"https://api.viessmann-platform.io/operational-data/installations/XXXXXX/gateways/7571381802091109/devices/0/features/heating.dhw.oneTimeCharge/activate",
"name":"activate",
"title":"activate",
"fields":[],
"type":"application/json"},
{"method":"POST","isExecutable":true,
"href":"https://api.viessmann-platform.io/operational-data/installations/XXXXXX/gateways/7571381802091109/devices/0/features/heating.dhw.oneTimeCharge/deactivate",
"name":"deactivate",
"title":"deactivate",
"fields":[],
"type":"application/json"}]},
{"rel":["http://schema.viessmann.com/link-relations#feature","https://wiki.viessmann.com/display/VPL/Relations#Relations-feature","https://wiki.viessmann.com/display/VPL/Amounts#Amounts-collection"],


Das Setzen der Temperatur konnte ich mir aus einer Mischung von  thetrueavatar und der Hilfe von heiko73 zusammenbasteln. Beide Heizkreise können nun aus FHEM gesteuert werden.

Kann mir vielleicht jemand einen Tip geben, wie ich die Einmalladung in eine php packen kann?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm am 28 Oktober 2018, 08:13:58
Ich habe das Feature leider nicht.
Vitoladens300c mit vitocell100B 400l Speicher.. merkwürdig.
Wie taucht das in der Vicare App bei dir auf?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 28 Oktober 2018, 09:12:54
Unten rechts über den Button.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm am 28 Oktober 2018, 11:58:46
Was hast du für eine Heizung?
Bei mir fehlt der Punkt leider.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 28 Oktober 2018, 12:35:55
Vitodens 333f. Meine App ist in Version 2.1
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 28 Oktober 2018, 13:40:03
Nach Installation von PHP-CURL kann ich die Werte auslesen!

sudo apt-get install php-curl


Jetzt habe ich "nur" noch diese Meldungen im Log:

PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 28 Oktober 2018, 13:58:44
Hallo,
schau mal ein zwei Seiten vor. Ich hatte ähnliche Probleme. läuft jetzt aber. Hast Du die Datei ausführbar gemacht?
Besitzer und group sind korrekt?

Das ist mein Befehl zum Ausführen
php7.0 /opt/fhem/vissmann.php -user xxxx -passwd xxxx

Das ist der Def Bereich von meinem AT:
+*00:02 "php7.0 /opt/fhem/viessmann/viessmann2410.php -user xxxx@gmail.com -passwd xxxx"

Die XXXX mit Deinen Anmeldedaten aus der ViCare App ersetzen.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 28 Oktober 2018, 18:13:13
Da scheint aber die Definition des Array falsch zu sein....

Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 29 Oktober 2018, 05:52:19
Funktionieren tut es jetzt mit php7.0
Die Fehlermeldungen im Log sind aber nachwievor da.

Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 30 Oktober 2018, 07:32:17
Ich habe seit heute morgen auch wieder die oben genannten Fehlermeldungen.
Wo finde ich denn die Log-Einträge die ich mit --dump öffne? Im FHEM Log finde ich nichts.

Ich habe noch einmal den Schedule mit GetFeature extrahiert hier der Aufbau
"mon":[{"start":"05:00","end":"07:00","mode":"normal","position":0},{"start":"05:00","end":"07:00","mode":"normal","position":1},{"start":"05:00","end":"07:00","mode":"normal","position":2}],"tue":[{"start":"05:00","end":"07:00","mode":"normal","position":0}],"wen":[{"start":"05:00","end":"07:00","mode":"normal","position":0}],"thu":[{"start":"05:00","end":"07:00","mode":"normal","position":0},{"start":"11:00","end":"13:00","mode":"normal","position":1},{"start":"16:00","end":"22:00","mode":"normal","position":2}],"fri":[{"start":"05:00","end":"07:00","mode":"normal","position":0}],"sat":[{"start":"05:00","end":"07:00","mode":"normal","position":0}],"sun":[{"start":"05:00","end":"07:00","mode":"normal","position":0}],


Titel: Viessmann VitoConnect API
Beitrag von: andreas13 am 30 Oktober 2018, 07:59:58
Führt einfach mal /opt/fhem/vissmann —debug -user xxx -passwd xxx auf der Console (putty oder ssh) aus. Dann seht ihr was falsch läuft.
Das Skript hat leider kein vernünftiges Errorhandling wegen Zeitmangel meinerseits [emoji853]


Gesendet von iPad mit Tapatalk Pro
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 30 Oktober 2018, 08:27:26
Ok. Check ich heute abend. Auf meinem Handy ist das zu unübersichtlich.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: opus42 am 30 Oktober 2018, 18:15:55
Ich melde mich als brandneuer Besitzer einer Vitodens333 mit VitoControl  in den Kreis.

Erstmal vielen Dank/ Merci beaucoup an alle die diesen Zugang erkundet und das Script zur Verfügung gestellt haben.

Eine erste (dumme?) Frage, im Script werden harcoded "clientID" und ClientSecret" genutzt, sollte das unverändert bleiben??? Ein erster Test mit den unveränderten Werten hat funktioniert, aber sollte nicht jeder Client anderes sein?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 30 Oktober 2018, 21:20:43
Meine Viessmann App zeigt den Gasverbrauch getrennt nach Heizung und Warmwasser.

In FHEM stimmt der Gasverbrauch für die Heizung, der Gasverbrauch vom Warmwasser ist mit dem Verbrauch der Heizung identisch und ist somit falsch.

Hat jemand eine Idee, wie man an den Verbrauch für Warmwasser kommt?

Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 30 Oktober 2018, 22:48:17
Ich glaube da wird im Hintergrund noch gearbeitet. In der VicareApp sind diese Daten noch nicht eingepflegt.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 31 Oktober 2018, 06:32:54
Danke Frini.

Hast Du auch noch die Fehlermeldungen im Log?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: opus42 am 31 Oktober 2018, 09:54:08
Zitat von: Mave am 30 Oktober 2018, 21:20:43
Meine Viessmann App zeigt den Gasverbrauch getrennt nach Heizung und Warmwasser.

In FHEM stimmt der Gasverbrauch für die Heizung, der Gasverbrauch vom Warmwasser ist mit dem Verbrauch der Heizung identisch und ist somit falsch.

Hat jemand eine Idee, wie man an den Verbrauch für Warmwasser kommt?

Moin, welche ViessmannApp nutzt Du? In ViCare wird das m.E. ja nicht angezeigt. Mittels des Scriptes erhalte ich für Heiz- und Warmwasserbetrieb auch identische Werte. Diese Werte stimmen aber nicht mit den Werten die in der Anzeige der Heizung dargestellt werden überein (dort gibt es auch nur den (Gesamt-)Gasverbrauch, dazu aber auch noch den Stromverbrauch.)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 31 Oktober 2018, 12:32:54
Ich nutze neben der ViCare noch die Vitotrol Plus und da werden die Gasverbräuche von Heizung und Warmwasser separat ausgewiesen.

Das, was in FHEM angezeigt wird, entspricht exakt dem Gasverbrauch für Heizung. Das bedeutet, der Verbrauch für Warmwasser fehlt.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Aladin222 am 01 November 2018, 02:43:30
@mave,

die Vitotrol Plus App scheint es im Store nicht mehr zu geben :-(
Also ,lösche sie nicht !
Es wird eine Vitrol App im Store angeboten ,welche eine Registrierung bzw Anmeldung bei mir nicht zulässt !

Wie wird die Gasmenge denn angezeigt ? In KWh oder m3 ? Passt die Zahlenangabe mit Fhem genau überein ?

Titel: Antw:Viessmann VitoConnect API
Beitrag von: opus42 am 01 November 2018, 07:29:42
Zitat von: Aladin222 am 01 November 2018, 02:43:30
@mave,

die Vitotrol Plus App scheint es im Store nicht mehr zu geben :-(
Also ,lösche sie nicht !
Es wird eine Vitrol App im Store angeboten ,welche eine Registrierung bzw Anmeldung bei mir nicht zulässt !

Wie wird die Gasmenge denn angezeigt ? In KWh oder m3 ? Passt die Zahlenangabe mit Fhem genau überein ?

Merkwürdig, ich hatte mir gestern noch die Plus Version installiert, mir einen Zugang dafür  registriert um dann festzustellen kein passendes Gerät  zu haben.
Die vom Script angezeigten Werte sind geringer als die an der Anlage angezeigten. Wie @mave  schon sagte sind es im Script lediglich/immer die Werte der Heizverbrauchs.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 02 November 2018, 12:44:24
Hello,  for information, I have added a bunch of new methods that might interest you on my api:
- getDhwGasConsumption
- getHeatingGasConsumption
- getHeatingBurnerCurrentPower
- getHeatingBurnerModulation
- getCirculationPumpStatus
- isDhwCharging
- getDhwChargingLevel
- isOneTimeDhwCharge
- getDhwPumpsCirculation
- getDhwPumpsPrimary
- getDhwSchedule
- setRawDhwSchedule
- getHeatingSchedule
- setRawSchedule
- getCirculationSchedule
- setRawCirculationSchedule

Code is availabable on github https://github.com/thetrueavatar/Viessmann-API and documentation is now auto-generated base on code(still have some problem with @param,@return,@throws annotation though) and can be found here:
https://htmlpreview.github.io/?https://raw.githubusercontent.com/thetrueavatar/Viessmann-Api/develop/docs/class-Viessmann.API.ViessmannAPI.html
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 02 November 2018, 19:59:58
Hi have seen it on github. I will give it a try next week.
The parts isOneTimeCharge the code for manual dhw charging?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 03 November 2018, 00:02:28
Zitat von: Frini am 02 November 2018, 19:59:58
Hi have seen it on github. I will give it a try next week.
The parts isOneTimeCharge the code for manual dhw charging?

To be honest I don't know. I have seen this feature in the demo sample that can be found in the ViCare App(guess it's a mistake that we can find it there). I don't know exactly the meaning of it. Since I don't have this on my own heating device I have only be able to test it against those demo sample but till now demo sample was corresponding to what viessmann service expose...
Here is the json file from demo sample:

{
  "actions": [
    {
      "isExecutable": true,
      "href": "http://0.0.0.0:8082/operational-data/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge/activate",
      "method": "POST",
      "title": "activate",
      "name": "activate"
    },
    {
      "isExecutable": true,
      "href": "http://0.0.0.0:8082/operational-data/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge/deactivate",
      "method": "POST",
      "title": "deactivate",
      "name": "deactivate"
    }
  ],
  "links": [
    {
      "rel": [
        "self"
      ],
      "href": "http://0.0.0.0:8082/operational-data/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge"
    },
    {
      "rel": [
        "up"
      ],
      "href": "http://0.0.0.0:8082/operational-data/installations/demo/gateways/7123456789123456/devices/0/features"
    },
    {
      "rel": [
        "http://schema.viessmann.com/link-relations#live-updates"
      ],
      "href": "/operational-data/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge"
    },
    {
      "rel": [
        "via"
      ],
      "href": "https://staging-estrella.viessmann-platform.io/estrella/rest/v1.0/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge"
    }
  ],
  "properties": {
    "active": {
      "value": false,
      "type": "boolean"
    }
  },
  "entities": [
    {
      "rel": [
        "http://schema.viessmann.com/link-relations#feature-meta-information"
      ],
      "properties": {
        "apiVersion": 1,
        "isEnabled": true,
        "isReady": true,
        "gatewayId": "7123456789123456",
        "timestamp": "2017-12-22T12:19:05.613Z",
        "uri": "/v1/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge",
        "feature": "heating.dhw.oneTimeCharge",
        "deviceId": "0"
      }
    }
  ],
  "class": [
    "heating.dhw.oneTimeCharge",
    "feature"
  ]
}

My guess it's that's kind of manual charging indeed. I know that I can on my Vitocell 100-B add an electrical heating to increase hot-storage water temperature. Maybe this is related but I'm not sure...
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 03 November 2018, 07:21:36
Zitat von: Aladin222 am 01 November 2018, 02:43:30
@mave,

die Vitotrol Plus App scheint es im Store nicht mehr zu geben :-(
Also ,lösche sie nicht !
Es wird eine Vitrol App im Store angeboten ,welche eine Registrierung bzw Anmeldung bei mir nicht zulässt !

Wie wird die Gasmenge denn angezeigt ? In KWh oder m3 ? Passt die Zahlenangabe mit Fhem genau überein ?

Ich teile die Angabe in FHEM durch 8 und damit stimmt der Wert exakt mit der App (kWh) überein.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 03 November 2018, 11:41:22
For information a french guy has analyzed data returned by ViCare and found some bug/difference with gaz consumption depending on period asked:
- day: return last seven daily consumption.   Was 8 on Vitotrol Plus
- week: return last 52 weekly consumption Was 53 on Vitotrol Plus
- month: return last 12 monthly consumption Was 12 on Vitotrol Plus
- year: return last 2 yearly consumption Was 3 on Vitotrol Plus

I will fill in this post as soon as jeedom forum is available but afair he noticed some bug while consumption > 256kwh.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 05 November 2018, 08:21:13
Zitat von: thetrueavatar am 03 November 2018, 00:02:28
To be honest I don't know. I have seen this feature in the demo sample that can be found in the ViCare App(guess it's a mistake that we can find it there). I don't know exactly the meaning of it. Since I don't have this on my own heating device I have only be able to test it against those demo sample but till now demo sample was corresponding to what viessmann service expose...
Here is the json file from demo sample:

{
  "actions": [
    {
      "isExecutable": true,
      "href": "http://0.0.0.0:8082/operational-data/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge/activate",
      "method": "POST",
      "title": "activate",
      "name": "activate"
    },
    {
      "isExecutable": true,
      "href": "http://0.0.0.0:8082/operational-data/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge/deactivate",
      "method": "POST",
      "title": "deactivate",
      "name": "deactivate"
    }
  ],
  "links": [
    {
      "rel": [
        "self"
      ],
      "href": "http://0.0.0.0:8082/operational-data/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge"
    },
    {
      "rel": [
        "up"
      ],
      "href": "http://0.0.0.0:8082/operational-data/installations/demo/gateways/7123456789123456/devices/0/features"
    },
    {
      "rel": [
        "http://schema.viessmann.com/link-relations#live-updates"
      ],
      "href": "/operational-data/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge"
    },
    {
      "rel": [
        "via"
      ],
      "href": "https://staging-estrella.viessmann-platform.io/estrella/rest/v1.0/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge"
    }
  ],
  "properties": {
    "active": {
      "value": false,
      "type": "boolean"
    }
  },
  "entities": [
    {
      "rel": [
        "http://schema.viessmann.com/link-relations#feature-meta-information"
      ],
      "properties": {
        "apiVersion": 1,
        "isEnabled": true,
        "isReady": true,
        "gatewayId": "7123456789123456",
        "timestamp": "2017-12-22T12:19:05.613Z",
        "uri": "/v1/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge",
        "feature": "heating.dhw.oneTimeCharge",
        "deviceId": "0"
      }
    }
  ],
  "class": [
    "heating.dhw.oneTimeCharge",
    "feature"
  ]
}

My guess it's that's kind of manual charging indeed. I know that I can on my Vitocell 100-B add an electrical heating to increase hot-storage water temperature. Maybe this is related but I'm not sure...

I this could it be.
i tried to do it according the code by you where you activate the ecoprogram. But it didn't work. But at the moment I am in Denmark so I only can "work" with my mobile phone.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 05 November 2018, 09:57:14
I do confirm there is a remaining bug with echo activation.
EDIT: just fix it. Could you give it a try once again ?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 06 November 2018, 08:35:02
Zitat von: Mave am 28 Oktober 2018, 13:40:03
Nach Installation von PHP-CURL kann ich die Werte auslesen!

sudo apt-get install php-curl


Jetzt habe ich "nur" noch diese Meldungen im Log:

PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194
PHP Notice:  Undefined offset: 0 in /opt/fhem/viessmann.php on line 193
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/viessmann.php on line 194



Diese Meldungen sind lästig und müllen das Log voll.

Jemand eine Idee, wie das Problem gelöst werden kann?

Alternativ eine Idee, wie man das Logging von PHP deaktivieren kann?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: andreas13 am 06 November 2018, 15:41:45
Ich arbeite im Moment an einem FHEM-Modul. Ich hoffe, dann sind auch die Fehlermeldungen weg ;-)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 07 November 2018, 09:24:21
Zitat von: andreas13 am 06 November 2018, 15:41:45
Ich arbeite im Moment an einem FHEM-Modul. Ich hoffe, dann sind auch die Fehlermeldungen weg ;-)



Oh, das sind ja sehr erfreuliche Nachrichten.  :D
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 08 November 2018, 10:45:27
Oh Klasse.
Wenn Du Irgendwelche Abfragen der API brauchst, oder Logs, kann ich die gerne beisteuern.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Alexander90 am 17 November 2018, 09:59:53
Sehr geiles Projekt!!!

Ich habe die geupdetete Version auf Seite 9 der Vissmann.php genommen. Habe eine Vitodens 333 WS3A. Soweit ich das sehe sind alle Werte aus der ViCare App da. Mehr können anscheinend nicht ausgelesen werden... Danke für eure Arbeit!
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Johnnyflash am 17 November 2018, 10:03:27
Dass dein Passwort dort im Klartext steht ist dir aber schon klar, oder?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 20 November 2018, 08:04:18
Seit 1:30 ca heute nacht ist die api nicht mehr richtig erreichbar
habe gestern abend noch meinen shift und slope angepast
heute morgen um 6 kann ich die temparatur zwar setzen (22) grad.. bekomme aber immer die nacht temparatur (18) grad über die api zurrück

mal schauen ob ich nachher etwas zeit zum debuggen habe
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm am 20 November 2018, 08:07:33
Die Vicare App liefert auch nur alte Werte!
Es ist allerdings in der App nicht ersichtlich dass der Server nicht erreichbar ist.. was ne scheisse
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 20 November 2018, 08:39:13
jop habe gerade meinen Slope noch mal angepasst
und beim holen der werte gibt der server mir den alten wert zurück
beim setzen habe ich keinen fehler bekomemn.. habe aber glaube ich im code auch ein @ vor der funktion
um fehler ausgabe zu deaktivieren
Titel: Antw:Viessmann VitoConnect API
Beitrag von: opus42 am 20 November 2018, 12:29:32
Ich logge per Script Aussen-und Boilertemperatur. Ich habe sehr vereinzelte Updates seit heute Nacht erhalten, dennoch würde ich auch sagen der Server meldet nix mehr. Ein Kommando nimmt er auch nicht wirklich an (Warmwasser jetzt aufheizen).
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm am 20 November 2018, 12:58:17
Bei mir geht es ohne zutun wieder.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: onkeloki am 20 November 2018, 13:49:39
Jep geht wieder..
Titel: Antw:Viessmann VitoConnect API
Beitrag von: opus42 am 24 November 2018, 07:48:57
Moin,

die Nutzung des Scriptes funktioniert für mich sehr gut.
Eine Frage/Anregung habe ich noch. Man kann zwar die Raumtemperatur auslesen (sofern ein solcher Sensor in der Anlage integriert ist),  warum kann man keine externen Sensordaten zur Anlage senden?  Dazu fehlt die set-procedure in der API, gibt es hierzu einen Kommunikationskanal mit Viessmann?

..und für @thetrueavatar
Hi, the script working on my system.
I do have a question/suggestion. It is possible to read the room temperature ( if such a sensor is part of the heating-system). Why isn't possible the write such data from an external sensor to the heating-system? The set-procedufe is missing in the API, does Viessmann have communication-channel for such questions?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 24 November 2018, 08:09:05
Habt Ihr keine Fehlermeldungen im Log vom Script?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: thetrueavatar am 24 November 2018, 10:01:15
Zitat von: opus42 am 24 November 2018, 07:48:57
..und für @thetrueavatar
Hi, the script working on my system.
I do have a question/suggestion. It is possible to read the room temperature ( if such a sensor is part of the heating-system). Why isn't possible the write such data from an external sensor to the heating-system? The set-procedufe is missing in the API, does Viessmann have communication-channel for such questions?
Well I just expose data and operation  available on Viessmann server.  I don't think viessmann Vitoconnect expose any method to write room temperature through REST service. AFAIK you can connect(with wire) your heating system with a "thermostat" which is  in fact only a sensor because regulation is done by the vitotronic module. So you can only provide room temperature by connecting physically a sensor to the heating system. I guess that if you're using the optical solution(optolink https://github.com/openv/openv/wiki) you could access to every internal data of the heating system and not only the "basic" one exposed by vitoconnect). That might be a solution if you don't want to pay the excessive price of an official vitotrol sensor...
Titel: Antw:Viessmann VitoConnect API
Beitrag von: opus42 am 24 November 2018, 14:14:15
@thetrueavatar
Thanks for that info!
Titel: Antw:Viessmann VitoConnect API
Beitrag von: andreas13 am 24 November 2018, 17:46:36

Die erste Version eines Moduls für die Vissmann API ist fertig: https://forum.fhem.de/index.php/topic,93664.0.html

Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 06 Dezember 2018, 12:27:34
Hat es schon jemand geschafft eine manuelle Warmwasserladung aus FHEM heraus zu starten?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 06 Dezember 2018, 12:47:14
Zitat von: Frini am 06 Dezember 2018, 12:27:34
Hat es schon jemand geschafft eine manuelle Warmwasserladung aus FHEM heraus zu starten?

Das würde mich auch interessieren:)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: renardfm am 06 Dezember 2018, 13:10:11
Nein, es wird leider in meinen Features und in der Vicare App bei mir nicht angeboten.
Vitoladens 300c (Ölbrennwert) mit Vitocell 100B (400l Speicher)
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 06 Dezember 2018, 15:22:06
Ich habe schon versucht mittels notify manuell auf WW-Bereitung zu stellen, dann die WW-Solltemperatur heraufzusetzen und danach wieder in den normalen Bereich zurückschalten. Das hat leider auch nicht funktioniert.
Die ViCare-App hat mittlerweile sogar ein Widget für manuelle Warmwasserbereitung.
Ich schaffe es leider nicht den gesendetet Befehl an die API zu sniffen.

Hier steht die Auswertung der OneTimeCharge Zeilen. Aber ich stehe da echt auf dem Schlauch, wie ich das umsetzen kann.
Zitat von: thetrueavatar am 03 November 2018, 00:02:28
To be honest I don't know. I have seen this feature in the demo sample that can be found in the ViCare App(guess it's a mistake that we can find it there). I don't know exactly the meaning of it. Since I don't have this on my own heating device I have only be able to test it against those demo sample but till now demo sample was corresponding to what viessmann service expose...
Here is the json file from demo sample:

{
  "actions": [
    {
      "isExecutable": true,
      "href": "http://0.0.0.0:8082/operational-data/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge/activate",
      "method": "POST",
      "title": "activate",
      "name": "activate"
    },
    {
      "isExecutable": true,
      "href": "http://0.0.0.0:8082/operational-data/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge/deactivate",
      "method": "POST",
      "title": "deactivate",
      "name": "deactivate"
    }
  ],
  "links": [
    {
      "rel": [
        "self"
      ],
      "href": "http://0.0.0.0:8082/operational-data/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge"
    },
    {
      "rel": [
        "up"
      ],
      "href": "http://0.0.0.0:8082/operational-data/installations/demo/gateways/7123456789123456/devices/0/features"
    },
    {
      "rel": [
        "http://schema.viessmann.com/link-relations#live-updates"
      ],
      "href": "/operational-data/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge"
    },
    {
      "rel": [
        "via"
      ],
      "href": "https://staging-estrella.viessmann-platform.io/estrella/rest/v1.0/installations/demo/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge"
    }
  ],
  "properties": {
    "active": {
      "value": false,
      "type": "boolean"
    }
  },
  "entities": [
    {
      "rel": [
        "http://schema.viessmann.com/link-relations#feature-meta-information"
      ],
      "properties": {
        "apiVersion": 1,
        "isEnabled": true,
        "isReady": true,
        "gatewayId": "7123456789123456",
        "timestamp": "2017-12-22T12:19:05.613Z",
        "uri": "/v1/gateways/7123456789123456/devices/0/features/heating.dhw.oneTimeCharge",
        "feature": "heating.dhw.oneTimeCharge",
        "deviceId": "0"
      }
    }
  ],
  "class": [
    "heating.dhw.oneTimeCharge",
    "feature"
  ]
}

My guess it's that's kind of manual charging indeed. I know that I can on my Vitocell 100-B add an electrical heating to increase hot-storage water temperature. Maybe this is related but I'm not sure...
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 07 Dezember 2018, 11:56:37

#!/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=user
export isiwebpasswd=pw
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/xxxx/gateways/xxxxxxxxxx/devices/0/features/heating.dhw.oneTimeCharge/activate -S -s -H "Content-Type: application/json" -H "AUTHORIZATION: Bearer $TOKEN" -d '{"mode":"activate"}'`
echo "$REP"


Damit lässt sich die einmalige Speicherladung starten ... vielleicht hilft es euch weiter?
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 07 Dezember 2018, 12:15:31
Cool. Das packe ich mir in eine php und führe die einfach aus? Also nach vorheriger Passwort, Benutzername und Gateway Anpassung meine ich.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: ritschi am 07 Dezember 2018, 13:36:54
Zitat von: Frini am 07 Dezember 2018, 12:15:31
Cool. Das packe ich mir in eine php und führe die einfach aus? Also nach vorheriger Passwort, Benutzername und Gateway Anpassung meine ich.

Ne das ein Shell Script ... Ich dachte es hilft irgendwie bei der Umsetzung
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 07 Dezember 2018, 16:01:14
OK. Damit habe ich noch nicht gearbeitet. Ich werde mich mal dran setzen :-)
Vielen Dank  :D
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 07 Dezember 2018, 16:53:47
Ich habe mir gerade ein bash skript erstellt. Allerdings meckert er mit folgender Meldung:

test.sh: line 10: curl: command not found
test.sh: line 12: curl: command not found
test.sh: line 15: curl: command not found


Aufgerufen mit sudo bash test.sh

Titel: Antw:Viessmann VitoConnect API
Beitrag von: oli82 am 07 Dezember 2018, 17:13:46
Zitat von: Frini am 07 Dezember 2018, 16:53:47
Ich habe mir gerade ein bash skript erstellt. Allerdings meckert er mit folgender Meldung:

test.sh: line 10: curl: command not found
test.sh: line 12: curl: command not found
test.sh: line 15: curl: command not found


Aufgerufen mit sudo bash test.sh
https://www.cyberciti.biz/faq/how-to-install-curl-command-on-a-ubuntu-linux/
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 07 Dezember 2018, 19:51:33
Jetzt klappt es. Ich dachte ich hätte curl schon installiert gehabt.
Ich habe hier jetzt einen DashButton mit dem ich endlich vor dem Baden eine Warmwasserladung starten kann. Vielen Dank
Titel: Antw:Viessmann VitoConnect API
Beitrag von: andreas13 am 27 Dezember 2018, 12:04:00
Hallo zusammen,

nutzt noch jemand das PHP Skript? Ich habe das Skript in ein FHEM Modul migriert (https://forum.fhem.de/index.php/topic,93664.0.html). Fehlt Euch noch etwas an dem Modul um Euch zum Schwenken zu überreden? ;-)

Liebe Grüße

Andreas
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 27 Dezember 2018, 12:07:07
Ich.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Frini am 27 Dezember 2018, 13:24:40
Ich habe es vor Weihnachten durch dein Modul abgelöst. Nutze aber noch die php und das Bash Skript um die Heizkurve,Temperaturen, manuelle Wasserladungen und Modi zu setzen.

Was wirklich genial wäre wäre ebenfalls ein setzen der Urlaubszeiten.

Aber ist kein Muss. Ich habe schon mehr realisieren können als vorher gedacht.
Titel: Antw:Viessmann VitoConnect API
Beitrag von: andreas13 am 30 Dezember 2018, 18:14:44
Zitat von: Mave am 27 Dezember 2018, 12:07:07
Ich.
Und was fehlt Dir?


Gesendet von iPhone mit Tapatalk Pro
Titel: Antw:Viessmann VitoConnect API
Beitrag von: Mave am 30 Dezember 2018, 18:20:10
Ich habe umgestellt. Siehe neuen Thread.