Repository: somm15/PyViCare

Issue:
Add Solar properties
Please add
- getSolarStorageTemperature
- getSolarPowerProduction
to the PyVicareDevice.py code

Comments:

Patch:
diff --git a/PyViCare/PyViCareDevice.py b/PyViCare/PyViCareDevice.py
index 121f0c1..59d06a3 100644
--- a/PyViCare/PyViCareDevice.py
+++ b/PyViCare/PyViCareDevice.py
@@ -162,6 +162,14 @@ class Device:
     def getSolarCollectorTemperature(self):
         return self.service.getProperty("heating.solar.sensors.temperature.collector")["properties"]["value"]["value"]
 
+    @handleNotSupported
+    def getSolarStorageTemperature(self):
+        return self.service.getProperty("heating.solar.sensors.temperature.dhw")["properties"]["value"]["value"]
+
+    @handleNotSupported
+    def getSolarPowerProduction(self):
+        return self.service.getProperty("heating.solar.power.production")["properties"]["day"]["value"]
+
     @handleNotSupported
     def getSolarPumpActive(self):
         status = self.service.getProperty("heating.solar.pumps.circuit")[


Test patch:
diff --git a/tests/response/Solar.json b/tests/response/Solar.json
new file mode 100644
index 0000000..4d3f8b3
--- /dev/null
+++ b/tests/response/Solar.json
@@ -0,0 +1,1158 @@
+{
+  "data": [
+    {
+      "feature": "heating",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.762Z",
+      "properties": {},
+      "commands": {},
+      "components": [
+        "boiler",
+        "burner",
+        "circuits",
+        "device",
+        "dhw",
+        "sensors",
+        "operating",
+        "solar"
+      ]
+    },
+    {
+      "feature": "heating.boiler",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.762Z",
+      "properties": {},
+      "commands": {},
+      "components": ["sensors", "serial", "temperature"]
+    },
+    {
+      "feature": "heating.boiler.sensors",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.762Z",
+      "properties": {},
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.boiler.serial",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.762Z",
+      "properties": { "value": { "type": "string", "value": "" } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.boiler.sensors.temperature.main",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.762Z",
+      "properties": {
+        "status": { "type": "string", "value": "connected" },
+        "value": { "type": "number", "value": 28 }
+      },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.boiler.temperature",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.762Z",
+      "properties": { "value": { "type": "number", "value": 5 } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.burner",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.762Z",
+      "properties": { "active": { "type": "boolean", "value": false } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.circuits",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.762Z",
+      "properties": { "enabled": { "type": "array", "value": ["0"] } },
+      "commands": {},
+      "components": ["0", "1", "2"]
+    },
+    {
+      "feature": "heating.circuits.0",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {
+        "active": { "type": "boolean", "value": true },
+        "name": { "type": "string", "value": "Heizkreis 1" }
+      },
+      "commands": {
+        "setName": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0/commands/setName",
+          "name": "setName",
+          "isExecutable": true,
+          "params": {
+            "name": {
+              "required": true,
+              "type": "string",
+              "constraints": { "minLength": 1, "maxLength": 20 }
+            }
+          }
+        }
+      },
+      "components": [
+        "circulation",
+        "dhw",
+        "frostprotection",
+        "heating",
+        "operating",
+        "sensors"
+      ]
+    },
+    {
+      "feature": "heating.circuits.0.circulation",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["pump"]
+    },
+    {
+      "feature": "heating.circuits.1.circulation",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["pump"]
+    },
+    {
+      "feature": "heating.circuits.2.circulation",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["pump"]
+    },
+    {
+      "feature": "heating.circuits.0.circulation.pump",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": { "status": { "type": "string", "value": "off" } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.dhw",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["pumps", "schedule"]
+    },
+    {
+      "feature": "heating.circuits.1.dhw",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["pumps", "schedule"]
+    },
+    {
+      "feature": "heating.circuits.2.dhw",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["pumps", "schedule"]
+    },
+    {
+      "feature": "heating.circuits.0.dhw.pumps",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["circulation"]
+    },
+    {
+      "feature": "heating.circuits.1.dhw.pumps",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["circulation"]
+    },
+    {
+      "feature": "heating.circuits.2.dhw.pumps",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["circulation"]
+    },
+    {
+      "feature": "heating.circuits.0.dhw.pumps.circulation",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["schedule"]
+    },
+    {
+      "feature": "heating.circuits.1.dhw.pumps.circulation",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["schedule"]
+    },
+    {
+      "feature": "heating.circuits.2.dhw.pumps.circulation",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["schedule"]
+    },
+    {
+      "feature": "heating.circuits.0.frostprotection",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": { "status": { "type": "string", "value": "off" } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.heating",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["curve", "schedule"]
+    },
+    {
+      "feature": "heating.circuits.1.heating",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["curve", "schedule"]
+    },
+    {
+      "feature": "heating.circuits.2.heating",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {},
+      "commands": {},
+      "components": ["curve", "schedule"]
+    },
+    {
+      "feature": "heating.circuits.0.heating.curve",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.763Z",
+      "properties": {
+        "shift": { "type": "number", "value": 0 },
+        "slope": { "type": "number", "value": 0.8 }
+      },
+      "commands": {
+        "setCurve": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.heating.curve/commands/setCurve",
+          "name": "setCurve",
+          "isExecutable": true,
+          "params": {
+            "slope": {
+              "required": true,
+              "type": "number",
+              "constraints": { "min": 0.2, "max": 3.5, "stepping": 0.1 }
+            },
+            "shift": {
+              "required": true,
+              "type": "number",
+              "constraints": { "min": -13, "max": 40, "stepping": 1 }
+            }
+          }
+        }
+      },
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.heating.schedule",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.767Z",
+      "properties": {
+        "active": { "type": "boolean", "value": false },
+        "entries": {
+          "type": "Schedule",
+          "value": {
+            "mon": [
+              {
+                "start": "07:00",
+                "end": "22:00",
+                "mode": "normal",
+                "position": 0
+              }
+            ],
+            "tue": [
+              {
+                "start": "07:00",
+                "end": "22:00",
+                "mode": "normal",
+                "position": 0
+              }
+            ],
+            "wed": [
+              {
+                "start": "07:00",
+                "end": "22:00",
+                "mode": "normal",
+                "position": 0
+              }
+            ],
+            "thu": [
+              {
+                "start": "07:00",
+                "end": "22:00",
+                "mode": "normal",
+                "position": 0
+              }
+            ],
+            "fri": [
+              {
+                "start": "07:00",
+                "end": "22:00",
+                "mode": "normal",
+                "position": 0
+              }
+            ],
+            "sat": [
+              {
+                "start": "07:00",
+                "end": "22:00",
+                "mode": "normal",
+                "position": 0
+              }
+            ],
+            "sun": [
+              {
+                "start": "07:00",
+                "end": "22:00",
+                "mode": "normal",
+                "position": 0
+              }
+            ]
+          }
+        },
+        "overlapAllowed": { "type": "boolean", "value": true }
+      },
+      "commands": {
+        "setSchedule": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.heating.schedule/commands/setSchedule",
+          "name": "setSchedule",
+          "isExecutable": true,
+          "params": {
+            "newSchedule": {
+              "required": true,
+              "type": "Schedule",
+              "constraints": {
+                "maxEntries": 4,
+                "resolution": 10,
+                "modes": ["normal"],
+                "defaultMode": "reduced"
+              }
+            }
+          }
+        }
+      },
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.operating",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.767Z",
+      "properties": {},
+      "commands": {},
+      "components": ["modes", "programs"]
+    },
+    {
+      "feature": "heating.circuits.1.operating",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.767Z",
+      "properties": {},
+      "commands": {},
+      "components": ["modes", "programs"]
+    },
+    {
+      "feature": "heating.circuits.2.operating",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.767Z",
+      "properties": {},
+      "commands": {},
+      "components": ["modes", "programs"]
+    },
+    {
+      "feature": "heating.circuits.0.operating.modes",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.767Z",
+      "properties": {},
+      "commands": {},
+      "components": ["active", "dhw", "heating", "dhwAndHeating", "standby"]
+    },
+    {
+      "feature": "heating.circuits.1.operating.modes",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.767Z",
+      "properties": {},
+      "commands": {},
+      "components": ["active", "dhw", "heating", "dhwAndHeating", "standby"]
+    },
+    {
+      "feature": "heating.circuits.2.operating.modes",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.767Z",
+      "properties": {},
+      "commands": {},
+      "components": ["active", "dhw", "heating", "dhwAndHeating", "standby"]
+    },
+    {
+      "feature": "heating.circuits.0.operating.modes.active",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.767Z",
+      "properties": { "value": { "type": "string", "value": "dhw" } },
+      "commands": {
+        "setMode": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.operating.modes.active/commands/setMode",
+          "name": "setMode",
+          "isExecutable": true,
+          "params": {
+            "mode": {
+              "required": true,
+              "type": "string",
+              "constraints": {
+                "enum": [
+                  "dhw",
+                  "dhwAndHeating",
+                  "forcedNormal",
+                  "forcedReduced",
+                  "standby"
+                ]
+              }
+            }
+          }
+        }
+      },
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.operating.modes.dhw",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.769Z",
+      "properties": { "active": { "type": "boolean", "value": true } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.operating.modes.dhwAndHeating",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.769Z",
+      "properties": { "active": { "type": "boolean", "value": false } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.operating.modes.standby",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.769Z",
+      "properties": { "active": { "type": "boolean", "value": false } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.operating.programs",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.769Z",
+      "properties": {},
+      "commands": {},
+      "components": [
+        "active",
+        "comfort",
+        "eco",
+        "external",
+        "holiday",
+        "normal",
+        "reduced",
+        "standby"
+      ]
+    },
+    {
+      "feature": "heating.circuits.1.operating.programs",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.769Z",
+      "properties": {},
+      "commands": {},
+      "components": [
+        "active",
+        "comfort",
+        "eco",
+        "external",
+        "holiday",
+        "normal",
+        "reduced",
+        "standby"
+      ]
+    },
+    {
+      "feature": "heating.circuits.2.operating.programs",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.769Z",
+      "properties": {},
+      "commands": {},
+      "components": [
+        "active",
+        "comfort",
+        "eco",
+        "external",
+        "holiday",
+        "normal",
+        "reduced",
+        "standby"
+      ]
+    },
+    {
+      "feature": "heating.circuits.0.operating.programs.active",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.769Z",
+      "properties": { "value": { "type": "string", "value": "standby" } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.operating.programs.comfort",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.775Z",
+      "properties": {
+        "active": { "type": "boolean", "value": false },
+        "temperature": { "type": "number", "value": 20 }
+      },
+      "commands": {
+        "setTemperature": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.operating.programs.comfort/commands/setTemperature",
+          "name": "setTemperature",
+          "isExecutable": true,
+          "params": {
+            "targetTemperature": {
+              "required": true,
+              "type": "number",
+              "constraints": { "min": 4, "max": 37, "stepping": 1 }
+            }
+          }
+        },
+        "activate": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.operating.programs.comfort/commands/activate",
+          "name": "activate",
+          "isExecutable": true,
+          "params": {}
+        },
+        "deactivate": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.operating.programs.comfort/commands/deactivate",
+          "name": "deactivate",
+          "isExecutable": false,
+          "params": {}
+        }
+      },
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.operating.programs.eco",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.775Z",
+      "properties": {
+        "active": { "type": "boolean", "value": false },
+        "temperature": { "type": "number", "value": 22 }
+      },
+      "commands": {
+        "activate": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.operating.programs.eco/commands/activate",
+          "name": "activate",
+          "isExecutable": false,
+          "params": {}
+        },
+        "deactivate": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.operating.programs.eco/commands/deactivate",
+          "name": "deactivate",
+          "isExecutable": false,
+          "params": {}
+        }
+      },
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.operating.programs.external",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.775Z",
+      "properties": {
+        "active": { "type": "boolean", "value": false },
+        "temperature": { "type": "number", "value": 0 }
+      },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.operating.programs.holiday",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.775Z",
+      "properties": {
+        "active": { "type": "boolean", "value": false },
+        "start": { "type": "string", "value": "" },
+        "end": { "type": "string", "value": "" }
+      },
+      "commands": {
+        "changeEndDate": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.operating.programs.holiday/commands/changeEndDate",
+          "name": "changeEndDate",
+          "isExecutable": false,
+          "params": {
+            "end": { "required": true, "type": "string", "constraints": {} }
+          }
+        },
+        "schedule": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.operating.programs.holiday/commands/schedule",
+          "name": "schedule",
+          "isExecutable": true,
+          "params": {
+            "start": { "required": true, "type": "string", "constraints": {} },
+            "end": { "required": true, "type": "string", "constraints": {} }
+          }
+        },
+        "unschedule": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.operating.programs.holiday/commands/unschedule",
+          "name": "unschedule",
+          "isExecutable": true,
+          "params": {}
+        }
+      },
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.operating.programs.normal",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.775Z",
+      "properties": {
+        "active": { "type": "boolean", "value": false },
+        "temperature": { "type": "number", "value": 22 }
+      },
+      "commands": {
+        "setTemperature": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.operating.programs.normal/commands/setTemperature",
+          "name": "setTemperature",
+          "isExecutable": true,
+          "params": {
+            "targetTemperature": {
+              "required": true,
+              "type": "number",
+              "constraints": { "min": 3, "max": 37, "stepping": 1 }
+            }
+          }
+        }
+      },
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.operating.programs.reduced",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": {
+        "active": { "type": "boolean", "value": false },
+        "temperature": { "type": "number", "value": 16 }
+      },
+      "commands": {
+        "setTemperature": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.circuits.0.operating.programs.reduced/commands/setTemperature",
+          "name": "setTemperature",
+          "isExecutable": true,
+          "params": {
+            "targetTemperature": {
+              "required": true,
+              "type": "number",
+              "constraints": { "min": 3, "max": 37, "stepping": 1 }
+            }
+          }
+        }
+      },
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.operating.programs.standby",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": { "active": { "type": "boolean", "value": true } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.circuits.0.sensors",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": {},
+      "commands": {},
+      "components": ["temperature"]
+    },
+    {
+      "feature": "heating.circuits.1.sensors",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": {},
+      "commands": {},
+      "components": ["temperature"]
+    },
+    {
+      "feature": "heating.circuits.2.sensors",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": {},
+      "commands": {},
+      "components": ["temperature"]
+    },
+    {
+      "feature": "heating.circuits.0.sensors.temperature",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": {},
+      "commands": {},
+      "components": ["room", "supply"]
+    },
+    {
+      "feature": "heating.circuits.1.sensors.temperature",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": {},
+      "commands": {},
+      "components": ["room", "supply"]
+    },
+    {
+      "feature": "heating.circuits.2.sensors.temperature",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": {},
+      "commands": {},
+      "components": ["room", "supply"]
+    },
+    {
+      "feature": "heating.circuits.0.sensors.temperature.supply",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": {
+        "status": { "type": "string", "value": "connected" },
+        "value": { "type": "number", "value": 28 }
+      },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.configuration.multiFamilyHouse",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": { "active": { "type": "boolean", "value": false } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.controller.serial",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": {
+        "value": { "type": "string", "value": "###" }
+      },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.device",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": {},
+      "commands": {},
+      "components": ["time"]
+    },
+    {
+      "feature": "heating.device.time",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": {},
+      "commands": {},
+      "components": ["offset"]
+    },
+    {
+      "feature": "heating.device.time.offset",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": { "value": { "type": "number", "value": 118 } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.dhw",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": { "active": { "type": "boolean", "value": true } },
+      "commands": {},
+      "components": ["charging", "schedule", "sensors", "temperature"]
+    },
+    {
+      "feature": "heating.dhw.charging",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": { "active": { "type": "boolean", "value": false } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.dhw.pumps.circulation",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": { "status": { "type": "string", "value": "on" } },
+      "commands": {},
+      "components": ["schedule"]
+    },
+    {
+      "feature": "heating.dhw.pumps.circulation.schedule",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.779Z",
+      "properties": {
+        "active": { "type": "boolean", "value": true },
+        "entries": {
+          "type": "Schedule",
+          "value": {
+            "mon": [
+              { "start": "06:00", "end": "22:00", "mode": "on", "position": 0 }
+            ],
+            "tue": [
+              { "start": "06:00", "end": "22:00", "mode": "on", "position": 0 }
+            ],
+            "wed": [
+              { "start": "06:00", "end": "22:00", "mode": "on", "position": 0 }
+            ],
+            "thu": [
+              { "start": "06:00", "end": "22:00", "mode": "on", "position": 0 }
+            ],
+            "fri": [
+              { "start": "06:00", "end": "22:00", "mode": "on", "position": 0 }
+            ],
+            "sat": [
+              { "start": "06:00", "end": "22:00", "mode": "on", "position": 0 }
+            ],
+            "sun": [
+              { "start": "06:00", "end": "22:00", "mode": "on", "position": 0 }
+            ]
+          }
+        }
+      },
+      "commands": {
+        "setSchedule": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.dhw.pumps.circulation.schedule/commands/setSchedule",
+          "name": "setSchedule",
+          "isExecutable": true,
+          "params": {
+            "newSchedule": {
+              "required": true,
+              "type": "Schedule",
+              "constraints": {
+                "maxEntries": 4,
+                "resolution": 10,
+                "modes": ["on"],
+                "defaultMode": "off"
+              }
+            }
+          }
+        }
+      },
+      "components": []
+    },
+    {
+      "feature": "heating.dhw.pumps.primary",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.782Z",
+      "properties": { "status": { "type": "string", "value": "off" } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.dhw.schedule",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.782Z",
+      "properties": {
+        "active": { "type": "boolean", "value": true },
+        "entries": {
+          "type": "Schedule",
+          "value": {
+            "mon": [
+              { "start": "06:00", "end": "07:00", "mode": "on", "position": 0 },
+              { "start": "10:00", "end": "22:00", "mode": "on", "position": 1 }
+            ],
+            "tue": [
+              { "start": "06:00", "end": "07:00", "mode": "on", "position": 0 },
+              { "start": "10:00", "end": "22:00", "mode": "on", "position": 1 }
+            ],
+            "wed": [
+              { "start": "06:00", "end": "07:00", "mode": "on", "position": 0 },
+              { "start": "10:00", "end": "22:00", "mode": "on", "position": 1 }
+            ],
+            "thu": [
+              { "start": "06:00", "end": "07:00", "mode": "on", "position": 0 },
+              { "start": "10:00", "end": "22:00", "mode": "on", "position": 1 }
+            ],
+            "fri": [
+              { "start": "06:00", "end": "07:00", "mode": "on", "position": 0 },
+              { "start": "10:00", "end": "22:00", "mode": "on", "position": 1 }
+            ],
+            "sat": [
+              { "start": "06:00", "end": "07:00", "mode": "on", "position": 0 },
+              { "start": "10:00", "end": "22:00", "mode": "on", "position": 1 }
+            ],
+            "sun": [
+              { "start": "06:00", "end": "07:00", "mode": "on", "position": 0 },
+              { "start": "10:00", "end": "22:00", "mode": "on", "position": 1 }
+            ]
+          }
+        }
+      },
+      "commands": {
+        "setSchedule": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.dhw.schedule/commands/setSchedule",
+          "name": "setSchedule",
+          "isExecutable": true,
+          "params": {
+            "newSchedule": {
+              "required": true,
+              "type": "Schedule",
+              "constraints": {
+                "maxEntries": 4,
+                "resolution": 10,
+                "modes": ["on"],
+                "defaultMode": "off"
+              }
+            }
+          }
+        }
+      },
+      "components": []
+    },
+    {
+      "feature": "heating.dhw.sensors",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.782Z",
+      "properties": {},
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.dhw.sensors.temperature.hotWaterStorage",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.782Z",
+      "properties": {
+        "status": { "type": "string", "value": "connected" },
+        "value": { "type": "number", "value": 63.9 }
+      },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.dhw.sensors.temperature.outlet",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.782Z",
+      "properties": { "status": { "type": "string", "value": "error" } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.dhw.temperature",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.786Z",
+      "properties": { "value": { "type": "number", "value": 58 } },
+      "commands": {
+        "setTargetTemperature": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.dhw.temperature/commands/setTargetTemperature",
+          "name": "setTargetTemperature",
+          "isExecutable": true,
+          "params": {
+            "temperature": {
+              "required": true,
+              "type": "number",
+              "constraints": { "min": 10, "max": 60, "stepping": 1 }
+            }
+          }
+        }
+      },
+      "components": ["main"]
+    },
+    {
+      "feature": "heating.dhw.temperature.main",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.786Z",
+      "properties": { "value": { "type": "number", "value": 58 } },
+      "commands": {
+        "setTargetTemperature": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.dhw.temperature.main/commands/setTargetTemperature",
+          "name": "setTargetTemperature",
+          "isExecutable": true,
+          "params": {
+            "temperature": {
+              "required": true,
+              "type": "number",
+              "constraints": { "min": 10, "max": 60, "stepping": 1 }
+            }
+          }
+        }
+      },
+      "components": []
+    },
+    {
+      "feature": "heating.sensors",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.786Z",
+      "properties": {},
+      "commands": {},
+      "components": ["temperature"]
+    },
+    {
+      "feature": "heating.sensors.temperature",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.786Z",
+      "properties": {},
+      "commands": {},
+      "components": ["outside"]
+    },
+    {
+      "feature": "heating.sensors.temperature.outside",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.786Z",
+      "properties": {
+        "status": { "type": "string", "value": "connected" },
+        "value": { "type": "number", "value": 28.5 }
+      },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.operating",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.786Z",
+      "properties": {},
+      "commands": {},
+      "components": ["programs"]
+    },
+    {
+      "feature": "heating.operating.programs",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.786Z",
+      "properties": {},
+      "commands": {},
+      "components": ["holiday"]
+    },
+    {
+      "feature": "heating.operating.programs.holiday",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.786Z",
+      "properties": {
+        "active": { "type": "boolean", "value": false },
+        "start": { "type": "string", "value": "" },
+        "end": { "type": "string", "value": "" }
+      },
+      "commands": {
+        "changeEndDate": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.operating.programs.holiday/commands/changeEndDate",
+          "name": "changeEndDate",
+          "isExecutable": false,
+          "params": {
+            "end": { "required": true, "type": "string", "constraints": {} }
+          }
+        },
+        "schedule": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.operating.programs.holiday/commands/schedule",
+          "name": "schedule",
+          "isExecutable": true,
+          "params": {
+            "start": { "required": true, "type": "string", "constraints": {} },
+            "end": { "required": true, "type": "string", "constraints": {} }
+          }
+        },
+        "unschedule": {
+          "uri": "https://api.viessmann-platform.io/iot/v1/equipment/installations/###/gateways/###/devices/0/features/heating.operating.programs.holiday/commands/unschedule",
+          "name": "unschedule",
+          "isExecutable": true,
+          "params": {}
+        }
+      },
+      "components": []
+    },
+    {
+      "feature": "heating.solar",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.790Z",
+      "properties": { "active": { "type": "boolean", "value": true } },
+      "commands": {},
+      "components": ["sensors"]
+    },
+    {
+      "feature": "heating.solar.power.production",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.790Z",
+      "properties": {
+        "day": {
+          "type": "array",
+          "value": [
+            16.604, 19.78, 19.323, 20.592, 19.444, 14.517, 17.929, 20.534
+          ]
+        },
+        "week": { "type": "array", "value": [] },
+        "month": { "type": "array", "value": [] },
+        "year": { "type": "array", "value": [] },
+        "unit": { "type": "string", "value": "kilowattHour" }
+      },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.solar.pumps.circuit",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.790Z",
+      "properties": { "status": { "type": "string", "value": "on" } },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.solar.sensors",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.790Z",
+      "properties": {},
+      "commands": {},
+      "components": ["temperature"]
+    },
+    {
+      "feature": "heating.solar.sensors.temperature",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.790Z",
+      "properties": {},
+      "commands": {},
+      "components": ["dhw", "collector"]
+    },
+    {
+      "feature": "heating.solar.sensors.temperature.dhw",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.790Z",
+      "properties": {
+        "value": { "type": "number", "value": 63.5 },
+        "status": { "type": "string", "value": "connected" }
+      },
+      "commands": {},
+      "components": []
+    },
+    {
+      "feature": "heating.solar.sensors.temperature.collector",
+      "deviceId": "0",
+      "timestamp": "2021-08-12T14:41:31.790Z",
+      "properties": {
+        "value": { "type": "number", "value": 72.3 },
+        "status": { "type": "string", "value": "connected" }
+      },
+      "commands": {},
+      "components": []
+    }
+  ]
+}
diff --git a/tests/test_Solar.py b/tests/test_Solar.py
new file mode 100644
index 0000000..f7a71f2
--- /dev/null
+++ b/tests/test_Solar.py
@@ -0,0 +1,16 @@
+from PyViCare.PyViCareDevice import Device
+import unittest
+from tests.ViCareServiceMock import ViCareServiceMock
+
+
+class SolarTest(unittest.TestCase):
+    def setUp(self):
+        self.service = ViCareServiceMock('response/Solar.json')
+        self.device = Device(self.service)
+
+    def test_getSolarStorageTemperature(self):
+        self.assertEqual(self.device.getSolarStorageTemperature(), 63.5)
+
+    def test_getSolarPowerProduction(self):
+        self.assertEqual(
+            self.device.getSolarPowerProduction(), [16.604, 19.78, 19.323, 20.592, 19.444, 14.517, 17.929, 20.534])