-
-
Notifications
You must be signed in to change notification settings - Fork 32
Lua
Script capability allows custom functionality of controller, is based on Lua.
Script settings are in web interface, when you can enable/disable this feature and browsing print output.
In Files web interface, you can edit Lua sources. At startup file /data/init.lua
will be executed.
Lua sources also can be edited through WebDAV, just open in file browser url: dav://<IP>/dav/data/
. I recommended this way, because you can use favorite Lua IDE...
In addition to the standard Lua functionality, there is additional modules for controlling charging controller:
Root level module, for controlling charging controller. Globally loaded, not need require this module.
Constant | Description |
---|---|
evse.STATEA | State A |
evse.STATEB1 | State B1 |
evse.STATEB2 | State B2 |
evse.STATEC1 | State C1 |
evse.STATEC2 | State C2 |
evse.STATED1 | State D1 |
evse.STATED2 | State D2 |
evse.STATEE | State E |
evse.STATEF | State F |
evse.ERRPILOTFAULTBIT | Error pilot_fault |
evse.ERRDIODESHORTBIT | Error diode_short |
evse.ERRLOCKFAULTBIT | Error lock_fault |
evse.ERRUNLOCKFAULTBIT | Error unlock_fault |
evse.ERRRCMTRIGGEREDBIT | Error rcm_triggered |
evse.ERRRCMSELFTESTFAULTBIT | Error rcm_selftest_fault |
evse.ERRTEMPERATUREHIGHBIT | Error temperature_high |
evse.ERRTEMPERATUREFAULTBIT | Error temperature_fault |
Function | Signature | Description |
---|---|---|
evse.getstate | ():number |
Get state, possible values evse.STATE...
|
evse.geterror | ():number |
Get error bits, possible values evse.ERR... bits |
evse.getenabled | ():boolean |
Get charging enabled |
evse.setenabled | (boolean):nil |
Set charging enabled |
evse.getavailable | ():boolean |
Get controller available |
evse.setavailable | (boolean):nil |
Set controller available |
evse.getchargingcurrent | ():number |
Get charging current in A*10 |
evse.setchargingcurrent | (number):nil |
Set charging current in A*10 |
evse.getpower | ():number |
Get charging power in W |
evse.getchargingtime | ():number |
Get charging time in s |
evse.getsessiontime | ():number |
Get session time in s |
evse.getconsumption | ():number |
Get consumption in Wh |
evse.getvoltage | ():number,number,number |
Get voltages in V |
evse.getcurrent | ():number,number,number |
Get current in A |
evse.getlowtemperature | ():number |
Get low temperature |
evse.gethightemperature | ():number |
Get high temperature |
evse.adddriver | (table):nil |
Add driver |
Driver is table instance which has predefined event methods:
-
loop
: called every script task loop, approx 50ms -
every100ms
: called every 100ms -
every250ms
: called every 250ms -
every1s
: called every second
Example:
local mydriver = {
every1s = function()
evse.setenabled(aux.read("IN1"))
end
}
evse.adddriver(mydriver)
This module providing values from board.cfg
. Not globally loaded, need require this module.
Constant | Description |
---|---|
boardconfig.ENERGYMETERNONE | Energy meter none |
boardconfig.ENERGYMETERCUR | Energy meter current |
boardconfig.ENERGYMETERCURVLT | Energy meter current and voltage |
boardconfig.SERIALNONE | Serial none |
boardconfig.SERIALUART | Serial UART |
boardconfig.SERIALRS485 | Serial RS485 |
Value | Description |
---|---|
boardconfig.devicename | Name of the device (string) |
boardconfig.proximity | Has PP detection (bool) |
boardconfig.socketlock | Has socket lock (bool) |
boardconfig.rcm | Has residual current monitor (bool) |
boardconfig.energymeter | Energy meter (int), possible values boardconfig.ENERGYMETER...
|
boardconfig.energymeterthreephases | Is energy meter three phases (bool) |
boardconfig.serial1 | Type of serial 1 (int), possible values boardconfig.SERIAL...
|
boardconfig.serial2 | Type of serial 2 (int), possible values boardconfig.SERIAL...
|
boardconfig.serial3 | Type of serial 3 (int), possible values boardconfig.SERIAL...
|
boardconfig.onewire | Has onewire bus (bool) |
boardconfig.onewiretempsensor | Has temperature sensor on onewire (bool) |
boardconfig.auxin | AUX digital input names (string array) |
boardconfig.auxout | AUX digital output names (string array) |
boardconfig.auxain | AUX analog input names (string array) |
Example:
local boardconfig = require("boardconfig")
print("device name:", boardconfig.devicename)
This module providing access to AUX. Not globally loaded, need require this module.
Function | Signature | Description |
---|---|---|
aux.write | (string):boolean |
Set digital output value |
aux.read | (string):boolean |
Get digital input value |
aux.analogread | (string):number |
Get analog input value |
This module providing access to MQTT broker. Not globally loaded, need require this module.
Function | Signature | Description |
---|---|---|
mqtt.client | (uri: string [, user: string] [, password: string]]):table |
Create mqtt client |
mqtt.client:setonconnect | (function):nil |
Set on connect handler |
mqtt.client:setonmessage | (function):nil |
Set on message handler |
mqtt.client:connect | ():nil |
Connects to the broker |
mqtt.client:disconnect | ():nil |
Disconnect from the broker |
mqtt.client:subscribe | (topic: string [, qos: number = 1]):nil |
Subscribe to topic |
mqtt.client:unsubscribe | (topic: string):nil |
Unsubscribe from topic |
mqtt.client:publish | (topic: string, data: string [, qos: number = 1] [, retry: number = 0]]):nil |
Publish message |
Example:
local mqtt = require("mqtt")
local client = mqtt.client("mqtt://broker.hivemq.com:1883")
client:setonconnect(function()
client:publish("test/message", "Connected!")
end)
client:connect()
This module JSON serialization & deserialization. Not globally loaded, need require this module.
Function | Signature | Description |
---|---|---|
json.encode | (table|number|boolean|string|nil[, formated: boolean]):string |
Encode Lua value to JSON |
json.decode | (string):table|number|boolean|string|nil |
Decode from JSON to Lua value |
Example:
local json = require("json")
local value = {
num = 123,
str = "abc",
logical = true
}
print(json.encode(value, true))