@marc-berg es hat leider nichts getan , hast du damals dein MQTT_Broker in IoBroker installiert ?? Ich habe vielleicht etwas nicht richtig konfiguriert oder soll ich mir einfach ein anderes Software suchen
NEWS
Latest posts made by gillian45
-
RE: Daten abonnieren über den mqtt_adapter
-
RE: Daten abonnieren über den mqtt_adapter
@marc-berg Ich versuche es mal, meinst du ich sollte in function
void mqttConnect()
direct nach dem Subscribe direkt die Beide Zeilen einfügen ?
-
RE: Daten abonnieren über den mqtt_adapter
@marc-berg Also publish funktionniert irgendwie sehr gut und zwar mit den gleichen Topic Namen.
Hier kannst du es nochmal sehen# include <Arduino.h> #include <Adafruit_Sensor.h> # include <WiFi.h> # include <PubSubClient.h> // wifi Daten const char* ssid = "bubub" ; const char* password = "bueer" ; WiFiClient WifiClient ; // MQTT Broker_Daten const char* mqttServer = "192.168.0.220" ; // Broker-passwort PubSubClient mqttClient( WifiClient) ; //Topic char FlameSate[] ="flameState"; char Bewegung[]= "Bewegung" ; int pirSensor= 27 ; int ledPin = 32 ; // für meinen Bewegungsmelder int flamePin = 34; //Verbindung mit dem Broker herstellen void mqttConnect() { Serial.print("Verbindung zum MQTT_Server"); Serial.print( mqttServer); while(!mqttClient.connected()) { Serial.print("."); if (mqttClient.connect("ES")) { Serial.print("MQTT-VErbunden"); } else { Serial.print("Fehlgeschlagen "); Serial.print(mqttClient.state()); Serial.println("erneuter Versuch in 5 Sec"); delay(5000); } } mqttClient.subscribe("test/esp32"); } void setup() { pinMode(flamePin, INPUT); // Setze Flammensensor als Eingang pinMode(ledPin, OUTPUT); // Setze LED als Ausgang Serial.begin(115200); Serial.println(); Serial.print("Verbingsaufbaun zu") ; Serial.print(ssid); WiFi.begin(ssid,password); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.print(""); Serial.println("Wifi connected"); Serial.print("IP Add:"); Serial.print(WiFi.localIP()); // Verbindung mit MQTT-Server mqttClient.setServer(mqttServer, 1883); //mqttClient.setCallback(callback); mqttConnect(); } void loop() { // Wenn der Flammensensor eine Flamme erkennt, schalte die LED ein /* if (flameValue > 100) { // Der Schwellenwert von 100 muss möglicherweise angepasst werden digitalWrite(ledPin, HIGH); // Schalte LED ein } else { digitalWrite(ledPin, LOW); // Schalte LED aus } */ if(!mqttClient.connected()) { mqttConnect(); } mqttClient.loop(); int flameValue = analogRead(flamePin); // Lese analoge Spannung vom Flammensensor if(flameValue > 100) { Serial.print("Achtung Fire, Feuerwehr Anrufen !!!"); mqttClient.publish(FlameSate, "OK"); } else { Serial.print("Sicher, Kein Feuer !"); mqttClient.publish(FlameSate, "Nein"); } int pirSensorValue = digitalRead(pirSensor); if(pirSensorValue== HIGH) { digitalWrite(ledPin, HIGH) ; Serial.print("Bewegung erkannt"); mqttClient.publish(Bewegung, "OK"); delay(1000) ; } else { digitalWrite(ledPin, LOW); Serial.print("Keine Bewegung"); mqttClient.publish(Bewegung, "Nein"); delay(1000) ; } delay(200); }
-
RE: Daten abonnieren über den mqtt_adapter
@marc-berg
Die Wifi_Verbindung und MQTT_Verbindung functionieren einwandfrei aber subscribe eher nicht. Ich empfänge leider keine Daten auf mein Serial.monitor. Und ich weiß nicht, ob ich falsh abonniert habe. -
RE: Daten abonnieren über den mqtt_adapter
@tt-tom haha danke habe es total vergessen
-
Daten abonnieren über den mqtt_adapter
Hallo zusammen,
ich versuche seit ein paar Zeiten mit einem Esp32 Board auf Daten von meinem Broker zuzugreifen und auf dem Serial Monitor anzuzeigen aber irgendwie geht es bisher nicht. Hat jemand eine Idee was sich verbessern muss beziehungsweise komplett falsh ist ???#include <Arduino.h> #include <LiquidCrystal.h> #include <Adafruit_Sensor.h> #include <Wifi.h> # include <PubSubClient.h> // Lcd initialisierung LiquidCrystal lcd(22,21,5,18,23,19); // Encoder int Clk= 33; int Data= 25; int SwBut = 25; int menu =1 ; static int LastState ; // wifi Daten const char* ssid = "bbbbbb" ; const char* password = "bur" ; WiFiClient WifiClient ; // MQTT Broker_Daten const char* mqttServer = "192.168.0.220" ; PubSubClient mqttClient( WifiClient) ; // Topic für mqtt //Topic char FlameSate[] ="flameState"; char Bewegung[]= "Bewegung" ; byte* payload; //Verbindung mit dem Broker herstellen void mqttConnect() { Serial.print("Verbindung zum MQTT_Server"); Serial.print( mqttServer); while(!mqttClient.connected()) { Serial.print("."); if (mqttClient.connect("ES")) { Serial.print("MQTT-VErbunden"); } else { Serial.print("Fehlgeschlagen, rc="); Serial.print(mqttClient.state()); Serial.println("erneuter Versuch in 5 Sec"); delay(5000); } mqttClient.subscribe(Bewegung); } } //Callback Nachrichten-Empfang (Subscribe) void callback( char* topic, byte* message, unsigned int length) { Serial.print("topic: ") ; Serial.print(topic) ; String str ; for (int i =0 ; i< length ; i++) { str += (char)message[i]; } Serial.print( "Nachrichtenempfang für topic: "); Serial.print(topic); Serial.print("Nachricht :"); Serial.println(str); } /*void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived on topic: "); Serial.println(topic); Serial.print("Payload: "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); if (strcmp(topic, FlameSate) == 0) { if (strcmp((char*)payload, "OK") == 0) { lcd.clear(); lcd.setCursor(0, 0); lcd.println("OK Feuer"); lcd.display(); } } else if (strcmp(topic, Bewegung) == 0) { if (strcmp((char*)payload, "OK") == 0) { lcd.clear(); lcd.setCursor(0, 0); lcd.println("OK Bewegung"); lcd.display(); } } } */ void setup() { lcd.begin(16, 2); // Wifi Verbindung Serial.begin(115200); Serial.println(); Serial.print("Verbingsaufbaun zu") ; Serial.print(ssid); WiFi.begin(ssid,password); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.print(""); Serial.println("Wifi connected"); Serial.print("IP Add:"); Serial.print(WiFi.localIP()); // Verbindung mit MQTT-Server mqttClient.setServer(mqttServer, 1883); mqttClient.setCallback(callback); mqttConnect(); } void loop() { if (!mqttClient.connected()) { mqttConnect(); } ///mqttClient.subscribe(FlameSate) ; lcd.display(); mqttClient.loop(); }
-
RE: Verbindung mit dem Mqtt_Server via iobroker
@djmarc75 Naja dadurch dass mein Board und mein Broker nicht im selben Netz waren haben sie sich nicht verbinden können. Warum ??? weiß ich noch nicht. Mir würde einfach vorgeschlagen mein Virtual_machine auf "Bridged mode" umzustellen damit die Beide im selben Netz läufen und das war's.
-
RE: Verbindung mit dem Mqtt_Server via iobroker
@bananajoe @MyioBroker Danke auf jeden Fall für all eure Tipps, die werde ich mir im Kopf behalten. Ich habe mein Problem mittlerweile schon lösen können.
-
RE: Verbindung mit dem Mqtt_Server via iobroker
@codierknecht
Okay vielen Dank für deinen Vorschlag. Das ist nämlich eine Projektaufgabe von der Hochschule deswegen muss ich es leider nur so machen. Allerdings werde ich mir mal Tasmota anschauen, ob es mir dabei hilft alles besser zu verstehen ?? Weiß ich nicht .... -
Verbindung mit dem Mqtt_Server via iobroker
Hiii zusammen !!!!!
Ich habe vor ein paar Tagen mit ioBroker angefangen. Ich habe den ioBroker auf ein Virtuelles Linux-Rechner installiert und habe da den mqtt_Adapter als Broker konfiguriert. Daneben wollte ich mit einem Microcontroller auf dem mqtt_server zugreifen aber leider klappt es nocht nicht. Ich habe wie folgt mein Server konfiguriert. Hat jemand schon Erfahrung damit ?? Vielleicht liegt es bei der mqtt_server IP_Address ? Ich habe ja schon Vieles versucht ohne Erfolg.Allerdings könnt ihr euch noch mein kleines Code anschauen
#include <Arduino.h> # include <WiFi.h> # include <PubSubClient.h> /*#include <Adafruit_Sensor.h> #include <DHT.h> #include <DHT_U.h> #define LED_PIN 12 #define DHTPIN 32 #define DHTTYPE DHT11 */ const char* ssid = "WiFI_ID" ; const char* password = "Wifi_passwd" ; WiFiClient WifiClient ; // MQTT Broker_Daten const char* mqttServer = "10.0.2.15" ; // Broker_Ip add PubSubClient mqttClient( WifiClient) ; long ZeitAlt = -9999; //Callback Nachrichten-Empfang (Subscribe) void callback( char* topic, byte* message, unsigned int length) { String str ; for (int i =0 ; i< length ; i++) { str += (char)message[i]; } Serial.print( "Nachrichtenempfang für topic: "); Serial.print(topic); Serial.print("Nachricht :"); Serial.println(str); } //Verbindung mit dem Broker herstellen void mqttConnect() { Serial.print("Verbindung zum MQTT_Server"); Serial.print( mqttServer); while(!mqttClient.connected()) { Serial.print("."); if (mqttClient.connect("ESP32Client")) { Serial.print("MQTT-VErbunden"); } else { Serial.print("Fehlgeschlagen, rc="); Serial.print(mqttClient.state()); Serial.println("erneuter Versuch in 5 Sec"); delay(5000); } } mqttClient.subscribe("test/esp32"); } void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial.println(); Serial.print("Verbingsaufbaun zu") ; Serial.print(ssid); WiFi.begin(ssid,password); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.print(""); Serial.println("Wifi connected"); Serial.print("IP Add:"); Serial.print(WiFi.localIP()); // Verbindung mit MQTT-Server mqttClient.setServer(mqttServer, 1883); mqttClient.setCallback(callback); mqttConnect(); } void loop() { // put your main code here, to run repeatedly: if(!mqttClient.connected()) { mqttConnect(); } mqttClient.loop(); if(millis()-ZeitAlt> 3000) { char txtString[20]; ZeitAlt= millis(); sprintf( txtString, "Zeitstempel %", millis()/1000); Serial.println(String("Versand MQTT-NAchricht:") + txtString); mqttClient.publish("test/esp32", txtString); } delay(200); }
MOD-EDIT: Code in code-tags gesetzt!