Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. MQTT ESP

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    MQTT ESP

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      ludino last edited by

      Hi ich habe ein ESP am laufen mit einem DS18B20 der über einen MQTT Client zu meinem Iobroker Mqtt server pusht

      Soweit so gut, das ESP Programm macht ein Connect und Pusht die daten auch zum Broker. Das sehe ich sowohl in der Konsole als auch im broker

      ESP Programm:

      const char* mqtt_server = "192.168.178.77";

      const char* mqtt_username = "";

      const char* mqtt_password = "";

      const char* mqtt_topic = "temperature";

      BROKER

      mqtt.0 2018-03-10 09:08:01.429 info Client [ESP8266Client] connected

      mqtt.0 2018-03-10 09:07:49.532 info Client [ESP8266Client] connected

      mqtt.0 2018-03-10 09:07:46.991 info Starting MQTT-WebSocket server on port 1884

      mqtt.0 2018-03-10 09:07:46.989 info Starting MQTT server on port 1883

      mqtt.0 2018-03-10 09:07:46.501 info starting. Version 1.5.0 in /opt/iobroker/node_modules/iobroker.mqtt, node: v6.13.0

      host.iobroker 2018-03-10 09:07:45.341 info instance system.adapter.mqtt.0 started with pid 13155

      host.iobroker 2018-03-10 09:07:43.353 info instance system.adapter.mqtt.0 terminated with code 0 (OK)

      KONSOLE

      WiFi connected

      IP address:

      192.168.178.100

      Attempting MQTT connection…connected

      Requesting DS18B20 temperature...

      Sending temperature: 20.00

      Closing MQTT connection...

      Closing WiFi connection...

      Entering deep sleep mode for 5 seconds...

      Leider unter dem MQTT Adapter finde ich keine Werte wieder.

      Muss ich da noch ein Datenpunkt oder sowaas erzeugen?

      Wenn ja wie funktioniert das gibt es da schon eine Anleitung zu?

      Gruß

      Ludino

      1 Reply Last reply Reply Quote 0
      • S
        stimezo Forum Testing last edited by

        Hi Ludino,

        geht aus deinem Post nicht hervor, Du hast den Port schon in deinem Sketch angegeben?

        Datenpunkte werden beim ersten (erfolgreichen) publish automatisch angelegt.

        Zeig doch mal deinen Sketch.

        Viele Grüße

        Christian

        1 Reply Last reply Reply Quote 0
        • L
          ludino last edited by

          Abe klar doch gern

          ! ```
          #include <esp8266wifi.h> #include <pubsubclient.h> #include <onewire.h> #include <dallastemperature.h> #include <streaming.h> ! #define SLEEP_DELAY_IN_SECONDS 5 #define ONE_WIRE_BUS D4 // DS18B20 pin ! const char* ssid = "gelöscht"; const char* password = "gelöscht"; ! const char* mqtt_server = "192.168.178.77"; const char* mqtt_username = ""; const char* mqtt_password = ""; const char* mqtt_topic = ""; ! WiFiClient espClient; PubSubClient client(espClient); ! OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire); ! char temperatureString[6]; ! void setup() { // setup serial port Serial.begin(115200); ! // setup WiFi setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); ! // setup OneWire bus DS18B20.begin(); } ! void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); ! WiFi.begin(ssid, password); ! while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } ! Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } ! 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++) { Serial.print((char)payload[i]); } Serial.println(); } ! void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Attempt to connect if (client.connect("Aussentemperature", mqtt_username, mqtt_password)) { Serial.println("connected"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } ! float getTemperature() { Serial << "Requesting DS18B20 temperature..." << endl; float temp; do { DS18B20.requestTemperatures(); temp = DS18B20.getTempCByIndex(0); delay(100); } while (temp == 85.0 || temp == (-127.0)); return temp; } ! void loop() { if (!client.connected()) { reconnect(); } client.loop(); ! float temperature = getTemperature(); // convert temperature to a string with two digits before the comma and 2 digits for precision dtostrf(temperature, 2, 2, temperatureString); // send temperature to the serial console Serial << "Sending temperature: " << temperatureString << endl; // send temperature to the MQTT topic client.publish(mqtt_topic, temperatureString); ! Serial << "Closing MQTT connection..." << endl; client.disconnect(); ! Serial << "Closing WiFi connection..." << endl; WiFi.disconnect(); ! delay(100); ! Serial << "Entering deep sleep mode for " << SLEEP_DELAY_IN_SECONDS << " seconds..." << endl; ESP.deepSleep(SLEEP_DELAY_IN_SECONDS * 1000000, WAKE_RF_DEFAULT); //ESP.deepSleep(10 * 1000, WAKE_NO_RFCAL); delay(500); // wait for deep sleep to happen }</streaming.h></dallastemperature.h></onewire.h></pubsubclient.h></esp8266wifi.h>
          ! Danke schonmal für dir Hilfe[/i]

          1 Reply Last reply Reply Quote 0
          • S
            stimezo Forum Testing last edited by

            OK, das ist der gute pubsub Standard.

            Das sieht auf den ersten Blick eigentlich gut aus.

            Das connecten klappt ja auch (siehe dein Log)

            Probier doch mal das publish so abzusetzen

             if (client.publish(mqtt_topic, String(getTemperature()).c_str())) {
                  Serial.println("Temperatur gesendet");
                }
            
            

            zur Info:

            Die Funktion client.publish() liefert ein true bei erfolgreicher Übermittlung

            1 Reply Last reply Reply Quote 0
            • L
              ludino last edited by

              danke das war es…!

              Super

              1 Reply Last reply Reply Quote 0
              • S
                stimezo Forum Testing last edited by

                Freut mich, daß Dein System läuft 😄

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate
                FAQ Cloud / IOT
                HowTo: Node.js-Update
                HowTo: Backup/Restore
                Downloads
                BLOG

                579
                Online

                31.9k
                Users

                80.1k
                Topics

                1.3m
                Posts

                2
                6
                731
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo