Hallo Reto,
ich sehe ein grosses Problem: Innerhalb eines Interrupt-Handlers sollten keine Funktionen verwendet werden, die wiederum von Interrupts abhängen. Somit ist der Aufruf der publish()-Methode innerhalb von incurrent() wahrscheinlich der Grund für Deine Freezes. Setze ein Flag im Handler und reagiere im loop() darauf, das läuft über Wochen ohne Probleme.
Zusätzlich aufgefallen ist mir das hier:
char m1[50];
String(current_now).toCharArray(m1, String(current_now).length() + 1);
client.publish("user/strom/realtimecurrent", m1);
würde ich schreiben als:
char m1[50];
dtostrf(current_now, 49, 4, m1);
client.publish("user/strom/realtimecurrent", m1);
So ähnlich kommt es mehrfach in Deinem Code vor. Die neue Form ist nicht nur erheblich übersichtlicher, sie verzichtet auch auf Heap-Allokationen (auf dem ESP8266 weniger heikel als auf der AVR-Plattform) und ist deutlich schneller.