knolleary / pubsubclient

A client library for the Arduino Ethernet Shield that provides support for MQTT.
http://pubsubclient.knolleary.net/
MIT License
3.82k stars 1.47k forks source link

PubSubClient with 2 clients #931

Closed mikeme2009 closed 2 years ago

mikeme2009 commented 2 years ago

Hi

I need to declare PubSubClient depending on a pin status. If status is 1 I will use PubSubClient mqttClient(ethClient), if pin= 0 PubSubClient mqttClient(wifiClient). How can I do that? I tried: WiFiClient wifiClient; EthernetClient ethClient; PubSubClient mqttClient(digitalRead(22) == 0 ? wifiClient : ethClient); - But error: no matching function for call to 'PubSubClient::PubSubClient(int)'

Thanks

knolleary commented 2 years ago

You can se the setClient function to set which network client the library uses as part of the setup() function:

Something like this:

WiFiClient wifiClient;
EthernetClient ethClient;
PubSubClient mqttClient;

...

void setup() {
    if (digitalRead(22) == 0) {
        mqttClient.setClient(wifiClient);
    } else {
        mqttClient.setClient(ethClient);
    }
}
mikeme2009 commented 2 years ago

It worked! Thank you