connect method
Future<void>
connect(
)
override
Implementation
@override
Future<void> connect() async {
mqtt.onConnected = onConnected;
mqtt.onDisconnected = onDisconnected;
mqtt.onAutoReconnect = onAutoReconnect;
mqtt.onAutoReconnected = onAutoReconnected;
_log.fine("Connecting to $server:$port");
try {
await mqtt.connect(username, password);
} on NoConnectionException catch (e) {
_log.warning("connect() error: $e");
mqtt.disconnect();
throw ConnectError(e.toString());
} on SocketException catch (e) {
_log.warning("connect() error: $e");
mqtt.disconnect();
throw ConnectError(e.toString());
}
// stream farm messages
_mqttMessageSubscription =
mqtt.updates!.listen((List<MqttReceivedMessage<MqttMessage?>> packets) {
for (final received in packets) {
final msg = received.payload as MqttPublishMessage;
String? data;
try {
data = utf8.decode(msg.payload.message);
_log.fine("received mqtt message on '${received.topic}': $data");
} on FormatException catch (e) {
_log.severe(
"Error parsing mqtt message on '${received.topic}': ${msg.payload.message}");
}
if (data != null) {
_messages.add(
FarmMessage(received.topic, data, retained: msg.header!.retain));
}
}
});
}