Hi everyone,
we have been using GenieACS for a few years and recently got a new firmware for our routers. Now, we have to edit all the provisions and add the new settings. I would therefore like to obtain all the device parameters in order to look at the new structure.
For this I do the following in the summon for the device:
declare(“InternetGatewayDevice.*.*.*.*.*.*”, {path: now});
In the next step I want to get all the possible values. The best I can get is one after another or as a start
declare(“InternetGatewayDevice.*.*.*.*”, {value: now});
Now it shows “Displaying 1040 out of 1040 parameters” in the list, but if I scan the “wrong tree” (maybe with too many parameters) or execute the commands again in the next summon, it goes down to “Displaying 638 out of 638 parameters.”
I looked at the database, and with 1,040 parameters, the device has 5,018 lines. After the new summon, this number drops to 4,655. Some parameters have been deleted, and some have lost their attributes, such as ‘timestamp’ or ‘value’.
When I try to retrieve the parameters individually, sometimes the number goes up to 2,000, but a moment later it drops back down to around 600.
In this state, I cannot get more parameters with a summon, and I have to delete and re-add the device.
What can cause this problem? In the logs I don’t see anything about it. Sometimes it’s “Too many RPC requests” but this shouldn’t delete the parameters.
Does anyone have any ideas on how to solve the problem, or any better ideas for finding the right settings in the parameters?
WHY are you refreshing every parameter? GenieACS is designed to only pull back the minimum amount data needed from the CPE to perform the operation at hand.
How can I find the path to the values I need for a provisioning script to get or set without a test device where I can see the full structure?
For example, the name value for the first 5 GHz Wifi of the old device is under “InternetGatewayDevice.X_00507F_WirelessLAN_5G.General.SSID.1.ESSID”
On the new device it’s (only guesses) “InternetGatewayDevice.X_001DAA.Configuration.Wireless_LAN.SSID”
or maybe under the “InternetGatewayDevice.X_001DAA.Wireless.Device” section.
Manually refresh the tree for the model in question in your development environment. There is no need to refresh the entire data model for every device in your network. It will swell the amount of (useless) data stored in your Mongo instance.
Why do you have to use vendor specific params for SSID? The TR-069 spec has a WLANConfiguration param that holds the SSID.
It’s not about “every device in my network”. This is just for one device so I can find every settings of the device. Manually refreshing every single tree and parameter (what would took me days to find every parameter) doesn’t sound like a good solution compared to writing two lines to get a list of everything I need. If you mean refreshing the entire tree with one click, that isn’t possible. I only get a few parameters with this method.
After I created the scripts I delete the dev device.
The reason I have to use vendor-specific parameters for most of the options is because setting them otherwise doesn’t work for most of them. The manufacturer has its own paid acs and does not explicitly like other systems.
For what its worth, it takes me 5 mins to manually refresh all the trees of interest. There are only a few dozen parameters that live off of InternetGatewayDevice./Device.
I’m going to call out your vendor DrayTek as terrible.
So…are you saying that DrayTek is the reason why the parameters in the database got deleted if I refresh too many of them in GenieACS?
No, I’m saying DrayTek is terrible for not implementing the TR-069 spec.