Tasmota Url um Sensorwert zu lesen!

  • Hallo Gemeinde, bin neu hier und habe direkt an anliegen. ich benötige den kWh wert von meiner Messsteckdose (ShellyPlugS) ist mit Tasmota 10 geflasht. ich bekomme zwar per <ip/cm?cmnd=status0> den kompletten Status dieser Steckdose nur bräuchte ich die url nur für den Wert "Total" ist das irgendwie möglich?

    danke euch! grüße Axel

  • Hi.

    Direkt geht das nicht. Müsste aber gehen wenn man den Wert in ne Variable einliest und die abfragt:

    In der Konsole folgendes eingeben:

    rule1 on tele-ENERGY#Total do var1 %value% endon

    Die Rule aktivieren:

    rule1 1

    Jetzt sollte der Wert abfragbar sein mit:

    <ip/cm?cmnd=var1>

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Etwas übersichtlicher wird es z. B. so:

    http://192.168.178.67/cm?cmnd=status%2010

    Das bringt schon einmal dieses Ergebnis:

    aber der Wert allein ist immer noch nicht isoliert.

    Oder unter Linux mit um den Wert von Today zu erhalten

    curl -s "http://192.168.178.XXX/cm?cmnd=status%2010" | jq .StatusSNS.ENERGY.Today

    curl und jq gibt es beides mittlerweile auch für Windows.

  • da bekomme ich diesen Fehler im Terminal:

    curl -s "http://192.168.178.44/cm?cmnd=status%2010" | jq .StatusSNS.ENERGY.Today

    -bash: jq: Kommando nicht gefunden.

    (23) Failed writing body

  • bekomme ich nur das angezeigt:

    Code
    {"Var1":">"}
  • Da gibt es innerhalb von JavaScript bestimmt elegantere Lösungen, denn wenn du den Http Request absetzt, bekommst als Antwort einen JSON-Ausdruck. Es gibt bestimmt ausprogrammierte JSON-Parser. Die gibt es eigentlich für jede Hochsprache.

  • Da gibt es innerhalb von JavaScript bestimmt elegantere Lösungen, denn wenn du den Http Request absetzt, bekommst als Antwort einen JSON-Ausdruck. Es gibt bestimmt ausprogrammierte JSON-Parser. Die gibt es eigentlich für jede Hochsprache.

    ich suche schon seid tagen etwas passendes aber ich werde nicht fündig so richtig leider!

  • Ich denke JSON.parse() ist dein Freund...

    Hier sind ein paar schöne Beispiele:

    How To Parse JSON with JSON.parse() JavaScript Function? – POFTUT

    Und zu HTTP-Request aus Javascript ist dies vielleicht hilfreich. Musst ein bisschen nach unten scrollen. Am Anfang het der Helfer wohl einen kleinen Fehler im Skript gehabt:

    [gelöst]Wie sende ich aus JavaScript einen HTTP Befehl
    @amg_666 sagte in Wie sende ich aus JavaScript einen HTTP Befehl:…
    forum.iobroker.net

    Sorry, mehr kann ich nicht helfen, bin Basher und Pythonier ;)

  • ich danke dir werd mich mal da durch arbeiten!!!

  • Moin

    bekomme ich nur das angezeigt:



    Code {"Var1":">"}

    Das muss auf Dein Konsolen JSON angepasset werden. Da müsstest den schon posten.


    Aber parsen müsstest du dann trotzdem noch und da sind wir wieder bei dem was JoergZ geschrieben hat.

    Geht aber recht simple mit JSON.parse() in Javascript:

    JSON.parse()
    W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript,…
    www.w3schools.com

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Ein bisschen dich einarbeiten, musst du schon. Wir helfen gerne, aber verstehen es als Hilfe zur Selbsthilfe und - wie gesagt - ich kann eigentlich kein Javascript (aber die Programmierprinzipien sind zwischen manchen Sprachen doch sehr ähnlich.). Versuche es noch mal mit dieser Anleitung und vergleiche dabei die Namen aus der ganz oben stehenden ersten Zeile mit den Bezeichnungen, die später in der Funktion auftauchen. Dann kannst du verstehen, wie aus einem langen mit unterschiedlichen Klammern verschachteltem Ausdruck plötzlich ein in seine Einzelteile zerlegtes Objekt wird, bei dem man jedes einzelne Teil weiterverarbeiten. kann :

    JSON Parsen
    Im folgenden Script zeige ich Dir, wie ich eine JSON-Zeichenfolge parse. Folgende Zeichenfolge dient hier als Beispiel: {"name":"SensorOutdoor1",…
    www.smarthome-tricks.de

    Spannend ist der Teil unter Try. Dort kannst du das Prinzip erkennen:

    1. Aus dem input (erste Zeile ganz oben) zunächst ein Javascript-JSON Objekt machen objekt = JSON.parse(input) (in objekt steckt nun der Inhalt aus input aber in einer anderen Form, nämlich als Array)
    2. Das Objekt ist nun in seinen Teilelementen nutzbar: objekt.name hat den Inhalt "SensorOutdoor1", objekt.temp hat den Inhalt 4.5

    Ein bisschen tricky wird es an der Stelle, wo der Inhalt eines objekt.unterobjekt wiederum nicht ein einfacher String oder eine Zahl ist, sondern selbst wieder ein (assoziatives) Array, auf das man man dann mit objekt.unterobjekt.name oder objekt.unterobjekt[1] usw. zugreifen musst.

    Vielleicht hilft dir mein Beitrag aus dem Wiki, wo ich am Beispiel von jq versuche zu erklären, wie ein JSON-Ausdruck zerlegt wird. jg ist im Prinzip dasselbe wie JSON.parse() nur als eigenes Programm.

  • Ein bisschen dich einarbeiten, musst du schon. Wir helfen gerne, aber verstehen es als Hilfe zur Selbsthilfe und - wie gesagt - ich kann eigentlich kein Javascript (aber die Programmierprinzipien sind zwischen manchen Sprachen doch sehr ähnlich.). Versuche es noch mal mit dieser Anleitung und vergleiche dabei die Namen aus der ganz oben stehenden ersten Zeile mit den Bezeichnungen, die später in der Funktion auftauchen. Dann kannst du verstehen, wie aus einem langen mit unterschiedlichen Klammern verschachteltem Ausdruck plötzlich ein in seine Einzelteile zerlegtes Objekt wird, bei dem man jedes einzelne Teil weiterverarbeiten. kann :

    https://www.smarthome-tricks.de/iobroker-scrip…ng/json-parsen/

    Spannend ist der Teil unter Try. Dort kannst du das Prinzip erkennen:

    1. Aus dem input (erste Zeile ganz oben) zunächst ein Javascript-JSON Objekt machen objekt = JSON.parse(input) (in objekt steckt nun der Inhalt aus input aber in einer anderen Form, nämlich als Array)
    2. Das Objekt ist nun in seinen Teilelementen nutzbar: objekt.name hat den Inhalt "SensorOutdoor1", objekt.temp hat den Inhalt 4.5

    Ein bisschen tricky wird es an der Stelle, wo der Inhalt eines objekt.unterobjekt wiederum nicht ein einfacher String oder eine Zahl ist, sondern selbst wieder ein (assoziatives) Array, auf das man man dann mit objekt.unterobjekt.name oder objekt.unterobjekt[1] usw. zugreifen musst.

    Vielleicht hilft dir mein Beitrag aus dem Wiki, wo ich am Beispiel von jq versuche zu erklären, wie ein JSON-Ausdruck zerlegt wird. jg ist im Prinzip dasselbe wie JSON.parse() nur als eigenes Programm.

    ja natürlich, so sollte das auch nicht rüber kommen. sitze nur schon tage an dem bissl Mist. danke euch natürlich für eure Hilfe, werde mir die Sachen mit dem parse nochmal genauer anschauen!!!

    danke euch grüße

  • fischi87

    bitte keine Screenshots. Wenn dann bitte den log per Copy & Paste als Text hier rein damit man den auch vernünftig scrollen kann.

    Und auch nicht den status sondern den teleperiod output

    benzino77 Tasmocompiler

    Gitpod Master Release

    Gitpod Development Release

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • ruediger Geht natürlich auch. Falls du sowieso mit MQTT arbeitest, solltest du dir paho-mqtt mal anschauen. Da hast du gleich die Möglichkeit am MQTT-Broker permanent zu lauschen und Ereignisse, sobald sie eintreffen, weiterzuverarbeiten ;)