Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
1. Adding Objects
To add PPPoE credentials, the "InternetGatewayDevice.WANDevice.3.WANConnectionDevice.1.WANPPPConnection.1" has to exist. So an additional WANPPPConnection-Interface must be created, before any parameters can be modified.
Code Block |
---|
curl -X PUT -i 'http://ip:7557/objects/1' -d '{}' |
2. Creating virtual parameters
To differentiate between an 'InternetGatewayDevice' and a 'Device', there are virtual parameters, preventing to check both types of devices.
Code Block |
---|
curl -i 'http://ip:7557/virtual_parameters/SerialNumber' -X PUT -d 'var sn = declare("DeviceID.SerialNumber", {value: Date.now()}); return {writable: false, value: [sn.value[0], "xsd:string"]};' |
3. Building provisions
A Provision is JavaScript code that can handle provisioning workflow. After a factory reset the device needs to have the correct MAC. So at every refresh, GenieACS needs to get the most important values from the device. The TR-069 connection request- and PPPoE credentials should be present.
Code Block |
---|
curl -X PUT -i 'http://ip:7557/provisions/BOOTSTRAP' -d
'const now = Date.now();
declare("InternetGatewayDevice.DeviceInfo.SerialNumber", {value: now});
declare("InternetGatewayDevice.DeviceInfo.ProductClass", {value: now});
declare("InternetGatewayDevice.DeviceInfo.ManufacturerOUI", {value: now});
declare("InternetGatewayDevice.DeviceInfo.Manufacturer", {value: now});
declare("InternetGatewayDevice.DeviceInfo.HardwareVersion", {value: now});
declare("InternetGatewayDevice.DeviceInfo.SoftwareVersion", {value: now});
declare("InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.MACAddress", {value: now});
declare("InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress", {value: now});
declare("InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID", {value: now});
declare("InternetGatewayDevice.ManagementServer.PeriodicInformEnable", {value: now} , {value: true});
declare("InternetGatewayDevice.ManagementServer.PeriodicInformInterval", {value: now} , {value: 86400});
declare("InternetGatewayDevice.ManagementServer.ConnectionRequestUsername", {value: now} , {value: "admin"});
declare("InternetGatewayDevice.ManagementServer.ConnectionRequestPassword", {value: now} , {value: "admin"});' |
The default gateway should also be set in a provision but can be called in a preset.
Code Block |
---|
curl -X PUT -i 'http://ip:7557/provisions/setDefaultGw' -d 'declare("InternetGatewayDevice.Layer3Forwarding.X_BROADCOM_COM_DefaultConnectionServices", {value: Date.now()} , {value: "ppp0.2"});' |
4. Building presets
We use presets to store most of the logic from the configfile and set parameters at every reboot.
Code Block |
---|
curl -X PUT -i 'http://ip:7557/presets/nameOfPreset' -d
'{ "weight":0,"precondition":"{\"VirtualParameters.SerialNumber\":\"aabbccddeeff\"}",
"events":{"1 BOOT":true,"0 BOOTSTRAP":false},
"configurations":[{"type":"add_tag","tag":"provisioned"}]}' |
There is always the option to create a preset via GenieACS GUI and show them via GET to see how to call different functions (refreshObject, add_object, age, ...).
Code Block |
---|
curl -X GET -i 'http://ip:7557/presets/' |