[Nightly 0.8.0-2803] Node-Blue / mosquitto: No PUBACK received

@sathya, ich bin dem Problem auf den Grund gekommen. :smiley:

Ich konnte es auf meine Heizungssteuerung eingrenzen, diese habe ich erst letztens wieder eingeschaltet, daher ist es nicht vorher aufgefallen. :wink:

Die folgende Logik aus der mqtt-out-node, Zeilen 98-106, verhält sich nicht so wie in der Hilfe beschrieben:

	std::string topic;
	auto messageIterator = message->structValue->find("topic");
	if(messageIterator != message->structValue->end()) topic = messageIterator->second->stringValue;
	else topic = _topic;

	bool retain;
	messageIterator = message->structValue->find("retain");
	if(messageIterator != message->structValue->end()) retain = messageIterator->second->booleanValue;
	else retain = _retain;

In der Dokumentation ist beschrieben, dass man topic/retain leer lassen soll, wenn man das topic/retain über die Message-Struktur setzen will. So wie ich das interpretiere, wird aber immer das topic aus der Message genommen, falls es vorhanden ist. Nur wenn in der Message kein topic ist, wird das aus der nodeinfo-Struktur genommen.

Der Code müsste meiner Ansicht nach so lauten. damit es wie in der Hilfe beschrieben steht funktioniert. Es fehlt noch eine Prüfung, ob in der Message der Topic gesetzt ist und etwas Fehlerhandling. :

	std::string topic;
	auto messageIterator = message->structValue->find("topic");
	auto settingsIterator = info->info->structValue->find("topic");
	if(settingsIterator != info->info->structValue->end()) topic = messageIterator->second->stringValue;
	else topic = _topic;

	bool retain;
	messageIterator = message->structValue->find("retain");
	settingsIterator = info->info->structValue->find("retain");
	if(settingsIterator != info->info->structValue->end()) retain = messageIterator->second->booleanValue;
	else retain = _retain;

Durch einen dummen Zufall war bei meiner Heizungssteuerung in einigen Fällen das topic = "" und genau das bringt die Konfigurationsnode zum Absturz und Verlust der Verbindung zum Broker. Alles was auch an dieser Konfigurationsnode hängt funktioniert dann ca. 10-20 Minuten nicht mehr.

2 Likes