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



  • @Xanaden:

    Die komplette ausgabe leutet: `
    Der http://jsonviewer.stack.hu/ zeigt Dir die Struktur.

    .
    493_json_viewer.jpg



  • 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?

Log in to reply
 

Suggested Topics

  • 5
  • 7
  • 2
  • 3
  • 24
  • 7
  • 3
  • 3

722
Online

21.1k
Users

25.6k
Topics

310.1k
Posts