NEWS
MQTT ESP8266 Verbindung aufbauen
-
Nein in dem ESP Programm gibt es keine Web Oberfläsche.
Das Program ist ähnlich dem oben verlinkten esp8266-fast-led Programm.
So sehen da die Settings aus
// MQTT Broker settings
const char* mqtt_server = "192.160.xxx.xxx";
const int mqtt_port = 1883; // Change this if u don't use a SSL connection
const char* mqtt_user = "";
const char* mqtt_password = "";
const char* mqtt_topic = "/Licht/LedRinge";
const char* mqtt_clientid = "";und der so der Verbindungsaufbau:
//Mqtt Init
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
autoPlayTimeout = millis() + (autoPlayDurationSeconds * 1000);
}// Format is: command:value
// value has to be a number, except rgb commands
void callback(char* topic, byte* payload, unsigned int length) {
// handle message arrived
char tmp[length + 1];
strncpy(tmp, (char*)payload, length);
tmp[length] = '\0';
String data(tmp);void reconnectMqtt() {
while (!client.connected()) {
Serial.println("Attempting MQTT connection...");
if (client.connect(mqtt_clientid, mqtt_user, mqtt_password)) {
Serial.println("connected");
client.subscribe(mqtt_topic);
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}Also über den Umweg über Node Red funktioniert das schon ganz gut. Bis auf das Erstellen der Objekte.
Kann das sein das ich nach dem Erstellen die jeweilige Instanz noch aktualisieren muss? -
@danny_v1 said in MQTT ESP8266 Verbindung aufbauen:
Nein in dem ESP Programm gibt es keine Web Oberfläsche.
Das Program ist ähnlich dem oben verlinkten esp8266-fast-led Programm.
So sehen da die Settings aus
// MQTT Broker settings
const char* mqtt_server = "192.160.xxx.xxx";
const int mqtt_port = 1883; // Change this if u don't use a SSL connection
const char* mqtt_user = "";
const char* mqtt_password = "";
const char* mqtt_topic = "/Licht/LedRinge";
const char* mqtt_clientid = "";und der so der Verbindungsaufbau:
//Mqtt Init
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
autoPlayTimeout = millis() + (autoPlayDurationSeconds * 1000);
}// Format is: command:value
// value has to be a number, except rgb commands
void callback(char* topic, byte* payload, unsigned int length) {
// handle message arrived
char tmp[length + 1];
strncpy(tmp, (char*)payload, length);
tmp[length] = '\0';
String data(tmp);void reconnectMqtt() {
while (!client.connected()) {
Serial.println("Attempting MQTT connection...");
if (client.connect(mqtt_clientid, mqtt_user, mqtt_password)) {
Serial.println("connected");
client.subscribe(mqtt_topic);
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}Also über den Umweg über Node Red funktioniert das schon ganz gut. Bis auf das Erstellen der Objekte.
Kann das sein das ich nach dem Erstellen die jeweilige Instanz noch aktualisieren muss?Ja das kann sein.
Prüfe doch noch dein MQTT Server/Adapter. In deinen Listing sind keine Datem bei MQTT User und MQTT Passwort eingetragen. Das geht so, aber nur wenn im Adapter auch alles ohne User und Paasswort steht. Für Tests ok, sonst sehr unsicher.
-
Ja das werde ich auf jeden Fall machen, wenn es dann richtig in Betrieb genommen wird so zum rumspielen und testen ist es denk ich ohne User Login ok.
Aber danke für den Tipp!
-
Wenn du den MQTT Adapter startest wird der gelb?
-
@ticaki Ja der wird gelb und wenn ich mit der Maus drüber bleibe zeigt das Fenster auch bei verbunden wahr an.
-
@danny_v1 said in MQTT ESP8266 Verbindung aufbauen:
@ticaki Ja der wird gelb und wenn ich mit der Maus drüber bleibe zeigt das Fenster auch bei verbunden wahr an.
So sollte es aussehen.
-
ok verbunden und Lebenszeichen hab ich auf jeden Fall, bin mir nur nicht sicher ob der Client eingetragen ist. Da muss ich heute Abend mal schauen.
Danke schon mal!!!
-
@danny_v1
Setzte diese Variable bitte auf einen Wert. ClientID muss eindeutig sein.const char* mqtt_user = ""; const char* mqtt_password = ""; const char* mqtt_clientid = "";
Anschließen password und user auch im MQTT Adapter eintragen. Und SSL aus, falls es aktiviert ist.
EDIT: ist möglich das es an der ClientID alleine liegt.
-
Ah noch was vergessen:
laufen NodeRed und MQTT Server auf selben Rechner mit selbem Port?
-
Das mit der Client ID werde ich heute mal testen. NodeRed und MQTT Server laufen auf dem selben Raspberry den Port werde ich heute mal mal kontrollieren.
Das neu abgelegte Objekte im NodeRed Tab nicht sichtbar waren für "iobroker get" lag am Neustart der NodeRed Instanz.
Vielen Dank schon mal