INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 2 Bewertungen - 3 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Wemos d1 Ph Sonde - Hilfe bei Daten per MQTT senden
09.05.2021, 12:25
Beitrag #17
RE: Wemos d1 Ph Sonde - Hilfe bei Daten per MQTT senden
(09.05.2021 12:13)Tommy56 schrieb:  Dann sind Deine {} immer noch falsch. Klicke doch mal in der IDE auf eine, dann wird das Gegenstück hervorgehoben.

Gruß Tommy

hab ich gemacht. hab die whileschleife jetzt an sich in geschw. Klammern und es fehlte noch eine zusätzliche schliessende. der Fehler bleibt jedoch

Code:
/Users/KaiseSor/Documents/Arduino/sketch_may07b/sketch_may07b.ino: In function 'void loop()':
sketch_may07b:108:10: error: 'client' was not declared in this scope
   while (client.available()) {
          ^
sketch_may07b:112:8: error: 'client' was not declared in this scope
   if (!client.connected()) {
        ^
sketch_may07b:117:3: error: 'client' was not declared in this scope
   client.loop();}
   ^
/Users/KaiseSor/Documents/Arduino/sketch_may07b/sketch_may07b.ino: At global scope:
sketch_may07b:119:4: error: expected declaration before '}' token
    }
    ^
Mehrere Bibliotheken wurden für "Adafruit_SSD1306.h" gefunden
Benutzt: /Users/KaiseSor/Documents/Arduino/libraries/Adafruit_SSD1306
Nicht benutzt: /Users/KaiseSor/Documents/Arduino/libraries/Adafruit_SSD1306_Wemos_Mini_OLED
exit status 1
'client' was not declared in this scope
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.05.2021, 12:53
Beitrag #18
RE: Wemos d1 Ph Sonde - Hilfe bei Daten per MQTT senden
Na die while Schleife ansich gehört auch nicht in {}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.05.2021, 13:40 (Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2021 13:52 von SoerenKaiser99.)
Beitrag #19
RE: Wemos d1 Ph Sonde - Hilfe bei Daten per MQTT senden
(09.05.2021 12:53)N1d45 schrieb:  Na die while Schleife ansich gehört auch nicht in {}

die erste klammer kommt dann in der Schleife und beim Schlussteil.
Könntest du es dir wohl nochmal ansehen? Bitte entschuldige aber ich hab leider keine Ahnung von dem Code.

Code:
#include <SPI.h>
#include <ESP8266WiFi.h>
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h>
#include <PubSubClient.h>                                                 // MQTT Bibliothek
#define OLED_RESET 4  

//MQTT Topics
#define pH_Topic      "Pool/Sensoren/ph"            // MQTT Topic für pH

char ssid[] = "+++";      
char pass[] = "+++";  
const String myDevice = "PHSens";
const char*   mqtt_server = "192, 168, 2, 165";                             // IP des MQTT Brokers (z.b. IP des Raspberry PI)
uint16_t      port = 1884;                                                // Port des MQTT Brokers
const char*       clientName = "pHSonde";
int status = WL_IDLE_STATUS;
WiFiClient espClient;                                                     // WLAN initialisieren
PubSubClient mqttclient(mqtt_server,port,0,espClient);                    // MQTT initialisieren
String sendphValue;

unsigned long int avgValue;  //Store the average value of the sensor feedback
float b;
int buf[10],temp;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH,SCREEN_HEIGHT,&Wire,OLED_RESET);

void setup() {
  Serial.begin(115200);
  WiFi.disconnect();
  Serial.println("Connecting...");
  WiFi.begin(ssid,pass);
  
  while((!(WiFi.status() == WL_CONNECTED))){
    delay(300);
    Serial.print(".");
  }
  // MQTT starten
  mqttclient.connect(clientName);
  
  Serial.println(WiFi.status());
  Serial.println("Connected!");
  Serial.println("");
   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c))
  {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);//Dont proceed
  }
display.display();
delay(2);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,5);
display.print("PH Sensor");
display.display();
delay(3000);
}

void loop() {
  //String myData = String(analogRead(A0));
    for(int i=0;i<10;i++)       //Get 10 sample value from the sensor for smooth the value
  {
    buf[i]=analogRead(A0);
    delay(10);
  }
  for(int i=0;i<9;i++)        //sort the analog from small to large
  {
    for(int j=i+1;j<10;j++)
    {
      if(buf[i]>buf[j])
      {
        temp=buf[i];
        buf[i]=buf[j];
        buf[j]=temp;
      }
    }
  }
  avgValue=0;
  for(int i=2;i<8;i++)                      //take the average value of 6 center sample
    avgValue+=buf[i];
  float phValue=(float)avgValue*5.0/1024/6; //convert the analog into millivolt
  phValue=3.5*phValue;  //convert the millivolt into pH value
  phValue=phValue-7.51;
  //String myData = String(analogRead(A0))
  Serial.print("    pH:");  
  Serial.print(phValue,2);
  Serial.println(" ");

  //=============================oled display======================================
  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(20,0);
  display.print("PH Wert");

  display.setTextSize(3);
  display.setCursor(30,30);
  display.print(phValue);
  display.display();
  
  //=========================mqtt=================================================

  sendphValue = String(phValue,2);
  mqttclient.publish(pH_Topic, sendphValue.c_str());
  
  while (client.available()) {
    char c = client.read();
    Serial.write(c);
  }
  if (!client.connected()) {
    client.stop();
  }
  {
  delay(5000);
  client.loop();}
  }
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.05.2021, 20:03 (Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2021 21:27 von SoerenKaiser99.)
Beitrag #20
RE: Wemos d1 Ph Sonde - Hilfe bei Daten per MQTT senden
Ich bin schon mal weiter. Ich hab viel gelesen und probiert und der Code an sich läuft, Display zeigt den wert an und ich könnte Hallo per mqtt publischen Big Grin

Nah dran also... Was ist nicht hin bekomme ist die Variable phValue zu publishen. Kann mir dabei evtl noch jemand grad n Tipp geben:
es geht um die Zeile
client.publish(pH_Topic, "Hallo"); ich habe natürlich (pH_Topic, sendphValue.c_str()); aus den vorherigen Vorschlägen versucht, das klappt aber leider nicht

Code:
/Users/KaiseSor/Documents/Arduino/sketch_may10b/sketch_may10b.ino: In function 'void loop()':
sketch_may10b:136:28: error: 'publishphValue' was not declared in this scope
   client.publish(pH_Topic, publishphValue.c_str());
                            ^

Hier der aktuelle Code:

Code:
#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include <Adafruit_INA219.h>
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h>
#include <SPI.h>
#define OLED_RESET 4
#define pH_Topic      "Pool/Sensoren/ph"            // MQTT Topic für pH


unsigned long int avgValue;  //Store the average value of the sensor feedback
float b;
int buf[10],temp;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH,SCREEN_HEIGHT,&Wire,OLED_RESET);


// Connect to the WiFi
const char* ssid = "###";
const char* password = "###";
const char* mqtt_server = "192.168.2.165";

WiFiClient espClient;
PubSubClient client(espClient);

const byte ledPin = 0; // Pin with LED on Adafruit Huzzah

void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i=0;i<length;i++) {
  char receivedChar = (char)payload[i];
  Serial.print(receivedChar);
  if (receivedChar == '0')
  // ESP8266 Huzzah outputs are "reversed"
  digitalWrite(ledPin, HIGH);
  if (receivedChar == '1')
   digitalWrite(ledPin, LOW);
  }
  Serial.println();
}


void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect("ESP8266 Client")) {
  Serial.println("connected");
  // ... and subscribe to topic
  client.subscribe("ledStatus");
} else {
  Serial.print("failed, rc=");
  Serial.print(client.state());
  Serial.println(" try again in 5 seconds");
  // Wait 5 seconds before retrying
  delay(5000);
  }
}
}

void setup()
{
Serial.begin(115200);

client.setServer(mqtt_server, 1884);
client.setCallback(callback);
    if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c))
  {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);//Dont proceed
  }
display.display();
delay(2);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,5);
display.print("PH Sensor");
display.display();
delay(3000);
pinMode(ledPin, OUTPUT);

}

void loop()
{

  //String myData = String(analogRead(A0));
    for(int i=0;i<10;i++)       //Get 10 sample value from the sensor for smooth the value
  {
    buf[i]=analogRead(A0);
    delay(10);
  }
  for(int i=0;i<9;i++)        //sort the analog from small to large
  {
    for(int j=i+1;j<10;j++)
    {
      if(buf[i]>buf[j])
      {
        temp=buf[i];
        buf[i]=buf[j];
        buf[j]=temp;
      }
    }
  }
  avgValue=0;
  for(int i=2;i<8;i++)                      //take the average value of 6 center sample
    avgValue+=buf[i];
  float phValue=(float)avgValue*5.0/1024/6; //convert the analog into millivolt
  phValue=3.5*phValue;  //convert the millivolt into pH value
  phValue=phValue-7.51;
  //String myData = String(analogRead(A0))
  Serial.print("    pH:");  
  Serial.print(phValue,2);
  Serial.println(" ");

  //=============================oled display======================================
  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(20,0);
  display.print("PH Wert");

  display.setTextSize(3);
  display.setCursor(30,30);
  display.print(phValue);
  display.display();


  client.publish(pH_Topic, "Hallo");

  
if (!client.connected()) {
  reconnect();


  
}
client.loop();
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.05.2021, 20:42
Beitrag #21
RE: Wemos d1 Ph Sonde - Hilfe bei Daten per MQTT senden
Den publishphValue hast Du in Deinem Sketch aber auch nicht drin. Da hat der Compiler Recht.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.05.2021, 20:54
Beitrag #22
RE: Wemos d1 Ph Sonde - Hilfe bei Daten per MQTT senden
(10.05.2021 20:42)Tommy56 schrieb:  Den publishphValue hast Du in Deinem Sketch aber auch nicht drin. Da hat der Compiler Recht.

Gruß Tommy
Ich bin sicher das er recht hat weil ich mehr rate Big Grin
Serial.print(phValue,2); geht und wird angezeigt
die Zeile mqttclient.publish(pH_Topic, sendphValue.c_str()); hab ich von N1D45

wie und wo kann ich denn beides "verbinden" bzw den die variable phValue publishen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.05.2021, 21:12 (Dieser Beitrag wurde zuletzt bearbeitet: 10.05.2021 21:19 von N1d45.)
Beitrag #23
RE: Wemos d1 Ph Sonde - Hilfe bei Daten per MQTT senden
Das Problem ist das phValue bei dir vom typ int ist. Diese musst du in einen String verwandeln damit du den Wert publishen kannst.

Also brauchst du eine Variable vom Typ String, z.B. sendphValue
Code:
String sendphValue;

Dann übergibst du den Wert von phValue an sendphValue mit 2 Nachkommastellen
Code:
sendphValue = String(phValue,2);

Jetzt kannst du den String publishen
Code:
mqttclient.publish(pH_Topic, sendphValue.c_str());

Funktioniert bei mir, sollte also auch bei dir funktionieren.

Edit: Kann es gerade nicht kompilieren, das ich ESP8266 gerade nicht in die Arduino IDE eingebunden habe.
Code:
#include <EEPROM.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include <Adafruit_INA219.h>
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h>
#include <SPI.h>
#define OLED_RESET 4
#define pH_Topic      "Pool/Sensoren/ph"            // MQTT Topic für pH


String sendphValue;
unsigned long int avgValue;  //Store the average value of the sensor feedback
float b;
int buf[10],temp;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH,SCREEN_HEIGHT,&Wire,OLED_RESET);


// Connect to the WiFi
const char* ssid = "bitschleuder_sh";
const char* password = "2gether4ever";
const char* mqtt_server = "192.168.2.165";

WiFiClient espClient;
PubSubClient client(espClient);

const byte ledPin = 0; // Pin with LED on Adafruit Huzzah

void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i=0;i<length;i++) {
  char receivedChar = (char)payload[i];
  Serial.print(receivedChar);
  if (receivedChar == '0')
  // ESP8266 Huzzah outputs are "reversed"
  digitalWrite(ledPin, HIGH);
  if (receivedChar == '1')
   digitalWrite(ledPin, LOW);
  }
  Serial.println();
}


void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Attempt to connect
if (client.connect("ESP8266 Client")) {
  Serial.println("connected");
  // ... and subscribe to topic
  client.subscribe("ledStatus");
} else {
  Serial.print("failed, rc=");
  Serial.print(client.state());
  Serial.println(" try again in 5 seconds");
  // Wait 5 seconds before retrying
  delay(5000);
  }
}
}

void setup()
{
Serial.begin(115200);

client.setServer(mqtt_server, 1884);
client.setCallback(callback);
    if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c))
  {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);//Dont proceed
  }
display.display();
delay(2);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,5);
display.print("PH Sensor");
display.display();
delay(3000);
pinMode(ledPin, OUTPUT);

}

void loop()
{

  //String myData = String(analogRead(A0));
    for(int i=0;i<10;i++)       //Get 10 sample value from the sensor for smooth the value
  {
    buf[i]=analogRead(A0);
    delay(10);
  }
  for(int i=0;i<9;i++)        //sort the analog from small to large
  {
    for(int j=i+1;j<10;j++)
    {
      if(buf[i]>buf[j])
      {
        temp=buf[i];
        buf[i]=buf[j];
        buf[j]=temp;
      }
    }
  }
  avgValue=0;
  for(int i=2;i<8;i++)                      //take the average value of 6 center sample
    avgValue+=buf[i];
  float phValue=(float)avgValue*5.0/1024/6; //convert the analog into millivolt
  phValue=3.5*phValue;  //convert the millivolt into pH value
  phValue=phValue-7.51;
  //String myData = String(analogRead(A0))
  Serial.print("    pH:");  
  Serial.print(phValue,2);
  Serial.println(" ");

  //=============================oled display======================================
  display.clearDisplay();
  display.setTextSize(2);
  display.setCursor(20,0);
  display.print("PH Wert");

  display.setTextSize(3);
  display.setCursor(30,30);
  display.print(phValue);
  display.display();

  sendphValue=String(phValue,2);
  client.publish(pH_Topic, sendphValue.c_str());

  
if (!client.connected()) {
  reconnect();

}
client.loop();
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.05.2021, 21:25
Beitrag #24
RE: Wemos d1 Ph Sonde - Hilfe bei Daten per MQTT senden
tausend Dank Big Grin es läuft bestens!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Wemos D1 Mini DeepSleep Verbrauch - wo kaufen? andi82 4 367 07.06.2021 08:53
Letzter Beitrag: hotsystems
  Wemos D1 mini: Startet nur nach Upload 1 mal RudolfAtITD 5 554 24.05.2021 18:38
Letzter Beitrag: Tommy56
  SHT30 an Wemos D1 Mini ESP32 Mirkan 6 673 10.05.2021 09:59
Letzter Beitrag: Mirkan
  Wemos D1 R1 PS2 Tastatur Wolli501 6 2.093 02.05.2021 15:22
Letzter Beitrag: Tommy56
  Einen HTML Befehl an meine CCU senden Microsuck 1 485 20.04.2021 15:19
Letzter Beitrag: Tommy56
  Relay über NFC und Wifi schalten, bitte um Hilfe bei der Programmierung Tirol-Daniel 28 2.250 17.04.2021 13:31
Letzter Beitrag: Tommy56
  Wemos D1 mini pro Fehler hitman44NL 7 1.035 16.04.2021 07:55
Letzter Beitrag: hotsystems
  Einer RGB-LED am ESP Werte aus MQTT zuweisen. Manny 2 572 15.04.2021 16:50
Letzter Beitrag: Manny
  ESP32 Daten aus HTML Roger100499 11 1.252 15.04.2021 15:00
Letzter Beitrag: Tommy56
  ESP8266 SPIFF Daten schreiben und zeilenweise lesen? foto2004 10 1.142 15.04.2021 14:26
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste