Hi,
ich habe lange eine einfache Möglichkeit gesucht, um Werte von dem Gira Homeserver in eine Microsoft SQL Datenbank Tabelle zu speichern.
Es gibt zwar viele "Drittanbieter" Tools die KNX Werte in SQL speichern können, ich möchte Euch aber die einfachste Lösung mal präsentieren die ich nun seit Monaten erfolgreich nutze:
Powershell Skript auf dem MS SQL Server:
Eventuell ist dies für den einen oder anderen auch nutzbar um diverse Werte in eine Microsoft SQL Datenbank abzulegen.
Das Skript entweder als geplanter Task mit Powershell7 ausführen.
Alternativ manuell oder mit einem helper Skript falls man nur was zeitweise protokollieren möchte.
ich habe lange eine einfache Möglichkeit gesucht, um Werte von dem Gira Homeserver in eine Microsoft SQL Datenbank Tabelle zu speichern.
Es gibt zwar viele "Drittanbieter" Tools die KNX Werte in SQL speichern können, ich möchte Euch aber die einfachste Lösung mal präsentieren die ich nun seit Monaten erfolgreich nutze:
Powershell Skript auf dem MS SQL Server:
Code:
# SQL Modul für Powershell laden Import-Module SqlServer # Werte von Homeserver über Endpoints abrufen $Wert1 = Invoke-WebRequest "https://192.168.x.x/endpoints/call?key=CO@wert1&method=get&user=endpointwiteruser&pw=pw" -SkipCertificateCheck | Select-Object content $Wert2 = Invoke-WebRequest "https://192.168.x.x/endpoints/call?key=CO@wert2&method=get&user=endpointwiteruser&pw=pw" -SkipCertificateCheck | Select-Object content #Werte aus der Webabfrage extrahieren und in andere Variable speichern $Wert1 -match '{"value": (?<content>.*)}}}' $Wert1value = $matches['content'] $Wert2-match '{"value": (?<content>.*)}}}' $Wert2value = $matches['content'] # Wert zur Kontrolle ausgeben (kann entfernt werden) $Wert1value $Wert2value #Wert(e) in SQL Datenbank, Tabelle muss schon vorhanden sein mit den Spalten wie unten angegeben ich mach immer noch ne Spalte DatumZeit datetime default getnow() rein Invoke-Sqlcmd -Query "USE [Datenbankname] INSERT INTO [dbo].[Tabellenname] ([Wert1],[Wert2]) VALUES ($Wert1value,$Wert2value)" -ConnectionString "Data Source=Servername;Initial Catalog=Datenbankname;Integrated Security=True;ApplicationIntent=ReadOnly"
Das Skript entweder als geplanter Task mit Powershell7 ausführen.
Alternativ manuell oder mit einem helper Skript falls man nur was zeitweise protokollieren möchte.
Kommentar