WCF Dataservice
WCF steht für Windows Communication Foundation. Mit WCF können Daten als asynchrone Nachrichten von einem Dienstendpunkt an einen anderen gesendet werden. Das visual energy System stellt mit dem ExcelWcfService dafür einen definierten WCF Dienst bereit, welcher Anfragen beantwortet. Damit kann eine Software oder eine Script auf einfache Weise Energiedaten aus dem visual energy System abfragen. In der visual energy Welt nutzt beispielsweise das Excel Add In den WCF Service um Daten abzurufen. Daher stammt auch der Name des Dienstes.
Die URL des Endpunktes wird wie folgt gebildet: [IP oder Hostname]:[Port]/api/Services/ExcelWcfService.svc Die Port-Angabe entspricht hierbei dem Port, der bei der Installation für das Busmasterweb festgelegt wurde. Weiterhin wird unter .../api/Services/ExcelWcfService.svc/json ein Dienst angeboten, der den Datenabruf im JSON - Format ermöglicht.
Der Zugriff auf Energiedaten mittels WCF Service erfolgt mit einem Token, der einem eindeutigen Benutzer zugeordnet ist. Es empfiehlt sich einen eigenen WCF Benutzer dafür anzulegen. Achten Sie darauf, dass dieser Benutzer ausreichend Rechte, für die abzurufenden Objekte besitzt.
Code-Beispiele
Im nachfolgenden Beispiel soll mit einem Powershell-Script im JSON-Format alle Projekte abgerufen werden, für die der Benutzer mit dem angegebenen Token berechtigt ist.cls
$url = "https://192.168.192.5:82/api/Services/ExcelWCFService.svc/json/"
$token = "f81c3a6ac3c24b348e8fbecb3189f6c1"
$postParams = @{token=$token} | ConvertTo-Json
$r = Invoke-WebRequest -Uri ($url + 'GetProjectInfos' ) -Method POST -Body $postParams -ContentType "application/json"
$projects = $r.Content | ConvertFrom-Json
write-host "Gefundene Projekte mit Berechtigungen:"
write-host "--------------------------------------"
foreach ($project in $projects.d)
{
write-host "$($project.Name), $($project.Id)"
}
Dieses Beispiel listet die Standorte eines Projektes auf:
cls
$url = "https://ve4.kbr.de/ve4web/Services/ExcelWCFService.svc/json/"
$token = "f81c3a6ac3c24b348e8fbecb3189f6c1"
$projectId="2022e8ba-9180-4b59-b6c3-257aa6361e75"
$postParams = @{token=$token;projectId=$projectId} | ConvertTo-Json
$r = Invoke-WebRequest -Uri ($url + 'GetLocationInfos' ) -Method POST -Body $postParams -ContentType "application/json"
$locations = $r.Content | ConvertFrom-Json
write-host ""
write-host "Gefundene Standorte im Projekt mit Id:" + $projectId
write-host "--------------------------------------"
foreach ($location in $locations.d)
{
write-host "$($location.Name)"
}