   ota = true;
 }
 
+String DisplayIP4Address(IPAddress address)
+{
+  return String(address[0]) + "." +
+         String(address[1]) + "." +
+         String(address[2]) + "." +
+         String(address[3]);
+}
+String connectionDetailsString() {
+  return "Wired Ethernet: " + ETH.macAddress() +
+         ", IPv4: " + DisplayIP4Address(ETH.localIP()) + ", " +
+         ((ETH.fullDuplex()) ? "full" : "half") + "-duplex, " +
+         String(ETH.linkSpeed()) + " Mbps.";
+}
+
 void WiFiEvent(WiFiEvent_t event)
 {
   switch (event) {


PololuStepper stepper = PololuStepper(STEPPER_STEP, STEPPER_DIR, STEPPER_ENABLE);


const char mqtt_host[] = "space.vijn.org";
const unsigned short mqtt_port = 1883;


      Serial.printf("Unknown event %d\n", event);
      break;
  }
}

volatile boolean irqCardSeen = false;
