franzjosef 1 Geschrieben 15. Dezember 2019 Melden Geschrieben 15. Dezember 2019 Hallo zusammen, wie ich schonmal in einem anderen Fall geschrieben habe bin ich leider kein Skript-Profi. Ich habe hier einen PV-Wechselrichter von Fronius deren Daten ich per JSON auslesen kann. Der direkte HTTP Aufruf via http://192.168.178.60/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceID=1&DataCollection=CommonInverterData spuckt mit nachfolgenden Content aus: { "Body" : { "Data" : { "DAY_ENERGY" : { "Unit" : "Wh", "Value" : 1138.5 }, "DeviceStatus" : { "ErrorCode" : 0, "LEDColor" : 2, "LEDState" : 0, "MgmtTimerRemainingTime" : -1, "StateToReset" : false, "StatusCode" : 7 }, "FAC" : { "Unit" : "Hz", "Value" : 49.979999999999997 }, "IAC" : { "Unit" : "A", "Value" : 2.98 }, "IDC" : { "Unit" : "A", "Value" : 1.49 }, "PAC" : { "Unit" : "W", "Value" : 674 }, "TOTAL_ENERGY" : { "Unit" : "Wh", "Value" : 154984 }, "UAC" : { "Unit" : "V", "Value" : 225.5 }, "UDC" : { "Unit" : "V", "Value" : 491.5 }, "YEAR_ENERGY" : { "Unit" : "Wh", "Value" : 154984.29999999999 } } }, "Head" : { "RequestArguments" : { "DataCollection" : "CommonInverterData", "DeviceClass" : "Inverter", "DeviceId" : "1", "Scope" : "Device" }, "Status" : { "Code" : 0, "Reason" : "", "UserMessage" : "" }, "Timestamp" : "2019-12-15T12:03:57+01:00" } } Über das zugehörige Handbuch habe ich keine Lösung gefunden einen Einzelwert direkt abzufragen. Interessant wäre diese Ausgabe zu reduzieren bzw. benötige ich lediglich den Wert von "PAC", also in diesem Fall 674 was der aktuellen Leistung entspricht. Die Einheit benötige ich auch nicht. Dieser Wert müsste dann in die Windows Registry geschrieben werden. Das Ganze würde ich in Zeitabständen von 60 Sekunden laufen lassen. Vielen Dank für Tipps und Ratschläge!
testperson 1.866 Geschrieben 15. Dezember 2019 Melden Geschrieben 15. Dezember 2019 Hi, dann hol den Content doch einfach mal per Invoke-WebRequest und wandel das Ergibnis von JSON (ConvertFrom-Json) um: $jContent = (Invoke-WebRequest http://192.168.178.60/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceID=1&DataCollection=CommonInverterData).Content $Content = ConvertFrom-Json $jContent Gruß Jan
franzjosef 1 Geschrieben 15. Dezember 2019 Autor Melden Geschrieben 15. Dezember 2019 $json=Invoke-WebRequest "http://192.168.178.60/solar_api/v1/GetInverterRealtimeData.cgi?Scope=Device&DeviceID=1&DataCollection=CommonInverterData" $aktuelleleistung=$json|ConvertFrom-Json |select " Body" -ExpandProperty "Body" | select "Data" -ExpandProperty "Data" | select "PAC" -ExpandProperty "PAC" | select "Value" -ExpandProperty "Value" Set-ItemProperty -Path “HKCU:\Software\FinalWire\AIDA64\ImportValues” DW1 -Value $aktuelleleistung –Force exit Mit diesem Skript ist mir gelungen wonach ich gesucht habt. Vielen Dank!
daabm 1.434 Geschrieben 16. Dezember 2019 Melden Geschrieben 16. Dezember 2019 Nur so als Anregung: Powershell ist vollständig objektorientiert, das geht auch so: $aktuelleleistung = ( ConvertFrom-Json -InputObject $json ).Body.Data.PAC.Value Damit ersparst Dir die vielen Selects
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden