DIY fluid mass flow meter

Ich möchte gerne dieses Projekt in meinen IPS einbinden. Das ESP8266 Modul (in meinem Fall ein Wemos D1 mini) sendet seine Daten per MQTT. Ich nutze schon Mosquitto Broker und IPS_MQTT von thomasf68 … nach einer Beschreibung von hier.
Nun läuft das Modul (ich habe über WLAN eine IP bekommen und ich habe auch den MQTT Server hinterlegt -> ich gehe davon aus, dass da was gesendet wird. Nur wie komme ich an die Daten dran?

Hallo,

das hat ja erstmal nichts mit dem Tasmota Modul zu tun.
Am einfachsten ist es, im MQTT Client im Debug zu schauen was ankommt.
Dann kann man überlegen ob man dafür ein extra Modul schreibt oder es über ein Handle Script löst.

Grüße,
Kai

Vielen Dank für die schnelle Antwort!
Die Idee ist gut und nachvollziehbar. Ich habe nun auch mal in den MQTT Client per Debug reingeschaut. Leider kommt da gar nichts von diesem Modul an! Ich sehe nur Meldungen von meinen Tasmotas. Hierzu eine Idee?

Das kann nur bedeuten, dass dein Gerät nichts verschickt.
Also muss dort irgendwo ein Fehler sein. Im Client kommt eigentlich alles an.

Grüße,
Kai

Ich habe deinen Beitrag mal aus dem Thread herausgetrennt.

Grüße,
Kai

Das ist nett, Danke. Vllt. um den Zusatz „Wifi Scale“ oder „Wifi/WLAN Waage“ ergänzen. Sonst findet das keiner über die Suche,

Der Code scheint aber nicht recht zu laufen und und blicke da nicht durch. :banghead:
Die letzte, in Git eingecheckte Version sieht so aus:

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include "HX711.h" 

//Wifi Settings
const char* ssid = "my_WLAN";
const char* password = "*****";

//MQTT Settings
const char* mqtt_server = "10.10.10.10";
WiFiClient espClient;
PubSubClient client(espClient);

//Hardware Settings
#define DOUT  D2
#define CLK  D3
char msg_buff[50];


int switchPin = D5;
int switchValue;
HX711 scale(DOUT, CLK);
//Change this calibration factor as per your load cell once it is found you many need to vary it in thousands
float calibration_factor = 28.20; //28.20 worked for my scale 

//=============================================================================================
//                         SETUP
//=============================================================================================
void setup() {
  delay(100);
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(switchPin, INPUT_PULLUP);
  Serial.begin(115200);
  scale.begin(DOUT,CLK); //esp specific statment 
  Serial.println("HX711 Kalibrierung");
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
  scale_setup();

  
}
void scale_setup() {
  client.subscribe("HX711cal"); 
  Serial.println("HX711 Kalibrierung");
  Serial.println("Bitte entfernen Sie jegliche Gewichte von der Waage!");
  Serial.println("Sobald das Auslesen beginnt legen Sie bitte ein bekanntes Gewicht auf die Waage.");
  Serial.println("Drücken Sie a,s,d,f um den Kalibrierungsfaktor um 10,100,1000,10000 zu erhöhen.");
  Serial.println("Drücken Sie y,x,c,v um den Kalibrierungsfaktor um 10,100,1000,10000 zu verringern.");
  Serial.println("Drücken Sie t für TARA");
  scale.tare(); //Reset the scale to 0
  Serial.println("1. TARA erledigt! Warten Sie bitte 5 weitere Sekunden.");
  delay(5000);
  scale.tare();
  Serial.println("2. TARA erledigt! Warten Sie bitte 2 weitere Sekunden.");
  delay(2000);
  scale.tare();
  Serial.println("3. TARA erledigt!");
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
}

void setup_wifi(){
  delay(10);
  Serial.println();
  Serial.print("Verbindungsaufbau zu ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi verbunden.");
  Serial.println("IP-Adresse: ");
  Serial.println(WiFi.localIP());
}

void reconnect() {
  while(!client.connected()) {
    Serial.print("Aufbau der MQTT Verbindung ...");
    if (client.connect("ESP8266Client")) {
      Serial.println(" verbunden");
      client.subscribe("HX711cal");
    } else {
      Serial.print("fehlgeschlagen, rc=");
      Serial.print(client.state());
      Serial.println(" erneuter Versuch in 5 Sekunden.");
      delay(5000);
      
    }
  }
}

void callback(char* topic, byte* payload, unsigned int length) {
   int i = 0;
  Serial.println("Meldung empfangen:  topic: " + String(topic));
  Serial.println("Länge: " + String(length,DEC));
  for(i=0; i<length; i++) {
    msg_buff[i] = payload[i];
  }
  msg_buff[i] = '\0';
  
  String msgString = String(msg_buff);
  
  Serial.println("Payload: " + msgString);
  if (msgString == "tare"){    // if there is a "1" published to any topic (#) on the broker then:
    digitalWrite(LED_BUILTIN, LOW);     // set pin to the opposite state 
    Serial.println("Switching LED");
    scale.tare(5);
    digitalWrite(LED_BUILTIN, HIGH);
  }
  else if (msgString == "+0.1")
     calibration_factor += 0.1;
  else if(msgString == "-0.1")
      calibration_factor -= 0.1;
  else if(msgString == "+1")
      calibration_factor += 1;  
  else if(msgString == "-1")
      calibration_factor -= 1;  
  else if(msgString == "+10")
      calibration_factor += 10;  
  else if(msgString == "-10")
      calibration_factor -= 10;
  else if(msgString == "+100")
      calibration_factor += 100;  
  else if(msgString == "-100")
      calibration_factor -= 100;  
}

//=============================================================================================
//                         LOOP
//=============================================================================================
void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  float weight = scale.get_units(15);
  float rounded = round(weight) ;

  scale.set_scale(calibration_factor); //Adjust to this calibration factor
  switchValue = digitalRead(switchPin);
  Serial.print("ausgelesener Wert: ");
  Serial.print(weight);
  Serial.print(" g |||"); //Change this to kg and re-adjust the calibration factor if you follow SI units like a sane person
  Serial.print(" gerundeter Wert: ");
  Serial.print(rounded);
  Serial.print(" g |||"); //Change this to kg and re-adjust the calibration factor if you follow SI units like a sane person
  Serial.print(" Kalibrierungsfaktor: ");
  Serial.print(calibration_factor);
  Serial.println();
  Serial.println(switchValue);
  client.publish("Scale1",String(rounded).c_str(),true);
  client.publish("Debug",String(weight).c_str(),true);
  client.publish("HX711calfactor",String(calibration_factor).c_str(),true);
  if(switchValue == 0){
    digitalWrite(LED_BUILTIN, LOW);
    scale.tare(5);
    digitalWrite(LED_BUILTIN, HIGH);
  }
  
  
  

  if(Serial.available())
  {
    char temp = Serial.read();
    if(temp == '+' || temp == 'a')
      calibration_factor += 0.1;
    else if(temp == '-' || temp == 'y')
      calibration_factor -= 0.1;
    else if(temp == 's')
      calibration_factor += 1;  
    else if(temp == 'x')
      calibration_factor -= 1;  
    else if(temp == 'd')
      calibration_factor += 10;  
    else if(temp == 'c')
      calibration_factor -= 10;
    else if(temp == 'f')
      calibration_factor += 100;  
    else if(temp == 'v')
      calibration_factor -= 100;
    else if(temp == 't')
      scale.tare(5); //Reset the scale to zero    
    else if(switchValue == '0')
      scale.tare(5);  //Reset the scale to zero
  }
}
//=============================================================================================

Wenn ich das anpasse und in meinen NodeMCU ESP-12E einspiele, dann bekomme ich

Connecting to my_WLAN

WiFi connected
IP address:
10.10.10.10
HX711 Calibration
Remove all weight from scale
After readings begin, place known weight on scale
Press a,s,d,f to increase calibration factor by 10,100,1000,10000 respectively
Press z,x,c,v to decrease calibration factor by 10,100,1000,10000 respectively
Press t for tare

und das war es. Keine Meldungen im MQTT Client.

das hast du auch richtig angepasst ?

const char* mqtt_server = "Your MQTT Server Ip";

Ist mein IPS auf dem der Mosquitto läuft.

Ich bin deutlich weiter. Der Code war verbuggt.
Hier der neue Code:

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include "HX711.h" 

//Wifi Settings
const char* ssid = "my_WLAN";
const char* password = "*****";

//MQTT Settings
const char* mqtt_server = "10.10.10.10";
WiFiClient espClient;
PubSubClient client(espClient);

//Hardware Settings
#define DOUT  D2
#define CLK  D3
char msg_buff[50];


int switchPin = D5;
int switchValue;
HX711 scale(DOUT, CLK);
//Change this calibration factor as per your load cell once it is found you many need to vary it in thousands
//float calibration_factor = -219.50; //-219.50 worked for my scale 
float calibration_factor = 28.20; //28.20 worked for my scale 

//=============================================================================================
//                         SETUP
//=============================================================================================
void setup() {
  delay(100);
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(switchPin, INPUT_PULLUP);
  Serial.begin(115200);
  scale.begin(DOUT,CLK); //esp specific statment 
  Serial.println("HX711 Kalibrierung");
  setup_wifi();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
  scale_setup();

  
}
void scale_setup() {
  client.subscribe("HX711cal"); 
  Serial.println("HX711 Kalibrierung");
  Serial.println("Bitte entfernen Sie jegliche Gewichte von der Waage!");
  Serial.println("Sobald das Auslesen beginnt legen Sie bitte ein bekanntes Gewicht auf die Waage.");
  Serial.println("Drücken Sie a,s,d,f um den Kalibrierungsfaktor um 10,100,1000,10000 zu erhöhen.");
  Serial.println("Drücken Sie y,x,c,v um den Kalibrierungsfaktor um 10,100,1000,10000 zu verringern.");
  Serial.println("Drücken Sie t für TARA");
  scale.tare(); //Reset the scale to 0
  Serial.println("1. TARA erledigt! Warten Sie bitte 5 weitere Sekunden.");
  delay(5000);
  scale.tare();
  Serial.println("2. TARA erledigt! Warten Sie bitte 2 weitere Sekunden.");
  delay(2000);
  scale.tare();
  Serial.println("3. TARA erledigt!");
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
}

void setup_wifi(){
  delay(10);
  Serial.println();
  Serial.print("Verbindungsaufbau zu ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi verbunden.");
  Serial.println("IP-Adresse: ");
  Serial.println(WiFi.localIP());
}

void reconnect() {
  while(!client.connected()) {
    Serial.print("Aufbau der MQTT Verbindung ...");
    if (client.connect("ESP8266Client")) {
      Serial.println(" verbunden");
      client.subscribe("HX711cal");
    } else {
      Serial.print("fehlgeschlagen, rc=");
      Serial.print(client.state());
      Serial.println(" erneuter Versuch in 5 Sekunden.");
      delay(5000);
      
    }
  }
}

void callback(char* topic, byte* payload, unsigned int length) {
   int i = 0;
  Serial.println("Meldung empfangen:  topic: " + String(topic));
  Serial.println("Länge: " + String(length,DEC));
  for(i=0; i<length; i++) {
    msg_buff[i] = payload[i];
  }
  msg_buff[i] = '\0';
  
  String msgString = String(msg_buff);
  
  Serial.println("Payload: " + msgString);
  if (msgString == "tare"){    // if there is a "1" published to any topic (#) on the broker then:
    digitalWrite(LED_BUILTIN, LOW);     // set pin to the opposite state 
    Serial.println("Switching LED");
    scale.tare(5);
    digitalWrite(LED_BUILTIN, HIGH);
  }
  else if (msgString == "+0.1")
     calibration_factor += 0.1;
  else if(msgString == "-0.1")
      calibration_factor -= 0.1;
  else if(msgString == "+1")
      calibration_factor += 1;  
  else if(msgString == "-1")
      calibration_factor -= 1;  
  else if(msgString == "+10")
      calibration_factor += 10;  
  else if(msgString == "-10")
      calibration_factor -= 10;
  else if(msgString == "+100")
      calibration_factor += 100;  
  else if(msgString == "-100")
      calibration_factor -= 100;  
}

//=============================================================================================
//                         LOOP
//=============================================================================================
void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();

  float weight = scale.get_units(15);
  float rounded = round(weight) ;

  scale.set_scale(calibration_factor); //Adjust to this calibration factor
  switchValue = digitalRead(switchPin);
  Serial.print("ausgelesener Wert: ");
  Serial.print(weight);
  Serial.print(" g |||"); //Change this to kg and re-adjust the calibration factor if you follow SI units like a sane person
  Serial.print(" gerundeter Wert: ");
  Serial.print(rounded);
  Serial.print(" g |||"); //Change this to kg and re-adjust the calibration factor if you follow SI units like a sane person
  Serial.print(" Kalibrierungsfaktor: ");
  Serial.print(calibration_factor);
  Serial.println();
  Serial.println(switchValue);
  client.publish("Scale1",String(rounded).c_str(),true);
  client.publish("Debug",String(weight).c_str(),true);
  client.publish("HX711calfactor",String(calibration_factor).c_str(),true);
  if(switchValue == 0){
    digitalWrite(LED_BUILTIN, LOW);
    scale.tare(5);
    digitalWrite(LED_BUILTIN, HIGH);
  }
  
  
  

  if(Serial.available())
  {
    char temp = Serial.read();
    if(temp == '+' || temp == 'a')
      calibration_factor += 0.1;
    else if(temp == '-' || temp == 'y')
      calibration_factor -= 0.1;
    else if(temp == 's')
      calibration_factor += 1;  
    else if(temp == 'x')
      calibration_factor -= 1;  
    else if(temp == 'd')
      calibration_factor += 10;  
    else if(temp == 'c')
      calibration_factor -= 10;
    else if(temp == 'f')
      calibration_factor += 100;  
    else if(temp == 'v')
      calibration_factor -= 100;
    else if(temp == 't')
      scale.tare(5); //Reset the scale to zero    
    else if(switchValue == '0')
      scale.tare(5);  //Reset the scale to zero
  }
}
//=============================================================================================

Die Ausgabe kann sich sehen lassen:

16:34:48.692 -> ausgelesener Wert: 10119.01 g ||| gerundeter Wert: 10119.00 g ||| Kalibrierungsfaktor: 28.20
16:34:48.692 -> 1
16:34:50.072 -> ausgelesener Wert: 10120.07 g ||| gerundeter Wert: 10120.00 g ||| Kalibrierungsfaktor: 28.20
16:34:50.072 -> 1
16:34:51.449 -> ausgelesener Wert: 10119.61 g ||| gerundeter Wert: 10120.00 g ||| Kalibrierungsfaktor: 28.20
16:34:51.449 -> 1
16:34:52.853 -> ausgelesener Wert: 10119.01 g ||| gerundeter Wert: 10119.00 g ||| Kalibrierungsfaktor: 28.20

Am MQTT kommt nun folgendes an:

TXT: 02.02.2019 16:35:41.00 | RECEIVED | 0<DLE><NUL><ACK>Scale110120.00
HEX: 02.02.2019 16:35:41.00 | RECEIVED | 30 10 00 06 53 63 61 6C 65 31 31 30 31 32 30 2E 30 30
TXT: 02.02.2019 16:35:41.00 | RECEIVED | 0<SI><NUL><ENQ>Debug10119.93
HEX: 02.02.2019 16:35:41.00 | RECEIVED | 30 0F 00 05 44 65 62 75 67 31 30 31 31 39 2E 39 33
TXT: 02.02.2019 16:35:41.00 | RECEIVED | 0<NAK><NUL><SO>HX711calfactor28.20
HEX: 02.02.2019 16:35:41.00 | RECEIVED | 30 15 00 0E 48 58 37 31 31 63 61 6C 66 61 63 74 6F 72 32 38 2E 32 30
TXT: 02.02.2019 16:35:43.00 | RECEIVED | 0<DLE><NUL><ACK>Scale110119.00
HEX: 02.02.2019 16:35:43.00 | RECEIVED | 30 10 00 06 53 63 61 6C 65 31 31 30 31 31 39 2E 30 30
TXT: 02.02.2019 16:35:43.00 | RECEIVED | 0<SI><NUL><ENQ>Debug10119.15
HEX: 02.02.2019 16:35:43.00 | RECEIVED | 30 0F 00 05 44 65 62 75 67 31 30 31 31 39 2E 31 35
TXT: 02.02.2019 16:35:43.00 | RECEIVED | 0<NAK><NUL><SO>HX711calfactor28.20
HEX: 02.02.2019 16:35:43.00 | RECEIVED | 30 15 00 0E 48 58 37 31 31 63 61 6C 66 61 63 74 6F 72 32 38 2E 32 30
TXT: 02.02.2019 16:35:44.00 | RECEIVED | 0<DLE><NUL><ACK>Scale110120.00
HEX: 02.02.2019 16:35:44.00 | RECEIVED | 30 10 00 06 53 63 61 6C 65 31 31 30 31 32 30 2E 30 30
TXT: 02.02.2019 16:35:44.00 | RECEIVED | 0<SI><NUL><ENQ>Debug10119.79
HEX: 02.02.2019 16:35:44.00 | RECEIVED | 30 0F 00 05 44 65 62 75 67 31 30 31 31 39 2E 37 39
TXT: 02.02.2019 16:35:44.00 | RECEIVED | 0<NAK><NUL><SO>HX711calfactor28.20

Wie kann ich „Scale1“ bzw. „Debug“ nun in IPS Variablen ablegen?

Als erstes mal das ändern :

client.publish("Scale1",String(rounded).c_str(),true);

in:

client.publish("/Wagge1/Scale1",String(rounded).c_str(),true);

Wagge1 ist dann das Gerät.
Das bitte bei allen „client.publish“, damit man die Werte der Wagge1 zuordnen kann.
Ist aber etwas unschön, da es fix im Code ist, und du jedes neue Gerät per Code ändern musst.
Dann mal schauen, wie die Daten in IPS reinkommen, danach schauen wir weiter.

„jedes neue Gerät per Code ändern musst“ … ist hier nicht das Problem. Aktuell und bis auf Weiteres ist das mein einziges Projekt dieser Art. Im Zuge einer Code-Optimierung könnte man natürlich eine Web-Oberfläche einfügt und die Werte per GUI veränder- und speicherbar abbilden. Da bin ich aber leider raus (noch). :wink:

Ich habe nun also alle „client.publish(…“ in „client.publish(“/Waage1/…" angepasst. Ich habe mich dabei allerdings für „Waage“ anstatt „Wagge“ entschieden :p. Erwartungsgemäß kommt nun folgendes beim MQTT Client an:

TXT: 03.02.2019 09:38:17.00 | RECEIVED | 0<SYN><NUL><SI>/Waage1/Scale1 17.00
HEX: 03.02.2019 09:38:17.00 | RECEIVED | 30 16 00 0F 2F 57 61 61 67 65 31 2F 53 63 61 6C 65 31 20 31 37 2E 30 30
TXT: 03.02.2019 09:38:17.00 | RECEIVED | 0<NAK><NUL><SO>/Waage1/Debug 16.67
HEX: 03.02.2019 09:38:17.00 | RECEIVED | 30 15 00 0E 2F 57 61 61 67 65 31 2F 44 65 62 75 67 20 31 36 2E 36 37
TXT: 03.02.2019 09:38:17.00 | RECEIVED | 0<RS><NUL><ETB>/Waage1/HX711calfactor 28.20
HEX: 03.02.2019 09:38:17.00 | RECEIVED | 30 1E 00 17 2F 57 61 61 67 65 31 2F 48 58 37 31 31 63 61 6C 66 61 63 74 6F 72 20 32 38 2E 32 30
TXT: 03.02.2019 09:38:18.00 | RECEIVED | 0<SYN><NUL><SI>/Waage1/Scale1 16.00
HEX: 03.02.2019 09:38:18.00 | RECEIVED | 30 16 00 0F 2F 57 61 61 67 65 31 2F 53 63 61 6C 65 31 20 31 36 2E 30 30
TXT: 03.02.2019 09:38:18.00 | RECEIVED | 0<NAK><NUL><SO>/Waage1/Debug 16.38
HEX: 03.02.2019 09:38:18.00 | RECEIVED | 30 15 00 0E 2F 57 61 61 67 65 31 2F 44 65 62 75 67 20 31 36 2E 33 38
TXT: 03.02.2019 09:38:18.00 | RECEIVED | 0<RS><NUL><ETB>/Waage1/HX711calfactor 28.20
HEX: 03.02.2019 09:38:18.00 | RECEIVED | 30 1E 00 17 2F 57 61 61 67 65 31 2F 48 58 37 31 31 63 61 6C 66 61 63 74 6F 72 20 32 38 2E 32 30
TXT: 03.02.2019 09:38:20.00 | RECEIVED | 0<SYN><NUL><SI>/Waage1/Scale1 16.00
HEX: 03.02.2019 09:38:20.00 | RECEIVED | 30 16 00 0F 2F 57 61 61 67 65 31 2F 53 63 61 6C 65 31 20 31 36 2E 30 30
TXT: 03.02.2019 09:38:20.00 | RECEIVED | 0<NAK><NUL><SO>/Waage1/Debug 15.78
HEX: 03.02.2019 09:38:20.00 | RECEIVED | 30 15 00 0E 2F 57 61 61 67 65 31 2F 44 65 62 75 67 20 31 35 2E 37 38
TXT: 03.02.2019 09:38:20.00 | RECEIVED | 0<RS><NUL><ETB>/Waage1/HX711calfactor 28.20
HEX: 03.02.2019 09:38:20.00 | RECEIVED | 30 1E 00 17 2F 57 61 61 67 65 31 2F 48 58 37 31 31 63 61 6C 66 61 63 74 6F 72 20 32 38 2E 32 30
TXT: 03.02.2019 09:38:21.00 | RECEIVED | 0<SYN><NUL><SI>/Waage1/Scale1 17.00
HEX: 03.02.2019 09:38:21.00 | RECEIVED | 30 16 00 0F 2F 57 61 61 67 65 31 2F 53 63 61 6C 65 31 20 31 37 2E 30 30
TXT: 03.02.2019 09:38:21.00 | RECEIVED | 0<NAK><NUL><SO>/Waage1/Debug 16.70
HEX: 03.02.2019 09:38:21.00 | RECEIVED | 30 15 00 0E 2F 57 61 61 67 65 31 2F 44 65 62 75 67 20 31 36 2E 37 30
TXT: 03.02.2019 09:38:21.00 | RECEIVED | 0<RS><NUL><ETB>/Waage1/HX711calfactor 28.20
HEX: 03.02.2019 09:38:21.00 | RECEIVED | 30 1E 00 17 2F 57 61 61 67 65 31 2F 48 58 37 31 31 63 61 6C 66 61 63 74 6F 72 20 32 38 2E 32 30
TXT: 03.02.2019 09:38:22.00 | RECEIVED | 0<SYN><NUL><SI>/Waage1/Scale1 16.00
HEX: 03.02.2019 09:38:22.00 | RECEIVED | 30 16 00 0F 2F 57 61 61 67 65 31 2F 53 63 61 6C 65 31 20 31 36 2E 30 30
TXT: 03.02.2019 09:38:23.00 | RECEIVED | 0<NAK><NUL><SO>/Waage1/Debug 16.31
HEX: 03.02.2019 09:38:23.00 | RECEIVED | 30 15 00 0E 2F 57 61 61 67 65 31 2F 44 65 62 75 67 20 31 36 2E 33 31
TXT: 03.02.2019 09:38:23.00 | RECEIVED | 0<RS><NUL><ETB>/Waage1/HX711calfactor 28.20

Wie bekomme ich nun die Werte in IPS Variablen?

Ich habe gerade mal ein Modul von Kai umgebaut, dass wird dann mit deiner Waage gehen.
Noch ein paar Test machen, dann stelle ich es dir zur Verfügung.
Der Meldungsaufbau ist dann :

mqtt.publish("/Gerät-xy/Variable-xy",String(wert));

Im Modul musst du dann unter MQTT Topic „Waage1“ eintragen, dann werden die Variablen angelegt und gefüllt, wenn Werte reinkommen. Im Debug Fenster vom Modul sieht man, was passiert.

Genial! Ich bin gespannt.

Gesendet von meinem SM-T813 mit Tapatalk

Wenn du mal versuchen magst :
GitHub - ipstomgr/TS_MQTT-Testmodul

Alle Var’s werden aber noch als String angelegt.
Bin gespannt auf deine Rückmeldung.
Ich brauchte das sowieso mal, wenn ich mit der Nodemcu rumspiele, um mal schnell Daten in IPS zu sehen.

Allem voran: 1000 Dank für Deinen Einsatz!

Uff, das war heftig. Innerhalb von 3 Sekunden hat er meinen IPS Server mit String-Variablen überflutet.


Unbenannt2.GIF

Hatte erst nur „Waage1“ reingeschrieben, dann hat er aber (wie schon geschildert) ohne Ende Variablen angelegt.

Was hast du genau gemacht ?
Ich hatte bei mir mit

mqtt.publish("/Waage1/Scale1",String(batt));

den Code gestestet, und ca alle 10 Sekunden übertragen.
Topic welches bei mir eingetragen war : „Waage1“

Ich habe Dein Modul installiert.
Ich habe eine Instanz Typ „MQTT_Testmodul“, Name „Waage_Test2“ erstellt.
MQTT Topic „Waage1“, übergeodnete Instanz ist mein MQTT Client.

Das ist alles. Danach flutet er meine Instanz mit Variablen.

Sende mir mal den Arduino Code.
Dann kann ich mal hier schauen.

Bekommst gleich ne PM

publish("/Waage1/Scale1 "

Dort ist bei publish überall ein Leerzeichen hinten dran, bitte alles ändern auf :

publish("/Waage1/Scale1"

Dann sollte es klappen .