Eerste deel van huis smart EV lader gereed. De EV laadpaal controller is gekoppeld aan de domotica controller (huis Smart Grid controller). De huis Smart Grid controller kan nu het laden van de EV beïnvloeden. In eerste instantie om te voorkomen dat de 25 Ampere huisaansluiting er uit gaat door overbelasting in combinatie met de slimme meter DSMR4. Later worden geavanceerde toepassingen toegevoegd als laden afhankelijk van de PV opbrengst en beprijzen per kwartier.
Mijn domotica (Smart Grid) systeem (Logic Machine v3) praat als basis KNX. De EV controller is te besturen met Modbus TCP.
Programma in LUA die alles bestuurd. Iemand nog verbeteringen laat het horen!
— init modbus on first script execution
if not mb then
require(‘luamodbus’)
mb = luamodbus.tcp()
mb:open(‘192.168.1.210’, 502)
mb:connect()
end
— sets slave ID to read/write data from/to
mb:setslave(180)
— read EV status read registers
r1, r2, r3, r4, r5, r6, r7, r8 =mb:readinputregisters(100, 8)
EV_status = r1
Proximity_charging_current = r2
Charge_time = (bit.lshift(r4, 16) + r3)/60
DIP_switch_configuration = r5
Firmware_version = bit.lshift(r7, 16) + r6
Error_codes = r8
grp.write(‘1/2/1’,EV_status)
grp.write(‘1/2/2’,Proximity_charging_current)
grp.write(‘1/2/3’,Charge_time)
grp.write(‘1/2/4’,DIP_switch_configuration)
grp.write(‘1/2/5’,Firmware_version)
grp.write(‘1/2/6’,Error_codes)
— read EV status read
r9 = mb:readdiscreteinputs(200)
r10 = mb:readdiscreteinputs(201)
r11 = mb:readdiscreteinputs(202)
r12 = mb:readdiscreteinputs(203)
r13 = mb:readdiscreteinputs(204)
r14 = mb:readdiscreteinputs(205)
r15 = mb:readdiscreteinputs(206)
r16 = mb:readdiscreteinputs(207)
Digital_input_EN = r9
Digital_input_XR = r10
Digital_input_LD = r11
Digital_input_ML = r12
Digital_input_CR = r13
Digital_output_LR = r14
Register_EN = r15
Register_DIG = r16
grp.write(‘1/2/7’,Digital_input_EN)
grp.write(‘1/2/8’,Digital_input_XR)
grp.write(‘1/2/9’,Digital_input_LD)
grp.write(‘1/2/10’,Digital_input_ML)
grp.write(‘1/2/11’,Digital_input_CR)
grp.write(‘1/2/12’,Digital_output_LR)
grp.write(‘1/2/13’,Register_EN)
grp.write(‘1/2/14’,Register_DIG)
— read/write status
Input_charging_current = grp.getvalue(‘1/2/16’)
mb:writeregisters(300, Input_charging_current)
r17 = mb:readregisters(300)
Actual_charging_current = r17
grp.write(‘1/2/15’,Actual_charging_current)