Shelly2.5 Status per JavaScript auslesen und auf HTML Seite ausgeben

  • Hi,

    ich hätte 2 Fragen zu meinem Projekt.

    1. ich will per HTML und JavaScript den Status einen Shelly2.5 auslesen und bestimmte Werte + Value weiterverarbeiten.

    Ich bekomme aus Ausgabe einen String zurück, der alle Werte beinhaltet, jedoch möchte ich hier nur "temperature" und den dazugehörigen Value haben.

    {"wifi_sta":{"connected":true,"ssid":"PowerWLAN","ip":"192.168.1.50","rssi":-48},"cloud":{"enabled":false,"connected":false},"mqtt":{"connected":false},"time":"15:05","unixtime":1633266322,"serial":7,"has_update":false,"mac":"8CAAB5EAE68F","cfg_changed_cnt":2,"actions_stats":{"skipped":0},"relays":[{"ison":true,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"overpower":false,"source":"http"}],"meters":[{"power":0.00,"overpower":0.00,"is_valid":true,"timestamp":1633273522,"counters":[0.000, 0.000, 0.000],"total":0}],"temperature":36.34,"overtemperature":false,"tmp":{"tC":36.34,"tF":97.41, "is_valid":true},"update":{"status":"idle","has_update":false,"new_version":"20210909-145347/v1.11.4-DNSfix-ge6b2f6d","old_version":"20210909-145347/v1.11.4-DNSfix-ge6b2f6d"},"ram_total":51264,"ram_free":39664,"fs_size":233681,"fs_free":163903,"uptime":3586}2. wie bekomme ich die weiteren Werte für den "/roller" abgefragt, wie sie in der API stehen?[tt]GET /roller/0

    2. Wie bekomme ich die "/roller" Werte ausgelesen, wie sie in der API stehen?

    { "state": "stop", "power": 0, "is_valid": false, "safety_switch": false, "overtemperature": false, "stop_reason": "normal", "last_direction": "stop", "current_pos": 90, "calibrating": false, "positioning": true}


    THX

    Timee

    7x Shelly2.5 im Shuttermodus, 3x PlugS, 1x Dimmer2, 2x Button, 1x Button1

    Raspberry Pi 4 4GB mit ioBroker,

    sowie eigenem Script (HTML + CSS + JS)

  • eigentlich ganz easy, statt dem JSON.parse() eine Funktion zu verpassen einfach nur den JSON-String mittels Parse in ein Objekt verwandeln, dann kannst du auf einzelne Werte des Objekts zugreifen:

    JavaScript
    //bis hier kennst du es ja
     var jsonString = xhttp.responseText;
    
    // den JSON-String in ein Objekt verwandeln (z.B. in das Objekt namens "obj" )
     var obj = JSON.parse(jsonString);
    
    // den Inhalt von obj.temperature in das Feld mit der ID DebugText schreiben 
     document.getElementById("DebugText").innerHTML = obj.temperature;

    Beim Shutter ist es nahezu identisch,

    aber statt obj.temperature wäre es dann obj.current_pos für die Position..

    >100 Shellies, darunter so gut wie alles was der Hersteller produziert hat. ;)
    :!: ich beantworte grundsätzlich keine Fragen per persönlicher Nachricht:!:

  • eigentlich ganz easy, statt dem JSON.parse() eine Funktion zu verpassen einfach nur den JSON-String mittels Parse in ein Objekt verwandeln, dann kannst du auf einzelne Werte des Objekts zugreifen:

    JavaScript
    //bis hier kennst du es ja
     var jsonString = xhttp.responseText;
    
    // den JSON-String in ein Objekt verwandeln (z.B. in das Objekt namens "obj" )
     var obj = JSON.parse(jsonString);
    
    // den Inhalt von obj.temperature in das Feld mit der ID DebugText schreiben 
     document.getElementById("DebugText").innerHTML = obj.temperature;

    Beim Shutter ist es nahezu identisch,

    aber statt obj.temperature wäre es dann obj.current_pos für die Position..

    Danke für die schnelle Hilfe, wie komme ich an die Shutterdaten, den die werden beim Status ja nicht mitgeliefert?

    7x Shelly2.5 im Shuttermodus, 3x PlugS, 1x Dimmer2, 2x Button, 1x Button1

    Raspberry Pi 4 4GB mit ioBroker,

    sowie eigenem Script (HTML + CSS + JS)

  • Danke für die schnelle Hilfe, wie komme ich an die Shutterdaten, den die werden beim Status ja nicht mitgeliefert?

    http://<ip-vom-shelly>/roller/0 gibt dir den aktuellen Status des Rollladen zurück..

    >100 Shellies, darunter so gut wie alles was der Hersteller produziert hat. ;)
    :!: ich beantworte grundsätzlich keine Fragen per persönlicher Nachricht:!:

  • oder alternativ ebenfalls über status.

    dann wäre der Wert vom JSON

    obj.rollers.0.current_pos

    >100 Shellies, darunter so gut wie alles was der Hersteller produziert hat. ;)
    :!: ich beantworte grundsätzlich keine Fragen per persönlicher Nachricht:!:

  • Dieses Thema enthält 2 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.