Ich nehme einen TCRT5000. Die Idee, nur die Umdrehungen zu zählen, hatte ich auch gerade. Ist einfacher und genauer. Nur funktioniert es nicht.
Hier der Code:
unsigned long Stromumdrehungen;
float StromKwhSeitBoot;
loop() {
if (debouncerStrom.read()==1) {
if (StromAlreadyCounted == false) {
Stromumdrehungen += 1;
if (Stromumdrehungen > 0) {
StromKwhSeitBoot = Stromumdrehungen / 75;
Stromzaehler = StromzaehlerAusIoBroker + StromKwhSeitBoot;
Serial.print("StromKwhSeitBoot: ");
Serial.print(StromKwhSeitBoot,8);
Serial.print(" Stromumdrehungen: ");
Serial.println(Stromumdrehungen);
}
if (StromvortragGesetzt == true) {
SendeStromzaehler = true;
}
}
}
}
Ich hole mir den letzten Zählerstand aus ioBroker und addiere die Umdrehungen seit Boot des NodeMCU hinzu. Die Summe schicke ich dann wieder zum ioBroker. Funktioniert an sich auch, aber
Meine Testausgaben sehen im Moment so aus:
StromKwhSeitBoot: 0.00000000 Stromumdrehungen: 74
StromKwhSeitBoot: 1.00000000 Stromumdrehungen: 75
Aus irgendeinem Grund werden keine Nachkommastellen berechnet.