Jump to content
franzjosef

cURL Ausgabe mit Skript umformatieren und einzelnen Wert zurückgeben

Empfohlene Beiträge

Hallo zusammen,

 

bin nicht im Bereich des Skriptens tätig und suche daher Hilfe. Ich habe hier ein Solar-Log was mir über einen Curl Befehl die Werte ausspuckt, die per JSON bereitgestellt werden. Das Ganz sieht so aus:

curl -X POST -H "Content-Type: application/json" -d '{\"801\":{\"170\":null}}' 192.168.1.10/getjp >c:\export.txt

Als Ausgabe erhalte ich dann:

{"801":{"170":{"100":"13.02.19 15:18:30","101":15437,"102":15859,"103":233,"104":594,"105":165191,"106":44701,"107":920606,"108":1907054,"109":426813616,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":82095}}}

Dabei steht zum Beispiel die Variable "100" für Datum + Uhrzeit, die Variable "101" für die aktuelle Leistung usw. Die Ausgabe kann ich natürlich einfach und direkt als .txt, .csv oder .xml speichern. So weit so gut. Die ausgegebenen Werte möchte ich gerne in weiterverarbeiten und überwachen. Eine Möglichkeit ist das Ausgabe-Ergebnis umzuwandeln. Ein Skript was aus obigem Ergebnis Werte rauszieht und als weitere .bat speichert wäre hilfreich. Eine Batch die per echo den Wert und Bezeichnung ausspuckt würde schon reichen.

Das Ergebnis sollte so aussehen (der : ist in diesem Falle mein Trennzeichen bei der Auswertung, die 15437 lasse ich mal so stehen uns sollte natürlich also aktueller Wert der Variable übergeben werden, müsste in der Ausgabe bat allerdings numerisch stehen.)

echo 15437:Leistung in Watt

Ein Skript was mir aus der Ausgabedatei eine solche weitere .bat mit dem Ergenis erzeugt würde mein Problem bereits lösen. Grundsätzlich: Die Abfrage mit curl kann ich nicht weiter runterbrechen, muss also alle Werte abfragen. Man könnte den Befehl/das Skript aber auch so erweitern das letztlich direkt im ersten Skript bei der Curl Abfrage per echo zum Beispiel eben "15437:Leistung in Watt" ausgegegen wird und sich weitere .Batch-Dateien erspart bleiben. Eine Hilfe wäre auch das ganze mit Powershell zu machen, wobei es da kein Curl gibt sondern das Invoke-Restmethod zu benutzen. Das kenne ich leider gar nicht. Da das leider nicht mein Fachgebiet ist hoffe ich hier auf Unterstützung. Danke!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
$json='{"801":{"170":{"100":"13.02.19 15:18:30","101":15437,"102":15859,"103":233,"104":594,"105":165191,"106":44701,"107":920606,"108":1907054,"109":426813616,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":82095}}}'
$watt=$json|ConvertFrom-Json |select "801" -ExpandProperty "801" | select "170" -ExpandProperty "170" | select "101" -ExpandProperty "101"
Write-Host $watt":Leistung in Watt"

Den Webreqest überlasse ich dir.

  • Danke 1

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

Werbepartner:



×