NEWS
Http Request / JSON
-
Hallo
Ich bin ganz neu in Iobroker und besitze leider keine großen programmier skills deshalb bitte ich vorab schon mal um entschuldigen
Ich möchte Daten wie z.b. timesleft von meinem 3d Drucker Auslesen (er hat kein Octoprint).
Ich kann den Status meines 3D-Drucker mit http://192.168.178.32/rr_status?type=3 Auslesen dort bekomme ich dann folgendes angezeigt:
":{"current":0,"active":0},"currentLayer":174,"currentLayerTime":8.0,"extrRaw":[21990.1,0.0],"fractionPrinted":91.6,"firstLayerDuration":1860.6,"firstLayerHeight":0.20,"printDuration":17563.9,"warmUpDuration":203.0,"timesLeft":{"file":3886.8,"filament":2347.4,"layer":9190.3}}
Wie kann ich den daten wie fractionPrinted und oder timesLeft auslesen so das ich sie nachher im Vis anzeigen kann.?
In Fhem ging das relativ simpel für Iobroker finde ich leider keine Anleitung dafür.
Für kurze hilfe wäre ich sehr dankbar.
-
Suche mal im Forum nach request und JSON.parse. Es gibt genügend Beispiele.
@Xanaden:":{"current":0,"active":0},"currentLayer":174,"currentLayerTime":8.0,"extrRaw":[21990.1,0.0],"fractionPrinted":91.6,"firstLayerDuration":1860.6,"firstLayerHeight":0.20,"printDuration":17563.9,"warmUpDuration":203.0,"timesLeft":{"file":3886.8,"filament":2347.4,"layer":9190.3}} `
Hier fehlt etwas am Anfang. -
Hallo
Ich habe nur die letzte zeile raus kopiert. Die komplette ausgabe leutet:
{"status":"P","coords":{"axesHomed":[1,1,1],"xyz":[84.889,279.021,0.150],"machine":[111.890,293.826,0.100],"extr":[65.2,0.0]},"currentTool":0,"params":{"atxPower":0,"fanPercent":[0.00,100.00,100.00,0.00,100.00,100.00,0.00,0.00,0.00],"speedFactor":100.00,"extrFactors":[100.00,100.00],"babystep":0.000},"seq":172,"sensors":{"probeValue":0,"fanRPM":0},"temps":{"bed":{"current":80.2,"active":80.0,"state":2,"heater":0},"current":[80.2,224.0,2000.0,2000.0,2000.0,2000.0,2000.0,2000.0],"state":[2,2,0,0,0,0,0,0],"heads":{"current":[224.0,2000.0],"active":[225.0,0.0],"standby":[225.0,0.0],"state":[2,0]},"tools":{"active":[[225.0],[0.0]],"standby":[[225.0],[0.0]]},"extra":[{"name":"MCU","temp":35.2}]},"time":21252.0,"spindle":{"current":0,"active":0},"currentLayer":1,"currentLayerTime":0.0,"extrRaw":[65.7,0.0],"fractionPrinted":0.7,"firstLayerDuration":62.2,"firstLayerHeight":0.15,"printDuration":151.2,"warmUpDuration":89.1,"timesLeft":{"file":9343.6,"filament":0.0,"layer":0.0}}
Ich habe nur etwas gefunden wo ich mit node-red arbeiten soll jedoch lässt sich der Adapter nicht Installieren
-
Schau mal hier rein: viewtopic.php?t=10511
Gesendet von meinem m8 mit Tapatalk
-
-
Okay hab nun die halbe nacht versucht und andere threads gelesen.
wenn ich das nun so versuche wie es in dem oben gelinkten Post verstehe müsste das ja ca so aussehen:
createState('javascript.1.3dDrucker', ""); function HoleTemp3D(){ var url = 'http://192.168.178.32/rr_status?type=3'; request(url, function (err, state, body){ if (body) { log('Request - alles ok'); log(body); var timesLeft = body.timesLeft.file; log(timesLeft); setState("javascript.1.3dDrucker", timesLeft); } else { log('Request meldet Fehler: ' + err, 'error'); } }); } schedule("*/30 * * * * *" , function(){ HoleTemp3D(); });
oder?
als Log bekomme ich````
09:59:19.582 [info] javascript.0 Stop script script.js.Skript1
09:59:22.912 [info] javascript.0 Start javascript script.js.Skript1
09:59:22.912 [info] javascript.0 script.js.Skript1: registered 0 subscriptions and 2 schedules
09:59:31.016 [info] javascript.0 script.js.Skript1: Request - alles ok
09:59:31.068 [error] Caught by controller[0]: at Request._callback (script.js.Skript1:32:47)
09:59:31.070 [error] Caught by controller[1]: at Request._callback (script.js.Skript1:32:47)gibt es eine möglichkeit das in Blocky zu machen damit ich nachher (als leihe) das script nur laufen lassen kann wenn die Homematic Energie steckdose den wert XY anzeigt?