Tasmota per MQTT oder websend an thingspeak / ADC Wert verwenden

  • Hallo,

    ich komme bei folgenden Punkten nicht weiter und wäre über jeden Hinweis dankbar.

    Ist-Zustand:

    Hardware: NodeMCU

    Software: tasmota.bin 

    Ich würde jetzt gerne den ADC Wert an https://thingspeak.com/ senden.

    Das würde theoretisch per MQTT oder websend gehen.

    Leider scheint es mit MQTT ein Problem im Protokoll zu geben, so dass ich hier keine Anmeldung bei https://thingspeak.com/ hinbekommen habe.

    Über websend wäre es zwar möglich, ich weiß aber nicht, wie ich an den ADC Wert komme, um diesen für websend an die URL anzuhängen.

    Meine Fragen also:

    1. Hat schon einer eine MQTT Verbindung zwischen tasmota und https://thingspeak.com/ realisiert?

    2. Wie komme ich per websend an den ADC-Wert (Wird mir auf der tasmota Hauptseite natürlich angezeigt)?

    Viele Grüße

  • Nir auf die Schnelle. (Sitze gerade in einem Python online Lehrgang.) Vielleicht (!) heute abdend mehr, falls schon ein Feedback vorliegt:

    https://community.thingspeak.com/forum/thingspe…not-authorized/

    Besonders gleich die zweite Antwort.

    Und was genau meinst du mit ADC Wert? Ich kenne AC und DC und AC/DC aber noch bin ich ohner Erklärungsidee.

  • Hi,

    Das mit Thinkspeak hatte wir schon mal:

    tasmota mqtt an ThingSpeak ohne eigenen broker

    Da scheint es wohl mit der LWT Message von Tasmota Probleme zu geben.

    Senden kannst du den ADC value z.b. Minutenweise mit ner Rule, wie im Tasmota Rules Wiki beschrieben:

    Zitat

    This example uses Analog Range mode (trigger analog#range) which is a scaled output value (the raw analog value would be analog#a0). On ESP32 which supports multiple ADC inputs, the ADC index must be appended such as analog#range1 for ADC#1.

    Code
    Rule:
    ON analog#range>%var1% DO VAR1 %value% ENDON
    ON Time#Minute DO Backlog publish shed/tele/maxdb %var1%; var1 0 ENDON
    
    Rule 1 1

    Wobei anstelle von publish eben websend verwendet wird.

    Aber ich würde erst mal testen ob das mit dem Websend wirklich funktioniert. Im Link von dem FRED hat der User gemu2015 extra den Quellcode von Tasmota angepasst weil's da wohl eben auch Probleme gab.

    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

    Einmal editiert, zuletzt von HoerMirAuf (22. März 2021 um 14:27)

  • Vielen Dank schonmal für eure Antworten.

    Wenn es mit ThingSpeak nicht geht, schaue ich mich an der Stelle nach einer anderen Lösung um.

    Interessant wäre wie gesagt, wie ich den ADC-Wert verschickt bekomme.

    Nir auf die Schnelle. (Sitze gerade in einem Python online Lehrgang.) Vielleicht (!) heute abdend mehr, falls schon ein Feedback vorliegt:

    https://community.thingspeak.com/forum/thingspe…not-authorized/

    Besonders gleich die zweite Antwort.

    Und was genau meinst du mit ADC Wert? Ich kenne AC und DC und AC/DC aber noch bin ich ohner Erklärungsidee.

    An der MQTT Konfiguration kann ich in tasmota von außen ja leider nichts einstellen.

    Mit ADC-Wert meine ich den Analog-zu-Digitalwert, der ausgegeben wird, wenn man den Analog-Eingang des ESP verwendet.

    Hier ist dann ADC Input ausgewählt:

    Und so ist die Darstellung auf der Hauptseite:


    Danke, das minütliche senden habe ich schon hinbekommen.
    Wie genau speichert man den Wert von Analog0 in der Variable "var1"?

  • Sieht so aus:

    Der Wert wird automatisch nach dem Schlüsselwort SENSOR angezeigt. Wenn ich manuell SENSOR anfrage, kommt die zu sehende Command: Error Meldung.
    Bei STATE funktioniert es wie gewohnt.

  • Hi.

    werden wohl nur die Rohdaten angezeigt A0

    Wie genau speichert man den Wert von Analog0 in der Variable "var1"?

    Wie im Wiki beschrieben:

    Zitat

    (the raw analog value would be analog#a0).

    Dann muss die Rule lauten:

    Code
    ON analog#a0>%var1% DO VAR1 %value% ENDON
    ON Time#Minute DO Backlog websend [myserver.com] /<pfad> %var1%; var1 0 ENDON
    Rule 1 1

    Zur Erklärung:

    var1 ist im Ursprung "0".

    on analog#a0>%var1% do var1 %value% endon

    macht folgendes: Ist der Wert von analog#a0 größer var1 (ist ja 0) beschreibe var1 mit dem Wert von analog#a0

    Dieser wird dann alle Minute gesendet und die var1 wieder auf null gesetzt und das Ganze beginnt von vorne.

    EDIT:

    Man kann auch bei Änderung des analog Wertes senden anstatt zyklisch, wenn das nicht zu oft der Fall ist:

    on analog#a0!=%var1% do backlog websend [myserver.com] /<pfad> %value%; var1 %value% endon

    Wenn der Wert von analog#a0 ungleich var1 ist wird gesendet und var1 auf den Wert von analaog#a0 gesetzt. Ändert der sich erneut wird dieser wieder übertragen. Allerdings bei ständigen Änderungen nicht zu empfehlen.

    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

    3 Mal editiert, zuletzt von HoerMirAuf (23. März 2021 um 09:01)

  • Was bedeuten die Wert 3 oder 9

    JoergZ

    Das ist der jeweilge value von analog#a0 ;)

    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

  • Vielen Dank für die guten Hinweise, es klappt jetzt.
    Allerdings schicke ich die Werte aktuell an einen eigenen Server, nicht an Thingspeak, dass wird vermutlich wegen HTTPS auch nicht klappen.

    Diese beiden Rules habe ich nun erstellt.

    Code
    Rule1 ON analog#a0 DO Var1 %value% ENDON
    
    Rule2 ON Time#Minute DO WebSend [192.168.1.103:6832] /Test %var1%; var1 0 ENDON

    :)

  • Schon klar, ich wollte wissen, was sie repräsentieren Volt, Meter, Celsius, Kilogramm... Ist aber nicht weiter wichtig.

    Ich möchte damit die Batteriespannung von einem Fahrzeug überwachen. Repräsentiert also eine Spannung in Volt.

  • Diese beiden Rules habe ich nun erstellt.

    Zum einen geht das mit einer Rule, zum anderen wird bei deiner Rule jetzt bei jeder Wertänderung dieser in var1 eingelesen. Da brauchts in der 2. Rule dann auch kein backlog und setzten des var1 auf null.

    Inwieweit das den Prozessor am NodeMCU belastet .... ?? Ansonsten eben wie im ersten beispiel, beim senden die var1 auf null zu setzen und nur dann einlesen wenn der analog wert größer null ist.

    Deine beiden Rule zuzammengefasst:

    Rule1 ON analog#a0 DO Var1 %value% ENDON ON Time#Minute DO WebSend [192.168.1.103:6832] /Test %var1% ENDON

    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