ES8266 Ethernet/WiFi

Hallo,

ich benutze einen ESP8266 und möchte Variabel zwischen WiFi und Ethernet umschalten können.

Zusätzlich benutze ich PubSubclient für MQTT.

Wenn ich das ganze über #define mache, dann funktioniert es. Jedoch kann ich das ja dann später z.B. über einen Webserver nicht mehr umschalten, da ja das, was beim Build nicht #defined war vom compilen abgeschlossen war.

Hier das Beispiel:

define NetworkModeEthernet // 0 = WiFi 1; 1 = Ethernet

if not defined(NetworkModeEthernet)

WiFiClient wiFiClient ; PubSubClient client(mqttserverIP,mqttPort, wiFiClient);

endif

if defined(NetworkModeEthernet)

EthernetClient ethClient; PubSubClient client(mqttserverIP,mqttPort,ethClient);

endif

im rest vom code nutze ich die die client class.

also z.B. client.publish();

Wenn ich jetzt 2 classen von PubSubclient machen würde, würde es natürlich gehen, jedoch wäre das im Rest vom code sehr umständlich.

Gibt es irgendeine Möglichkeit das vernünftig "umschalten" zu können, so dass ich weiterhin nur 1 PubSubclient client class habe?

Gruß Fabi

Innerhalb des Sketches kannst du mit einer if-Abfrage oder per Switch-Case umschalten.

Poste den kompletten Sketch in Code-Tags, dann geht evtl. mehr. Und auch welchen ESP8266 du verwendest.

Hallo,

es ist ein NODEMCU AMICA.

also im moment sieht das ganze eigentlich so aus:

if not defined(NetworkModeEthernet)

WiFiClient ethClient ;

endif

if defined(NetworkModeEthernet)

EthernetClient ethClient;

endif

PubSubClient client(mqttserverIP,mqttPort,ethClient);

wenn ich jetzt aber die #if's durch normale if's ersetze, geht es nicht zum compilen, ist klar.

habt ihr mir einen Vorschlag hierfür?

Schonmal vielen Dank!

Gruß

Warum postest Du nicht, wie bereits vorgeschlagen, Deinen Sketch?

Gruß Tommy