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! Zitieren
testperson 1.758 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 Zitieren
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! Zitieren
daabm 1.386 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 Zitieren
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.