Even een update, terwijl het over het weekend goed heeft gewerkt en de zekering er niet is uitgeslagen.
De 3 metingen van de RPICT4V3 worden verstuurd via MQTT naar de MQTT broker. Node-Red leest deze broker uit, en uit de 3 selecteer ik het maximum. Dat maximum stuur ik naar een functie, en in die functie bereken ik het vermogen dat ie mag toewijzen in ampere:
Ik bereken dus het gebruikte amperage + een buffer van 4A. Stel dat dat boven de 20 uitkomt, kom ik een negatief freeAmpere uit, waardoor ik assignedAmpere verminder met het negatief freeAmpere. Zo niet, wordt assignedAmpere het totaal van wat ik al had toegewezen + freeAmpere min 1, kwestie van een buffer te houden.
En dan formatteer ik het eindresultaat met een duur van 300 seconden (=5 minuten) naar de TWC. Stel dat er geen informatie meer komt, wordt het niveau voor 5 minuten behouden en schakelt ie dan over naar zijn normale instelling van 10A 's avonds of 6A overdag (manueel schedule). Maar normaal gezien krijgt ie een seconde later al een nieuwe meting dus doet ie een refresh van weer 5 minuten.
De TWCManager luistert naar de MQTT broker en krijgt zo de signalen van Node-Red om de instelling aan te passen.
TWCManager belooft ook om van MQTT zelf aan te geven hoeveel amperage verbruikt wordt - zodat je nog accurater kan berekenen hoeveel vermogen er vrij moet blijven voor andere gebruikers - maar die implementatie lijkt (nog) niet te werken.
Logisch schema:
Node-RED kan je inderdaad vervangen door een Python script, en de MQTT broker, Node-RED, TWCManager en zelfs RPICT4V3 zou je op 1 enkele Raspberry Pi kunnen draaien (maar heb je lange kabeltjes nodig). Andere CT oplossingen die MQTT gebruiken zou je ook kunnen gebruiken.
De 3 metingen van de RPICT4V3 worden verstuurd via MQTT naar de MQTT broker. Node-Red leest deze broker uit, en uit de 3 selecteer ik het maximum. Dat maximum stuur ik naar een functie, en in die functie bereken ik het vermogen dat ie mag toewijzen in ampere:
JavaScript:
usedAmpere = parseInt(msg.payload/230) + 4;
freeAmpere = 20 - usedAmpere;
if (freeAmpere < 1) {
assignedAmpere = assignedAmpere + freeAmpere;
} else {
assignedAmpere = usedAmpere + freeAmpere - 1;
}
//assignedAmpere = 10;
msg.payload = assignedAmpere + ",300";
msg.topic = "TWC/control/chargeNow";
return msg;
Ik bereken dus het gebruikte amperage + een buffer van 4A. Stel dat dat boven de 20 uitkomt, kom ik een negatief freeAmpere uit, waardoor ik assignedAmpere verminder met het negatief freeAmpere. Zo niet, wordt assignedAmpere het totaal van wat ik al had toegewezen + freeAmpere min 1, kwestie van een buffer te houden.
En dan formatteer ik het eindresultaat met een duur van 300 seconden (=5 minuten) naar de TWC. Stel dat er geen informatie meer komt, wordt het niveau voor 5 minuten behouden en schakelt ie dan over naar zijn normale instelling van 10A 's avonds of 6A overdag (manueel schedule). Maar normaal gezien krijgt ie een seconde later al een nieuwe meting dus doet ie een refresh van weer 5 minuten.
De TWCManager luistert naar de MQTT broker en krijgt zo de signalen van Node-Red om de instelling aan te passen.
TWCManager belooft ook om van MQTT zelf aan te geven hoeveel amperage verbruikt wordt - zodat je nog accurater kan berekenen hoeveel vermogen er vrij moet blijven voor andere gebruikers - maar die implementatie lijkt (nog) niet te werken.
Logisch schema:
Node-RED kan je inderdaad vervangen door een Python script, en de MQTT broker, Node-RED, TWCManager en zelfs RPICT4V3 zou je op 1 enkele Raspberry Pi kunnen draaien (maar heb je lange kabeltjes nodig). Andere CT oplossingen die MQTT gebruiken zou je ook kunnen gebruiken.