HomeWizard

Al heel wat jaren heb ik thuis een homewizard draaien. Er wordt heel veel bestuurd (somfy, klikaanklikuit etc) en sinds het begin van Heatlink zit onze CV installatie ook op de HomeWizard aangesloten. Echt helemaal top.

Alleen nu verliezen we al een paar maanden steeds water druk en moet ik nu bijna elke week bijvullen. Nergens bij de leidingen en radiatoren is er lekkage te zien. Het expansie vat klinkt nog goed (deels hol). Zou er iets met de CV installatie mis zijn. Op internet het ik wel wat artikelen gevonden over onze installatie dat deze lekkage bij de brander kan krijgen en daardoor druk verliest. Maar dan moet ik ook nog aantonen dat er ook echt druk verlies is. Tja... hoe leg je dat geautomatiseerd (ja... ik automatiseer het liefst alles) vast.

HomeWizard status is uit te lezen via een html pagina. Probeer maar eens: http://<ipadres van jouw HomeWizard>/<HomeWizard Password>/get-sensors

Als je alles goed hebt ingevuld, dan krijg je een html respons in het JSON formaat. Hoe krijg je dat in Excel? Ik heb daar powershell voor misbruikt.

Open de Powershell ISE op je computer en plak daarin de onderstaande code (alles wat onder de # lijn staat). Je moet een paar dingen aanpassen zoals het HomeWizard_IP adres en HomeWizard_Password. Vervolgens moet je het script opslaan op jouw computer. En kan je het uitvoeren. Als alles goed uit te lezen is uit de homewizard, dan komen de waarden op het scherm en wordt er een CSV file opgebouwd die je meteen met Excel kan openen. Vervolgens kan je met de grafieken vna Excel gaan stoeien om een mooi overzicht te maken.

Natuurlijk kan je het script ook aanpassen dat er andere zaken uit de HomeWizard gelogd worden.

#################################################################################

<#

This script probes the HomeWizard and stores some results in a CSV file

2016-03-10 V0.1 : A. Bekkema. Initial code

#>

#### Definitions

$HomeWizard_IP = 'xxx.xxx.xxx.xxx'

$HomeWizard_Password = 'xxxxxxxx'

$ScriptDir = Split-Path $MyInvocation.MyCommand.Path –Parent

$CSV_Export_File = "$ScriptDir\Probe_HomeWizard_Results.csv"

$Timer = 60 # 0 = no timer. Time in seconds

Function Probe_HomeWizard

{

#### Probe the HomeWizard

$HomeWizard_JSON_response = Invoke-WebRequest -Uri "http://$HomeWizard_IP/$HomeWizard_Password/get-sensors"

$HomeWizard_response = ConvertFrom-Json -InputObject $HomeWizard_JSON_response.content

#### Creating the output object (to export to CSV)

$Result = New-Object system.object

$Result | Add-Member -type Noteproperty –Name "Timestamp" –Value "$(Get-Date)"

ForEach ($HW_object in $HomeWizard_Response.response.thermometers) # Export all Thermometers

{

$Result | Add-Member -type Noteproperty –Name "Thermometer $($HW_object.Name) - Temp" –Value $HW_object.te

$Result | Add-Member -type Noteproperty –Name "Thermometer $($HW_object.Name) - Hue" –Value $HW_object.hu

}

ForEach ($HW_object in $HomeWizard_Response.response.heatlinks) # Export all heatlinks

{

$Result | Add-Member -type Noteproperty –Name "Heatlink $($HW_object.Name) - Pump" –Value ($HW_object.pump -eq 'on')

$Result | Add-Member -type Noteproperty –Name "Heatlink $($HW_object.Name) - Heating" –Value ($HW_object.heating -eq 'on')

$Result | Add-Member -type Noteproperty –Name "Heatlink $($HW_object.Name) - Hot water" –Value ($HW_object.dhw -eq 'on')

$Result | Add-Member -type Noteproperty –Name "Heatlink $($HW_object.Name) - Room temp" –Value ($HW_object.rte)

$Result | Add-Member -type Noteproperty –Name "Heatlink $($HW_object.Name) - Room setting" –Value ($HW_object.rsp)

$Result | Add-Member -type Noteproperty –Name "Heatlink $($HW_object.Name) - Water presure" –Value ($HW_object.wp)

$Result | Add-Member -type Noteproperty –Name "Heatlink $($HW_object.Name) - Water temp" –Value ($HW_object.wte)

}

Write-Output $Result

#### Export to CSV (append mode)

$Result | Export-Csv -Path $CSV_Export_File -Append -NoTypeInformation -Delimiter ';'

}

#### Main loop

If ($Timer -eq 0) # No Timer

{

Probe_HomeWizard

}

Else

{

While($true)

{

Probe_HomeWizard

Start-Sleep -Seconds $Timer

}

}

#################################################################################