webanizer/BlockPro

Quiz wird gestartet, aber neue Zählerstände werden nicht gleichzeitig gelesen

Closed this issue · 1 comments

Status Quo:
In der ersten Quiz-Runde werden Zählerdaten an die Quiz-Funktion übergeben und erfolgreich vom Gewinner ins IPFS und die Doichain geschrieben.
Die zweite Quiz-Runde wird gestartet. SmlToIpfs sollte gemäß dem festgelegten Intervall in den settings einen neuen Zählerstand ablesen, was nicht der Fall ist.

Soll:
Es sollte nach 30 Sekunden ein Zählerstand gelesen werden.

Issue war kein Bug. Das Problem war, dass setInterval in den options von smartMeterObis in Sekunden und nicht Millisekunden gesetzt wird. Dafür wird setTimout der sleep Funktion im Quiz in Millisekunden angegeben. 30.000 in den options musste lediglich durch 30 ersetzt werden, sodass die Intervalle synchron laufen und der Zählerstand gelesen wird, wenn eine neue Quizrunde beginnt.

Weitere fixes:

  • Ursprünglich wurde zum Testen das Docker Image von stallingerl verwendet. Das glibc war dort mit 2.27 unterhalb der benötigten 2.28, mit der SmartMeterObis gebaut wurde. Deshalb habe ich im Dockerfile und der docker-compose.yml stattdessen das latest debian buster mit node 14 eingebaut

  • ein weiterer Bug lag darin, dass cid.toString() [object object] zurück gibt. Mit cid.path wird die Cid in gewünschter string Form zurückgegeben

  • durch den Umbau von js zu ES 6 fehlte in determineWinner die Deklaration für die Variablen winnerPeerId und diffNeu

  • smlToIpfs war im ursprünglichen Projekt Consolinno2IPFs in einem eigenen file. Dieses wurde in smartMeterInit integriert, welche nun von quiz gestartet wird.

  • der letzte Bug, der zu fixen war, bestand darin, dass in der raetsler Funktion der array receivedZählerstand am Ende einer Quizrunde nicht geleert wurde. So wurden die alten Zählerstände mit in die neue Runde genommen und wieder ins IPFS gespeichert.