Jump to content

cURL Ausgabe mit Skript umformatieren und einzelnen Wert zurückgeben


Direkt zur Lösung Gelöst von tesso,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

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!

Link zu diesem Kommentar
  • Beste Lösung
$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.

Link zu diesem Kommentar
  • 2 Wochen später...
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...