Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

Voorstel : Workshop rond (slim) laden.

This site may earn commission on affiliate links.
Leuk dat je er bij bent! Zien reikhalzend uit naar je bijdrage :rolleyes:
Ben er bij! Gaat toch lukken :) Even wat geschoven in de Agenda.

- - - Updated - - -

Neem het in overweging... Is er ook iemand die beetje handig is met monteren? En dan we hebben misschien ook nog iets moois achter de hand voor de verhinderden....
Zoals gemeld kan ik helaas ook niet. :) Gaat iemand het filmen oid?
 
Ik kom met alle plezier een keer naar Vlaanderen voor mijn presentaties. Mocht Wido geen tijd kunnen vrijmaken kan ik ook zijn deel invullen, maar er zijn er hier op het Benelux forum meedere die dat zeker ook goed kunnen.

Als ik tijd heb wil ik er graag bij zijn. Moet alleen ruim van te voren een plekje in de overvolle agenda maken.


Ik heb gisteren wel weer een nieuwe Smart EVSE gekocht om mijn Open EVSE thuis toch écht maar eens te vervangen.
 
Beste Gerard,

Hartelijk dank voor de workshop rond slim laden. Je hebt een complexe materie op een Jip en Janneke manier weten over te brengen. Dat is erg knap. Wij hebben onze Tesla al sinds afgelopen vrijdag en ik had een offerte aangevraagd voor de aanleg van een CEE stopcontact. Die specs worden nu wel degelijk aangepast....We hebben samen kort gesproken over een van de Smart "laders" die jij nog hebt en daar heb ik interesse in.Mogelijk kunnen we daar contact over hebben.

Met vriendelijke groet,

Marco
 
Kon er vorige keer helaas niet bij zijn, maar ik sta op het punt mijn huidige Keba te vervangen door een nieuwer model met smart charge ondersteuning. Dit omdat we thuis een bubbelbad krijgen en dan wordt het op een 3x25A wel erg krapjes als er vanalles aan staat en de auto moet ook nog eens geladen worden. En verhogen van de aansluiting vind ik zonde geld.

Nu heb ik wel een beetje verstand van programmeren en bepaalde basics maar ik ben meer van het copy/paste en trial and error principe ;)
Mijn vraag: Heeft er iemand een voorbeeld van een stukje code waarmee het verbruik in de meterkast gemonitord wordt en de lader een signaal te stuurt hoeveel A hij mag afnemen?
Of waar staat zoiets te vinden, heb al wat gezocht maar kan dat niet echt vinden.

(heb momenteel al een werkende P1 meter maar dat zal wss niet voldoende zijn omdat die momenteel nog niet per fase kan meten, dus ook het kunnen meten van elke fase in meterkast komt bij dit project)
 
Kon er vorige keer helaas niet bij zijn, maar ik sta op het punt mijn huidige Keba te vervangen door een nieuwer model met smart charge ondersteuning. Dit omdat we thuis een bubbelbad krijgen en dan wordt het op een 3x25A wel erg krapjes als er vanalles aan staat en de auto moet ook nog eens geladen worden. En verhogen van de aansluiting vind ik zonde geld.

Nu heb ik wel een beetje verstand van programmeren en bepaalde basics maar ik ben meer van het copy/paste en trial and error principe ;)
Mijn vraag: Heeft er iemand een voorbeeld van een stukje code waarmee het verbruik in de meterkast gemonitord wordt en de lader een signaal te stuurt hoeveel A hij mag afnemen?
Of waar staat zoiets te vinden, heb al wat gezocht maar kan dat niet echt vinden.

(heb momenteel al een werkende P1 meter maar dat zal wss niet voldoende zijn omdat die momenteel nog niet per fase kan meten, dus ook het kunnen meten van elke fase in meterkast komt bij dit project)


Ben geen programmeur maar zelf gemaakt.
P1 slimme meter gaat naar telnetservertje, verder transport over normale UTP netwerk. Lader communiceert over Modbus TCP/IP. Domoticacontrolller zet alles om naar KNX waarmee alles gevisualiseerd en bestuurd wordt.
Taal is LUA.

Slimme meter code
-- TCP/Telnet Client with always open connection
--------------------------------------------------------------------------------
local host, port = "192.168.1.211", 8899
local socket = require("socket")
local tcp = assert(socket.tcp())
tcp:connect(host, port)
tcp:settimeout(10)
-- Keep connection alive until "status = closed"
while true do
--Get replies from controller
local s, status, partial = tcp:receive()
--Check if connection status is not closed
if status == "closed" then break end
--Check if reply has a value
if s then

-- Meter Type
grp.updatec('1/2/20',"/KFM5KAIFA-METER")

-- Version
Version="1-3:0.2.8(" -- OBIS code Version
if string.len(s) >= string.len(Version) then
Waarde = string.sub(s, 1, string.len(Version))
if Waarde == Version then
Waarde = string.sub(s,11)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/21', Waarde) -- 14 Byte Object
end
end

-- DateTime
DateTime="0-0:1.0.0(" -- OBIS code DateTime
if string.len(s) >= string.len(DateTime) then
Waarde = string.sub(s, 1, string.len(DateTime))
if Waarde == DateTime then
Waarde = string.sub(s,11)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/22', Waarde) -- 14 Byte Object
end
end

-- ID
ID="0-0:96.1.1(" -- OBIS code ID
if string.len(s) >= string.len(ID) then
Waarde = string.sub(s, 1, string.len(ID))
if Waarde == ID then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/23', Waarde) -- 14 Byte Object
end
end

-- Nachtlevering
NachtLevering="1-0:1.8.1(" -- OBIS code NachtLevering
if string.len(s) >= string.len(NachtLevering) then
Waarde = string.sub(s, 1, string.len(NachtLevering))
if Waarde == NachtLevering then
Waarde = string.sub(s,11)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 5 -- = *kWh)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/24', Waarde) -- 14 Byte Object
end
end

-- Daglevering
DagLevering="1-0:1.8.2(" -- OBIS code DagLevering
if string.len(s) >= string.len(DagLevering) then
Waarde = string.sub(s, 1, string.len(DagLevering))
if Waarde == DagLevering then
Waarde = string.sub(s,11)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 5 -- = *kWh)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/25', Waarde) -- 14 Byte Object
end
end

-- NachtTeruglevering
NachtTerugLevering="1-0:2.8.1(" -- OBIS code NachtTerugLevering
if string.len(s) >= string.len(NachtTerugLevering) then
Waarde = string.sub(s, 1, string.len(NachtTerugLevering))
if Waarde == NachtTerugLevering then
Waarde = string.sub(s,11)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 5 -- = *kWh)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/26', Waarde) -- 14 Byte Object
end
end

-- DagTeruglevering
DagTerugLevering="1-0:2.8.2(" -- OBIS code DagTerugLevering
if string.len(s) >= string.len(DagTerugLevering) then
Waarde = string.sub(s, 1, string.len(DagTerugLevering))
if Waarde == DagTerugLevering then
Waarde = string.sub(s,11)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 5 -- = *kWh)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/27', Waarde) -- 14 Byte Object
end
end

-- TariefIndicator
TariefIndicator="0-0:96.14.0(" -- OBIS code TariefIndicator
if string.len(s) >= string.len(TariefIndicator) then
Waarde = string.sub(s, 1, string.len(TariefIndicator))
if Waarde == TariefIndicator then
Waarde = string.sub(s,13)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
if Waarde == 0002 then Waarde = 1
end
if Waarde == 0001 then Waarde = 0
end
grp.updatec('1/2/28', Waarde) -- Boolean Object
end
end

-- LeveringPower
LeveringPower="1-0:1.7.0(" -- OBIS code LeveringPower
if string.len(s) >= string.len(LeveringPower) then
Waarde = string.sub(s, 1, string.len(LeveringPower))
if Waarde == LeveringPower then
Waarde = string.sub(s,11)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 4 -- = *kW)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/29', Waarde) -- 14 Byte Object
end
end

-- TerugLeveringPower
TerugLeveringPower="1-0:2.7.0(" -- OBIS code TerugLeveringPower
if string.len(s) >= string.len(TerugLeveringPower) then
Waarde = string.sub(s, 1, string.len(TerugLeveringPower))
if Waarde == TerugLeveringPower then
Waarde = string.sub(s,11)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 4 -- = *kW)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/30', Waarde) -- 14 Byte Object
end
end

-- ThresholdPower
ThresholdPower="0-0:17.0.0(" -- OBIS code ThresholdPower
if string.len(s) >= string.len(ThresholdPower) then
Waarde = string.sub(s, 1, string.len(ThresholdPower))
if Waarde == ThresholdPower then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 4 -- = *kW)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/31', Waarde) -- 14 Byte Object
end
end
-- Switch
Switch="0-0:96.3.10(" -- OBIS code Switch
if string.len(s) >= string.len(Switch) then
Waarde = string.sub(s, 1, string.len(Switch))
if Waarde == Switch then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/32', Waarde) -- Boolean Object
end
end

-- PowerFailures
PowerFailures="0-0:96.7.21(" -- OBIS code PowerFailures
if string.len(s) >= string.len(PowerFailures) then
Waarde = string.sub(s, 1, string.len(PowerFailures))
if Waarde == PowerFailures then
Waarde = string.sub(s,13)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/33', Waarde) -- 14 Byte Object
end
end

-- LongPowerFailures
LongPowerFailures="0-0:96.7.9(" -- OBIS code LongPowerFailures
if string.len(s) >= string.len(LongPowerFailures) then
Waarde = string.sub(s, 1, string.len(LongPowerFailures))
if Waarde == LongPowerFailures then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/34', Waarde) -- 14 Byte Object
end
end

-- PowerFailuresEventLog
PowerFailuresEventLog="1-0:99.97.0(" -- OBIS code PowerFailuresEventLog
if string.len(s) >= string.len(PowerFailuresEventLog) then
Waarde = string.sub(s, 1, string.len(PowerFailuresEventLog))
if Waarde == PowerFailuresEventLog then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 0 -- =
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/35', Waarde) -- 14 Byte Object
end
end

-- VoltageSagsL1
VoltageSagsL1="1-0:32.32.0(" -- OBIS code VoltageSagsL1
if string.len(s) >= string.len(VoltageSagsL1) then
Waarde = string.sub(s, 1, string.len(VoltageSagsL1))
if Waarde == VoltageSagsL1 then
Waarde = string.sub(s,13)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/36', Waarde) -- 14 Byte Object
end
end

-- VoltageSagsL2
VoltageSagsL2="1-0:52.32.0(" -- OBIS code VoltageSagsL2
if string.len(s) >= string.len(VoltageSagsL2) then
Waarde = string.sub(s, 1, string.len(VoltageSagsL2))
if Waarde == VoltageSagsL2 then
Waarde = string.sub(s,13)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/37', Waarde) -- 14 Byte Object
end
end

-- VoltageSagsL3
VoltageSagsL3="1-0:72.32.0(" -- OBIS code VoltageSagsL3
if string.len(s) >= string.len(VoltageSagsL3) then
Waarde = string.sub(s, 1, string.len(VoltageSagsL3))
if Waarde == VoltageSagsL3 then
Waarde = string.sub(s,13)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/38', Waarde) -- 14 Byte Object
end
end

-- VoltageSwelsL1
VoltageSwelsL1="1-0:32.36.0(" -- OBIS code VoltageSwelsL1
if string.len(s) >= string.len(VoltageSwelsL1) then
Waarde = string.sub(s, 1, string.len(VoltageSwelsL1))
if Waarde == VoltageSwelsL1 then
Waarde = string.sub(s,13)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/39', Waarde) -- 14 Byte Object
end
end

-- VoltageSwelsL2
VoltageSwelsL2="1-0:52.36.0(" -- OBIS code VoltageSwelsL2
if string.len(s) >= string.len(VoltageSwelsL2) then
Waarde = string.sub(s, 1, string.len(VoltageSwelsL2))
if Waarde == VoltageSwelsL2 then
Waarde = string.sub(s,13)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/40', Waarde) -- 14 Byte Object
end
end

-- VoltageSwelsL3
VoltageSwelsL3="1-0:72.36.0(" -- OBIS code VoltageSwelsL3
if string.len(s) >= string.len(VoltageSwelsL3) then
Waarde = string.sub(s, 1, string.len(VoltageSwelsL3))
if Waarde == VoltageSwelsL3 then
Waarde = string.sub(s,13)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/41', Waarde) -- 14 Byte Object
end
end

-- TekstMessageCodes
TekstMessageCodes="0-0:96.13.1(" -- OBIS code TekstMessageCodes
if string.len(s) >= string.len(TekstMessageCodes) then
Waarde = string.sub(s, 1, string.len(TekstMessageCodes))
if Waarde == TekstMessageCodes then
Waarde = string.sub(s,13)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/42', Waarde) -- 14 Byte Object
end
end

-- TekstMessage
TekstMessage="0-0:96.13.0(" -- OBIS code TekstMessage
if string.len(s) >= string.len(TekstMessage) then
Waarde = string.sub(s, 1, string.len(TekstMessage))
if Waarde == TekstMessage then
Waarde = string.sub(s,13)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 1 -- = )
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/43', Waarde) -- 14 Byte Object
end
end

-- AmpereL1
AmpereL1="1-0:31.7.0(" -- OBIS code AmpereL1
if string.len(s) >= string.len(AmpereL1) then
Waarde = string.sub(s, 1, string.len(AmpereL1))
if Waarde == AmpereL1 then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 3 -- = *A)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/44', Waarde) -- 14 Byte Object
end
end

-- AmpereL2
AmpereL2="1-0:51.7.0(" -- OBIS code AmpereL2
if string.len(s) >= string.len(AmpereL2) then
Waarde = string.sub(s, 1, string.len(AmpereL2))
if Waarde == AmpereL2 then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 3 -- = *A)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/45', Waarde) -- 14 Byte Object
end
end

-- AmpereL3
AmpereL3="1-0:71.7.0(" -- OBIS code AmpereL3
if string.len(s) >= string.len(AmpereL3) then
Waarde = string.sub(s, 1, string.len(AmpereL3))
if Waarde == AmpereL3 then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 3 -- = *A)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/46', Waarde) -- 14 Byte Object
end
end

-- PowerLeveringL1
PowerLeveringL1="1-0:21.7.0(" -- OBIS code PowerLeveringL1
if string.len(s) >= string.len(PowerLeveringL1) then
Waarde = string.sub(s, 1, string.len(PowerLeveringL1))
if Waarde == PowerLeveringL1 then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 4 -- = *kW)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/47', Waarde) -- 14 Byte Object
end
end

-- PowerLeveringL2
PowerLeveringL2="1-0:41.7.0(" -- OBIS code PowerLeveringL2
if string.len(s) >= string.len(PowerLeveringL2) then
Waarde = string.sub(s, 1, string.len(PowerLeveringL2))
if Waarde == PowerLeveringL2 then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 4 -- = *kW)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/48', Waarde) -- 14 Byte Object
end
end

-- PowerLeveringL3
PowerLeveringL3="1-0:61.7.0(" -- OBIS code PowerLeveringL3
if string.len(s) >= string.len(PowerLeveringL3) then
Waarde = string.sub(s, 1, string.len(PowerLeveringL3))
if Waarde == PowerLeveringL3 then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 4 -- = *kW)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/49', Waarde) -- 14 Byte Object
end
end

-- PowerTerugLeveringL1
PowerTerugLeveringL1="1-0:22.7.0(" -- OBIS code PowerTerugLeveringL1
if string.len(s) >= string.len(PowerTerugLeveringL1) then
Waarde = string.sub(s, 1, string.len(PowerTerugLeveringL1))
if Waarde == PowerTerugLeveringL1 then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 4 -- = *kW)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/50', Waarde) -- 14 Byte Object
end
end

-- PowerTerugLeveringL2
PowerTerugLeveringL2="1-0:42.7.0(" -- OBIS code PowerTerugLeveringL2
if string.len(s) >= string.len(PowerTerugLeveringL2) then
Waarde = string.sub(s, 1, string.len(PowerTerugLeveringL2))
if Waarde == PowerTerugLeveringL2 then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 4 -- = *kW)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/51', Waarde) -- 14 Byte Object
end
end

-- PowerTerugLeveringL3
PowerTerugLeveringL3="1-0:62.7.0(" -- OBIS code PowerTerugLeveringL3
if string.len(s) >= string.len(PowerTerugLeveringL3) then
Waarde = string.sub(s, 1, string.len(PowerTerugLeveringL3))
if Waarde == PowerTerugLeveringL3 then
Waarde = string.sub(s,12)
LengteTotaal = string.len(Waarde)
LengteWaarde = LengteTotaal - 4 -- = *kW)
Waarde = string.sub(Waarde, 1, LengteWaarde)
grp.updatec('1/2/52', Waarde) -- 14 Byte Object
end
end

--Powertotaal
Powertotaal = ((grp.getvalue('1/2/29')) - (grp.getvalue('1/2/30'))) * 1000
grp.updatec('1/2/53', Powertotaal) --
end
end
tcp:close()




Autolader met regeling code

-- init modbus on first script execution
-- if not mb then
require('luamodbus')
mb = luamodbus.tcp()
mb:eek:pen('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.updatec('1/2/1',EV_status, dt.uint8)
grp.updatec('1/2/2',Proximity_charging_current, dt.uint8)
grp.updatec('1/2/3',Charge_time, dt.uint16)
grp.updatec('1/2/4',DIP_switch_configuration, dt.uint8)
grp.updatec('1/2/5',Firmware_version, dt.uint16)
grp.updatec('1/2/6',Error_codes, dt.uint8)
-- 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.updatec('1/2/7',Digital_input_EN, dt.bool)
grp.updatec('1/2/8',Digital_input_XR, dt.bool)
grp.updatec('1/2/9',Digital_input_LD, dt.bool)
grp.updatec('1/2/10',Digital_input_ML, dt.bool)
grp.updatec('1/2/11',Digital_input_CR, dt.bool)
grp.updatec('1/2/12',Digital_output_LR, dt.bool)
grp.updatec('1/2/13',Register_EN, dt.bool)
grp.updatec('1/2/14',Register_DIG, dt.bool)
-- read/write status
AmpereL1 = tonumber(grp.getvalue('1/2/44'))
AmpereL2 = tonumber(grp.getvalue('1/2/45'))
AmpereL3 = tonumber(grp.getvalue('1/2/46'))
Input_charging_current = grp.getvalue('1/2/16')
Efficient_laden = grp.getvalue('1/2/17')
MaxAmp = 25
MinAmp = 5
Laden = 67
Maxlaad = 20
if (AmpereL1 > MaxAmp or AmpereL2 > MaxAmp or AmpereL3 > MaxAmp) and (Input_charging_current > MinAmp) then
Input_charging_current = (Input_charging_current - 1)
end
if (Input_charging_current < Maxlaad) and (AmpereL1 < MaxAmp and AmpereL2 < MaxAmp and AmpereL3 < MaxAmp) then
Input_charging_current = (Input_charging_current + 1)
end
if Efficient_laden and Input_charging_current > 16 then
Input_charging_current = 16
end
if EV_status ~= Laden then
Input_charging_current = 6
end
grp.updatec('1/2/16',Input_charging_current)
mb:writeregisters(300, Input_charging_current)
r17 = mb:readregisters(300)
Actual_charging_current = r17
grp.updatec('1/2/15',Actual_charging_current, dt.uint8)
mb:close()
 
Thanks voor de info!
Omdat ik al een alu zuil met betonanker voor een Keba heb staan denk ik dat ik het volgende ga doen:
1) Nieuw model Keba P20 bestellen en de oude 2e hands verkopen.
2) Een smart charge oplossing dmv openhab of edl/openenergymonitor toepassen, beide kunnen namelijk samen met de Keba P20 smart chargen.
Iemand anders nog alternatieven behalve de twee bovengenoemde?
 
Thanks voor de info!
Omdat ik al een alu zuil met betonanker voor een Keba heb staan denk ik dat ik het volgende ga doen:
1) Nieuw model Keba P20 bestellen en de oude 2e hands verkopen.
2) Een smart charge oplossing dmv openhab of edl/openenergymonitor toepassen, beide kunnen namelijk samen met de Keba P20 smart chargen.
Iemand anders nog alternatieven behalve de twee bovengenoemde?
Je kan natuurlijk ook de Maxem charger van Cohere gebruiken in combinatie met de Keba.