====== Get status values via SNMP====== using the SDK. Please do not forget to enable SNMP v3.\\ ===== Sample script ===== can be run in the SDK test window. /* DESC: This script extends MIB entries of the SNMP agent * with values from nb_status * Copyright (coffee) 2014 NetModule AG, Switzerland */ if (nb_snmp_register("TEMPERATURE", 1, "s", "ro") == -1) exit(1); if (nb_snmp_register("RSRQ", 2, "s", "ro") == -1) exit(2); if (nb_snmp_link() == -1) exit(3); while (1) { status = nb_status("wwan"); if (nb_snmp_update("TEMPERATURE", struct_get(status, "MOBILE1_MODULE_TEMPERATURE")) == -1) exit(4); if (nb_snmp_update("RSRQ", struct_get(status, "MOBILE1_RSRQ")) == -1) exit(5); sleep(5); /* update frequency */ } ===== Access via SNMP ===== Using SNMP v1/2c there are two communities. The "read" community only allows to read data. The "write" or "admin" gives read and write access. With "allowed hosts" you can restrict the SNMP access to the router via an IP range. "0.0.0.0" can be used for any access. You can also use SNMP v3 for accessing the router. Attention must be paid to the fact that SNMP passwords have to be more than 8 characters long. Shorter passwords have to be doubled for SNMP (e.g. admin01 becomes admin01admin01). Only the user "admin" can be used To see the values run on linux: \\ **snmpwalk -v 3 -u -n "" -l authNoPriv -a MD5 -x DES -A [] 1.3.6.1.4.1.31496.10.90** For example: snmpwalk -v 3 -u snmp -n "" -l authNoPriv -a MD5 -x DES -A snmp01password 192.168.1.140 1.3.6.1.4.1.31496.10.90 iso.3.6.1.4.1.31496.10.90.1.0 = STRING: "47.3" iso.3.6.1.4.1.31496.10.90.2.0 = STRING: "-11.5" Or use a windows tool: {{:sdk:mibbroswersettings.jpg|}} {{:sdk:snmp.jpg |}} *if you use SNMP v1/2c with the MibBrowser please set either the "Community" (=read only) or the "Write Commuinity" (=read-write), but not both at the same time. For easier use please copy the NetModule private MIB (NETMODULE-VENDOR-MIB.mib into the MIB directory (e.g. C:\Program Files\MibBrowser Free Tool\mibs) and load it File->Load MIB . ===== Useful ===== These values can be used for nb_status(argument): ^ Argument^ Description^ | "summary" | Short status summary | | "system" | System information | | "license" | License information | | "wwan" | WWAN module status | | "wlan" | WLAN module status | | "gnss" | GNSS (GPS) module status | | "lan" | LAN interface status | | "wan" | WAN interface status | | "openvpn" | OpenVPN connection status | | "ipsec" | IPsec connection status | | "dio" | Digital IO status | To see the fields run dump() in the test windows. E.g: status = nb_status("wwan"); dump(status); struct(21): { .MOBILE1_MODULE_TEMPERATURE = string[4]: "47.4" .MOBILE1_SIGNAL = string[3]: "-83" .MOBILE1_LAC = string[4]: "FFFE" .MOBILE1_CID = string[7]: "16BB302" .MOBILE1_RSRQ = string[5]: "-11.5" .MOBILE1_ICCID = string[20]: "8949226133742004747F" .MOBILE1_REGISTRATION_STATE = string[23]: "registeredInHomeNetwork" .MOBILE1_MODULE_INFO = string[126]: "Manufacturer: Huawei Technologies Co., Ltd. Model: ME909u-521 Revision: 11.235.07.00.00 IMEI: 860461024043005 +GCAP: +CGSM" .MOBILE1_MSISDN = string[3]: "n/a" .MOBILE1_SIM_STATE = string[8]: "unlocked" .MOBILE1_MEID = string[3]: "n/a" .MOBILE1_MODULE_TYPE = string[5]: "me909" .MOBILE1_MODULE_SLOT = string[1]: "0" .MOBILE1_RSRP = string[4]: "-113" .MOBILE1_IMSI = string[15]: "262073993546474" .MOBILE1_SERVICE_TYPE = string[3]: "LTE" .MOBILE1_LAI = string[5]: "26207" .MOBILE1_NETWORK = string[7]: "o2 - de" .MOBILE1_SIM = string[4]: "SIM1" .MOBILE1_IMEI = string[15]: "860461024043005" .MOBILE1_SINR = string[4]: "-1.4" } ===== Extended example ===== /* DESC: This script extends MIB entries of the SNMP agent * with values from nb_status for temperature, signal level, * transferred data on mobile network and * reset of transferred data counter * Copyright (coffee) 2014 NetModule AG, Switzerland */ if (nb_snmp_register("TEMPERATURE", 1, "s", "ro") == -1) exit(1); if (nb_snmp_register("RSRQ", 2, "s", "ro") == -1) exit(2); if (nb_snmp_register("DOWNLOADED", 3, "s", "ro") == -1)exit(3); if (nb_snmp_register("UPLOADED", 4, "s", "ro") == -1)exit(4); if (nb_snmp_register("RESET_DATA", 5, "s", "rw") == -1)exit(5); if (nb_snmp_link() == -1)exit(6); for(;;) { wwan = nb_status("wwan"); wan = nb_status("wan"); if (nb_snmp_update("TEMPERATURE", struct_get(wwan, "MOBILE1_MODULE_TEMPERATURE")) == -1) exit(7); if (nb_snmp_update("RSRQ", struct_get(wwan, "MOBILE1_RSRQ")) == -1) exit(8); if (nb_snmp_update("DOWNLOADED", struct_get(wan, "WANLINK1_DATA_DOWNLOADED")) == -1) exit(9); if (nb_snmp_update("UPLOADED", struct_get(wan, "WANLINK1_DATA_UPLOADED")) == -1) exit(10); if (s = nb_snmp_listen(5)) if (s.name == "RESET_DATA" && s.value == "reset") { nb_reset_statistics("wanlink0"); if (nb_snmp_update("RESET_DATA", strftime("%d.%m.%Y %H:%M:%S", localtime(time()))) == -1) exit(11); } } Please extend the NetModule router MIB (VENODR-MIB.txt before "trap objects" with: -- **************************************************************************** -- NBSdkTable -- **************************************************************************** sdkTemperature OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The temperature of the WWAN Module 1" ::= { sdk 1 } sdkRSRQ OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The RSRQ of the WWAN Module 1" ::= { sdk 2 } sdkDataDownloaded OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The data downloaded on the WAN interface" ::= { sdk 3 } sdkDataUploaded OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The data uploaded on the WAN interface" ::= { sdk 4 } sdkDataReset OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-write STATUS current DESCRIPTION "Write 'reset' to reset the up- and download counters for the WAN interface." ::= { sdk 5 } {{:sdk:mibbrowser_status_snmp2.jpg|}}