Changes for page 01 Lua Functions

Last modified by Theodore Xu on 2023/10/26 10:51

From version 5.9
edited by Stone Wu
on 2022/07/12 09:26
Change comment: There is no comment for this version
To version 5.14
edited by Stone Wu
on 2022/07/12 09:50
Change comment: (Autosaved)

Summary

Details

Page properties
Content
... ... @@ -752,12 +752,10 @@
752 752  
753 753  **QoS value:**
754 754  
755 -0: Only push messages once, messages may be lost or duplicated. It can be used for environmental sensor data, it doesn't matter if lose a record, because there will be a second push message soon. This method is mainly used for normal APP push, but if the user smart device is not connected when the message is pushed, the message will be discarded, and the smart device will not be received when it is networked again.
755 +* 0: Only push messages once, messages may be lost or duplicated. It can be used for environmental sensor data, it doesn't matter if lose a record, because there will be a second push message soon. This method is mainly used for normal APP push, but if the user smart device is not connected when the message is pushed, the message will be discarded, and the smart device will not be received when it is networked again.
756 +* 1: The message is delivered at least once, but the message may be delivered repeatedly.
757 +* 2: The message was delivered exactly once. This level can be used in a billing system. In a billing system, repeated or missing messages can lead to incorrect results. This highest quality message push service can also be used for instant messaging APP pushes, ensuring that users only receive messages once.
756 756  
757 -1: The message is delivered at least once, but the message may be delivered repeatedly.
758 -
759 -2: The message was delivered exactly once. This level can be used in a billing system. In a billing system, repeated or missing messages can lead to incorrect results. This highest quality message push service can also be used for instant messaging APP pushes, ensuring that users only receive messages once.
760 -
761 761  **Retain flag:**
762 762  
763 763  0: not reserved;
... ... @@ -765,13 +765,11 @@
765 765  1: reserved
766 766  
767 767  (((
768 -== **4.1 mqtt.create(string serverurl, string clientid)** ==
766 +== **mqtt.create(string serverurl, string clientid)** ==
769 769  )))
770 770  
771 -**Function:**
769 +**Function:** Create an MQTT object
772 772  
773 -Create an MQTT object
774 -
775 775  **Parameters:**
776 776  
777 777  //serverurl //Server url
... ... @@ -793,17 +793,13 @@
793 793  Failed: multi
794 794  
795 795  (((
796 -== **4.2 mqtt.close(mqtt obj)** ==
792 +== **mqtt.close(mqtt obj)** ==
797 797  )))
798 798  
799 -**Function:**
795 +**Function:** Close the specified MQTT object (if the connected server will be disconnected automatically)
800 800  
801 -Close the specified MQTT object (if the connected server will be disconnected automatically)
797 +**Parameters: **//Obj //ithe objeced returned by mqtt.create
802 802  
803 -**Parameters:**
804 -
805 -//Obj //is the objeced returned by mqtt.create
806 -
807 807  **Return:**
808 808  
809 809  Succeed: true
... ... @@ -811,32 +811,25 @@
811 811  Failed: multi
812 812  
813 813  (((
814 -== **4.3 mqtt:connect(table conn[, table lwt, table cart])** ==
806 +== **mqtt:connect(table conn[, table lwt, table cart])** ==
815 815  )))
816 816  
817 -**Function:**
809 +**Function:**Establish a connection to the server
818 818  
819 -Establish a connection to the server
820 -
821 821  **Parameters:**
822 822  
823 823  //conn //is a Lua table and needs to contain the following fields
824 824  
825 -//string conn.username//, user name
815 +* //string conn.username//, user name
816 +* //string conn.password//, password
817 +* //number [conn.netway=0]//, networking method, if set error number will use Ethernet method
818 +** 0: Ethernet
819 +** 1: WIFI
820 +** 2: 4G
821 +** 3: 2G
822 +* //number [conn.keepalive=60]//, keep connected heartbeat interval, in seconds
823 +* //number [conn.cleansession=1]//, empty the session as described below:
826 826  
827 -//string conn.password//, password
828 -
829 -//number [conn.netway=0]//, networking method, if set error number will use Ethernet method
830 -
831 -* 0: Ethernet
832 -* 1: WIFI
833 -* 2: 4G
834 -* 3: 2G
835 -
836 -//number [conn.keepalive=60]//, keep connected heartbeat interval, in seconds
837 -
838 -//number [conn.cleansession=1]//, empty the session as described below:
839 -
840 840  This function is used to control the behavior when connecting and disconnecting, and the client and server will retain the session information. This information is used to guarantee "at least once" and "accurately once" delivery, as well as the subject of the client subscription, the user can choose to keep or ignore the session message, set as follows:
841 841  
842 842  * 1 (Empty): If a session exists and is 1, the previous session messages on the client and server are emptied.
... ... @@ -844,14 +844,11 @@
844 844  
845 845  //lwt// (Last Will and Testament) is a Lua table and needs to contain the following fields
846 846  
847 -//string lwt.topic//, topic
832 +* //string lwt.topic//, topic
833 +* //string lwt.message//, message
834 +* //number [lwt.qos=0]//, qos value
835 +* //number [lwt.retain=0]//, retain flag
848 848  
849 -//string lwt.message//, message
850 -
851 -//number [lwt.qos=0]//, qos value
852 -
853 -//number [lwt.retain=0]//, retain flag
854 -
855 855  **Return:**
856 856  
857 857  Succeed: true
... ... @@ -859,17 +859,13 @@
859 859  Failed: multi
860 860  
861 861  (((
862 -== **4.4 mqtt:disconnect([number timeout])** ==
844 +== **mqtt:disconnect([number timeout])** ==
863 863  )))
864 864  
865 -**Function:**
847 +**Function:** Disconnect from the MQTT server
866 866  
867 -Disconnect from the MQTT server
849 +**Parameters: **//[timeout=10000] //Disconnect waiting timeout, in milliseconds
868 868  
869 -**Parameters:**
870 -
871 -//[timeout=10000] //Disconnect waiting timeout, in milliseconds
872 -
873 873  **Return:**
874 874  
875 875  Succeed: true
... ... @@ -877,17 +877,13 @@
877 877  Failed: multi
878 878  
879 879  (((
880 -== **4.5 mqtt:isconnected()** ==
858 +== **mqtt:isconnected()** ==
881 881  )))
882 882  
883 -**Function:**
861 +**Function:** Test whether or not a client is currently connected to the MQTT server
884 884  
885 -Test whether or not a client is currently connected to the MQTT server
863 +**Parameters:** None
886 886  
887 -**Parameters:**
888 -
889 -None
890 -
891 891  **Return:**
892 892  
893 893  Succeed: true ~-~-Connected
... ... @@ -895,13 +895,11 @@
895 895  Failed: false ~-~- Unconnected and other unknowns
896 896  
897 897  (((
898 -== **4.6 mqtt:subscribe(string topic, number qos)** ==
872 +== **mqtt:subscribe(string topic, number qos)** ==
899 899  )))
900 900  
901 -**Function:**
875 +**Function: **Subscribe to the topic (before the subscription, the user must first call the connect method to connect to the server)
902 902  
903 -Subscribe to the topic (before the subscription, the user must first call the connect method to connect to the server)
904 -
905 905  **Parameters:**
906 906  
907 907  //topic//, topic name
... ... @@ -915,13 +915,11 @@
915 915  Failed: multi
916 916  
917 917  (((
918 -== **4.7 mqtt:unsubscribe(string topic)** ==
890 +== **mqtt:unsubscribe(string topic)** ==
919 919  )))
920 920  
921 -**Function:**
893 +**Function:** Unsubscribe topic
922 922  
923 -Unsubscribe topic
924 -
925 925  **Parameters:**
926 926  
927 927  //topic//, topic name
... ... @@ -933,13 +933,11 @@
933 933  Failed: multi
934 934  
935 935  (((
936 -== **4.8 mqtt:publish(string topic, string message, number qos, number retain[, number timeout])** ==
906 +== **mqtt:publish(string topic, string message, number qos, number retain[, number timeout])** ==
937 937  )))
938 938  
939 -**Function:**
909 +**Function:** Publish message
940 940  
941 -Publish message
942 -
943 943  **Parameters:**
944 944  
945 945  //topic//, topic name
... ... @@ -959,17 +959,13 @@
959 959  Failed: multi
960 960  
961 961  (((
962 -== **4.9 mqtt:close()** ==
930 +== **mqtt:close()** ==
963 963  )))
964 964  
965 -**Function:**
933 +**Function:** Close the mqtt object (the connection to the server will be automatically disconnected)
966 966  
967 -Close the mqtt object (the connection to the server will be automatically disconnected)
935 +**Parameters:** None
968 968  
969 -**Parameters:**
970 -
971 -None
972 -
973 973  **Return:**
974 974  
975 975  Succeed: true
... ... @@ -977,13 +977,11 @@
977 977  Failed: multi
978 978  
979 979  (((
980 -== **4.10 mqtt:on(string method, function callback)** ==
944 +== **mqtt:on(string method, function callback)** ==
981 981  )))
982 982  
983 -**Function:**
947 +**Function:** Register event callback function
984 984  
985 -Register event callback function
986 -
987 987  **Parameters:**
988 988  
989 989  //method//, It can be message/arrived/offline, these 3 types of events
... ... @@ -996,20 +996,17 @@
996 996  
997 997  Parameter:
998 998  
999 -//Topic//, topic name
961 +* //Topic//, topic name
962 +* //Message//, content
1000 1000  
1001 -//Message//, content
964 +**2."arrived" is published by publish, this function will be called after the publication arrives**
1002 1002  
1003 -**2.**"arrived" is published by publish, this function will be called after the publication arrives
1004 -
1005 1005  //Callback// prototype~:// function ()//
1006 1006  
1007 -Parameter:
968 +Parameter: None
1008 1008  
1009 -None
970 +**3.This function will be called after the "offline" connection is lost**
1010 1010  
1011 -**3.**This function will be called after the "offline" connection is lost
1012 -
1013 1013  //Callback// prototype~:// function (string cause)//
1014 1014  
1015 1015  Parameter:
... ... @@ -1023,17 +1023,13 @@
1023 1023  Failed: multi
1024 1024  
1025 1025  (((
1026 -== **4.11 mqtt:setup_cfg()** ==
985 +== **mqtt:setup_cfg()** ==
1027 1027  )))
1028 1028  
1029 -**Function:**
988 +**Function:** Cloud mode interface, to obtain MQTT information configured by the cloud platform
1030 1030  
1031 -Cloud mode interface, to obtain MQTT information configured by the cloud platform
990 +**Parameters:** None
1032 1032  
1033 -**Parameters:**
1034 -
1035 -None
1036 -
1037 1037  **Return:**
1038 1038  
1039 1039  //serverurl, clientid, conn, lwt, cart //(5 returns, respectively, server address, client ID, connection table, last word table, certificate table)
... ... @@ -1051,39 +1051,27 @@
1051 1051  Lua only has a table data structure, so all arrays and key-value objects of json will be returned as a table.
1052 1052  
1053 1053  (((
1054 -== **5.1 json.encode( lua_object )** ==
1009 +== **json.encode( lua_object )** ==
1055 1055  )))
1056 1056  
1057 -**Function:**
1012 +**Function: **Convert lua data type to json string
1058 1058  
1059 -Convert lua data type to json string
1014 +**Parameters: **Lua data type (including boolean, number, string, table)
1060 1060  
1061 -**Parameters:**
1016 +**Return:** Json format string
1062 1062  
1063 -Lua data type (including boolean, number, string, table)
1064 -
1065 -**Return:**
1066 -
1067 -Json format string
1068 -
1069 1069  (((
1070 -== **5.2 json.decode(string json_string)** ==
1019 +== **json.decode(string json_string)** ==
1071 1071  )))
1072 1072  
1073 -**Function:**
1022 +**Function:** Convert json string to lua data type
1074 1074  
1075 -Convert json string to lua data type
1024 +**Parameters: **//json_string//, string of json data structure
1076 1076  
1077 -**Parameters:**
1026 +**Return: **Lua data type
1078 1078  
1079 -//json_string//, string of json data structure
1080 -
1081 -**Return:**
1082 -
1083 -Lua data type
1084 -
1085 1085  (((
1086 -== **5.3 json.null** ==
1029 +== **json.null** ==
1087 1087  )))
1088 1088  
1089 1089  **Function:**
... ... @@ -1090,32 +1090,24 @@
1090 1090  
1091 1091  This method is used when assembling json data, which is equivalent to null in json. If the user directly uses json.null() to return the address of the function, it must be valid with the use of encode.
1092 1092  
1093 -**Parameters:**
1036 +**Parameters:** None
1094 1094  
1095 -None
1038 +**Return: **None
1096 1096  
1097 -**Return:**
1098 -
1099 -None
1100 -
1101 1101  = **6 Cloud mode** =
1102 1102  
1103 1103  The cloud interface is only used in cloud mode, and V-NET mode is not available.
1104 1104  
1105 1105  (((
1106 -== **6.1 bns_get_alldata()** ==
1045 +== **bns_get_alldata()** ==
1107 1107  )))
1108 1108  
1109 -**Function:**
1048 +**Function:** Obtain all monitoring points (point table) data configured by the end user
1110 1110  
1111 -Obtain all monitoring points (point table) data configured by the end user
1050 +**✎Note: **Assuming there are timing scripts A and B with a period of 1 second, if this function is called in script A, the data will not be obtained if called in script B
1112 1112  
1113 -Note: Assuming there are timing scripts A and B with a period of 1 second, if this function is called in script A, the data will not be obtained if called in script B
1052 +**Parameters:** None
1114 1114  
1115 -**Parameters:**
1116 -
1117 -None
1118 -
1119 1119  **Return:**
1120 1120  
1121 1121  Succeed: table two-dimensional array, the structure is as follows
... ... @@ -1145,13 +1145,11 @@
1145 1145  Failed: //table// empty table
1146 1146  
1147 1147  (((
1148 -== **6.2 bns_get_config(string from)** ==
1083 +== **bns_get_config(string from)** ==
1149 1149  )))
1150 1150  
1151 -**Function:**
1086 +**Function:** Obtain custom configuration parameters with the specified from type
1152 1152  
1153 -Obtain custom configuration parameters with the specified from type
1154 -
1155 1155  **parameter:**
1156 1156  
1157 1157  from type, there are the following two categories, the string must be all lowercase
... ... @@ -1169,13 +1169,11 @@
1169 1169  Failed~:// table// empty table
1170 1170  
1171 1171  (((
1172 -== **6.3 bns_get_data(string name, string data)** ==
1105 +== **bns_get_data(string name, string data)** ==
1173 1173  )))
1174 1174  
1175 -**Function:**
1108 +**Function:**write data to the name of the monitoring point
1176 1176  
1177 -write data to the name of the monitoring point
1178 -
1179 1179  **parameter:**
1180 1180  
1181 1181  //name //The name of the monitoring point
... ... @@ -1189,7 +1189,7 @@
1189 1189  Failed: nil
1190 1190  
1191 1191  (((
1192 -== **6.4 bns_get_data(string name)** ==
1123 +== **bns_get_data(string name)** ==
1193 1193  )))
1194 1194  
1195 1195  **Function:**
... ... @@ -1207,17 +1207,13 @@
1207 1207  Failed: nil
1208 1208  
1209 1209  (((
1210 -== **6.5 bns_get_datadesc()** ==
1141 +== **bns_get_datadesc()** ==
1211 1211  )))
1212 1212  
1213 -**Function:**
1144 +**Function: **Obtain all configured communication ports and monitoring point information
1214 1214  
1215 -Obtain all configured communication ports and monitoring point information
1146 +**Parameters:** None
1216 1216  
1217 -**Parameters:**
1218 -
1219 -None
1220 -
1221 1221  **Return:**
1222 1222  
1223 1223  Succeed: table three-dimensional array, the structure is as follows
... ... @@ -1270,17 +1270,13 @@
1270 1270  Failed~:// table// empty table
1271 1271  
1272 1272  (((
1273 -== **6.6 bns_get_machineinfo()** ==
1200 +== **bns_get_machineinfo()** ==
1274 1274  )))
1275 1275  
1276 -**Function:**
1203 +**Function:** get machine information
1277 1277  
1278 -get machine information
1205 +**Parameters:** None
1279 1279  
1280 -**Parameters:**
1281 -
1282 -None
1283 -
1284 1284  **Return:**
1285 1285  
1286 1286  Succeed: 3 string type results (model, machine code, software version)
... ... @@ -1288,13 +1288,11 @@
1288 1288  Failed: nil
1289 1289  
1290 1290  (((
1291 -== **6.7 bns_get_groupdata(string name)** ==
1214 +== **bns_get_groupdata(string name)** ==
1292 1292  )))
1293 1293  
1294 -**Function:**
1217 +**Function:** Get all monitoring point data under the specified group name
1295 1295  
1296 -Get all monitoring point data under the specified group name
1297 -
1298 1298  **parameter:**
1299 1299  
1300 1300  //Name  // group name
... ... @@ -1306,17 +1306,13 @@
1306 1306  Failed: //table// empty table
1307 1307  
1308 1308  (((
1309 -== **6.8 bns_get_groupdesc()** ==
1230 +== **bns_get_groupdesc()** ==
1310 1310  )))
1311 1311  
1312 -**Function:**
1233 +**Function:** Get all group information
1313 1313  
1314 -Get all group information
1235 +**Parameters:** None
1315 1315  
1316 -**Parameters:**
1317 -
1318 -None
1319 -
1320 1320  **Return:**
1321 1321  
1322 1322  Succeed: //table// two-dimensional array, the structure is as follows
... ... @@ -1330,17 +1330,13 @@
1330 1330  Failed: //table  // empty table
1331 1331  
1332 1332  (((
1333 -== **6.9 bns_get_onecache(string msg)** ==
1250 +== **bns_get_onecache(string msg)** ==
1334 1334  )))
1335 1335  
1336 -**Function:**
1253 +**Function:** Save a message to the cache file, which can be stored after power failure. Store up to 2000 items, delete the old and save the new in a rolling manner when it is full.
1337 1337  
1338 -Save a message to the cache file, which can be stored after power failure. Store up to 2000 items, delete the old and save the new in a rolling manner when it is full.
1255 +**Parameters: **//msg// String
1339 1339  
1340 -**Parameters:**
1341 -
1342 -//msg// String
1343 -
1344 1344  **Return:**
1345 1345  
1346 1346  Succeed: true
... ... @@ -1348,17 +1348,13 @@
1348 1348  Failed: nil
1349 1349  
1350 1350  (((
1351 -== **6.10 bns_get_allcache()** ==
1264 +== **bns_get_allcache()** ==
1352 1352  )))
1353 1353  
1354 -**Function:**
1267 +**Function:** Get all the cached content (once the internal cache file will be emptied)
1355 1355  
1356 -Get all the cached content (once the internal cache file will be emptied)
1269 +**Parameters:** None
1357 1357  
1358 -**Parameters:**
1359 -
1360 -None
1361 -
1362 1362  **Return:**
1363 1363  
1364 1364  Succeed: //table// one-dimensional array
... ... @@ -1386,182 +1386,210 @@
1386 1386  Network communication includes Http request interface, this document does not provide interface description, please refer to the online document for how to use it.
1387 1387  
1388 1388  (((
1389 -== **7.1 http request** ==
1298 +== **http request** ==
1390 1390  )))
1391 1391  
1392 1392  [[http:~~/~~/w3.impa.br/~~~~diego/software/luasocket/http.html#request>>url:http://w3.impa.br/~~diego/software/luasocket/http.html#request]]
1393 1393  
1394 -(((
1395 -= **8 Internal register** =
1396 -)))
1303 +== **https request** ==
1397 1397  
1398 -The internal registers of the box are divided into bit addresses and word addresses, which can be accessed in two ways (taking HDW as an example):
1305 +Example
1399 1399  
1400 -**~1. **Access by word, prefix @W_HDW,
1307 +{{code language="LUA"}}
1308 +local json = require("json")
1401 1401  
1402 -For example: @W_HDW0 represents the first word of the system data area, @W_HDW1 represents the second word of the system data area.
1310 +local https = require("https")
1403 1403  
1404 -**2. **Access in bit mode, the prefix is @B_HDX, the number in front of "." indicates the number of the word, and the number behind is the bit number of the word.
1312 +functions https_demo.main()
1405 1405  
1406 -For example: @B_HDX1020.12, its meaning is to access the system data area in bit mode, the specific location is the 13th bit of the 1020th word.
1314 +local url = "https://XXXXXXXXXXXXXXXXXXXXXXXXXX"
1407 1407  
1408 -**✎Note: **
1316 +local body = {}
1409 1409  
1410 -**~1. **The address in @B_HDX is taken from the word in @W_HDW, so pay special attention when using the address.
1318 +body["XXXXXX"] = "XXXXX"
1411 1411  
1412 -For example, @B_HDX1020.12 is to access the 13th bit of the 1020th word. The value of this bit is the same as the word obtained by @W_HDW001020. The 13th bit of this word is actually the same bit as @B_HDX1020.12.
1320 +body["XXXXXXX"] = "XXXXXXXXXXX"
1413 1413  
1414 -**2.**The address of the bit address @B_HDX has a decimal point, while the word address is an integer.
1322 +local bodyJson = json.encode(body)
1415 1415  
1416 -(((
1417 -== **8.1 Data storage area(HDW/HDX)** ==
1418 -)))
1324 +local header = {}
1419 1419  
1420 -The system storage area (HDW) of the V-BOX is used to store temporary data:
1326 +header["content-type"] = "application/json"
1421 1421  
1422 -~1. Access by word, the number range is: "@W_HDW0"-"@W_HDW299999".
1328 +local result_table, code, headers, status = https.request(url,
1423 1423  
1424 -2. Access in bit mode, the number range is: "@B_HDX0.0"-"@B_HDX299999.15".
1330 +bodyJson)
1425 1425  
1426 -(((
1427 -== **8.2 Special data area (HSW/HSX)** ==
1428 -)))
1332 +if code == 200 then
1429 1429  
1430 -**✎Note: **
1334 +print("https suc")
1431 1431  
1432 -//HSW// is a system special register, so please refer to the system special register table during use. Do not use addresses that are not mentioned in the table, and use the addresses stated in the table with caution (example: restart ("@W_HSW0") Writing a value of 1 will cause V-BOX to restart).
1336 +return true
1433 1433  
1434 -//Without any conditions. Direct use ("@W_HSW0") will cause the V-BOX to restart continuously.// When using ("@W_HSW0") address, please add judgment conditions, such as: connection to MQTT fails, there is no network, the value of a PLC address meets the condition or counts to a certain value.
1338 +else
1435 1435  
1436 -1.The system data area (HSW) of the box is used for system special registers (system reserved). Use //addr_getword// to obtain the following register information:
1340 +print("https fail")
1437 1437  
1438 -(% class="table-bordered" %)
1439 -|address|function|Read and write status: read only, write only, read and write
1440 -|@W_HSW0|restart|read and write
1441 -|@W_HSW1|Box time: year|read and write
1442 -|@W_HSW2|Box time: month|read and write
1443 -|@W_HSW3|Box time: day|read and write
1444 -|@W_HSW4|Box time: hour|read and write
1445 -|@W_HSW5|Box time: minute|read and write
1446 -|@W_HSW6|Box time: second|read and write
1447 -|@W_HSW7|Box time: week|read and write
1448 -|@W_HSW8|Ethernet IP1|read only
1449 -|@W_HSW9|Ethernet IP2|read only
1450 -|@W_HSW10|Ethernet IP3|read only
1451 -|@W_HSW11|Ethernet IP4|read only
1452 -|@W_HSW12|Ethernet Mask 1|read only
1453 -|@W_HSW13|Ethernet Mask 2|read only
1454 -|@W_HSW14|Ethernet Mask 3|read only
1455 -|@W_HSW15|Ethernet Mask 4|read only
1456 -|@W_HSW16|Ethernet Gateway 1|read only
1457 -|@W_HSW17|Ethernet Gateway 2|read only
1458 -|@W_HSW18|Ethernet Gateway 3|read only
1459 -|@W_HSW19|Ethernet Gateway 4|read only
1460 -|@W_HSW21|Ethernet MAC1|read only
1461 -|@W_HSW22|Ethernet MAC2|read only
1462 -|@W_HSW23|Ethernet MAC3|read only
1463 -|@W_HSW24|Ethernet MAC4|read only
1464 -|@W_HSW25|Ethernet MAC3|read only
1465 -|@W_HSW26|Ethernet MAC4|read only
1466 -|@W_HSW128|WIFI IP1|read only
1467 -|@W_HSW129|WIFI IP2|read only
1468 -|@W_HSW130|WIFI IP3|read only
1469 -|@W_HSW131|WIFI IP4|read only
1470 -|@W_HSW132|WIFI Mask 1|read only
1471 -|@W_HSW133|WIFI Mask 2|read only
1472 -|@W_HSW134|WIFI Mask 3|read only
1473 -|@W_HSW135|WIFI Mask 4|read only
1474 -|@W_HSW136|WIFI Gateway 1|read only
1475 -|@W_HSW137|WIFI Gateway 2|read only
1476 -|@W_HSW138|WIFI Gateway 3|read only
1477 -|@W_HSW139|WIFI Gateway 4|read only
1478 -|@W_HSW140|WIFI MAC1|read only
1479 -|@W_HSW141|WIFI MAC2|read only
1480 -|@W_HSW142|WIFI MAC3|read only
1481 -|@W_HSW143|WIFI MAC4|read only
1482 -|@W_HSW144|WIFI MAC5|read only
1483 -|@W_HSW145|WIFI MAC6|read only
1484 -|@W_HSW146|WIFI Signal value|read only
1485 -|@W_HSW148|4G IP1|read only
1486 -|@W_HSW149|4G IP2|read only
1487 -|@W_HSW150|4G IP3|read only
1488 -|@W_HSW151|4G IP4|read only
1489 -|@W_HSW152|4G Mask 1|read only
1490 -|@W_HSW153|4G Mask 2|read only
1491 -|@W_HSW154|4G Mask 3|read only
1492 -|@W_HSW155|4G Mask 4|read only
1493 -|@W_HSW156|4G Gateway 1|read only
1494 -|@W_HSW157|4G Gateway 2|read only
1495 -|@W_HSW158|4G Gateway 3|read only
1496 -|@W_HSW159|4G Gateway 4|read only
1497 -|@W_HSW160|4G MAC1|read only
1498 -|@W_HSW161|4G MAC2|read only
1499 -|@W_HSW162|4G MAC3|read only
1500 -|@W_HSW163|4G MAC4|read only
1501 -|@W_HSW164|4G MAC5|read only
1502 -|@W_HSW165|4G MAC6|read only
1503 -|@W_HSW166|4G Signal value|read only
1342 +return nil
1504 1504  
1505 -2. Other
1344 +end
1506 1506  
1507 -2.1 Access password: addr_getstring("@W_HSW27", 16)
1346 +end
1347 +{{/code}}
1508 1508  
1509 -2.2 Machine code: addr_getstring("@W_HSW60", 64)
1349 +(((
1350 += **8 Internal register** =
1351 +)))
1510 1510  
1511 -2.3 Positioning method (@W_HSW167): (read only)
1353 +The internal registers of the box are divided into bit addresses and word addresses, which can be accessed in two ways (taking HDW as an example):
1512 1512  
1513 -~1. Latitude and longitude
1355 +**Access by word, prefix @W_HDW.**
1514 1514  
1515 -Longitude: addr_getdouble("@W_HSW168") (read only)
1357 +For example: @W_HDW0 represents the first word of the system data area, @W_HDW1 represents the second word of the system data area.
1516 1516  
1517 -Latitude: addr_getdouble("@W_HSW172") (read only)
1359 +**Access in bit mode, the prefix is @B_HDX, the number in front of "." indicates the number of the word, and the number behind is the bit number of the word.**
1518 1518  
1519 -2. Base station positioning
1361 +For example: @B_HDX1020.12, its meaning is to access the system data area in bit mode, the specific location is the 13th bit of the 1020th word.
1520 1520  
1521 -LAC: addr_getdword("@W_HSW168") (read only)
1363 +(% class="box infomessage" %)
1364 +(((
1365 +**✎Note: **
1522 1522  
1523 -CI: addr_getdword("@W_HSW172") (read only)
1367 +* The address in @B_HDX is taken from the word in @W_HDW, so pay special attention when using the address.
1368 +** For example, @B_HDX1020.12 is to access the 13th bit of the 1020th word. The value of this bit is the same as the word obtained by @W_HDW001020. The 13th bit of this word is actually the same bit as @B_HDX1020.12.
1369 +* The address of the bit address @B_HDX has a decimal point, while the word address is an integer.
1370 +)))
1524 1524  
1525 -2.4 Convert base station to latitude and longitude via API
1526 1526  
1527 -Longitude: addr_getdouble("@W_HSW187") (read only)
1528 1528  
1529 -Latitude: addr_getdouble("@W_HSW183") (read only)
1374 +(((
1375 +== **Data storage area(HDW/HDX)** ==
1376 +)))
1530 1530  
1531 -2.5 Operator information: addr_getdword("@W_HSW181") (read only)
1378 +The system storage area (HDW) of the V-BOX is used to store temporary data:
1532 1532  
1533 -2.6 Networking mode: addr_getword("@W_HSW177") (read only)
1380 +1. Access by word, the number range is: "@W_HDW0"-"@W_HDW299999".
1381 +1. Access in bit mode, the number range is: "@B_HDX0.0"-"@B_HDX299999.15".
1534 1534  
1535 -0: Ethernet, 1: WIFI, 2: 4G, 3: 2G
1383 +(((
1384 +== **8.2 Special data area (HSW/HSX)** ==
1536 1536  
1537 -2.7 Map fence flag: addr_getword("@W_HSW178") (read only)
1386 +(% class="box infomessage" %)
1387 +(((
1388 +**✎Note: **
1538 1538  
1539 -0: No map fence is drawn
1390 +* //HSW// is a system special register, so please refer to the system special register table during use. Do not use addresses that are not mentioned in the table, and use the addresses stated in the table with caution (example: restart ("@W_HSW0") Writing a value of 1 will cause V-BOX to restart).
1391 +* //Without any conditions. Direct use ("@W_HSW0") will cause the V-BOX to restart continuously.// When using ("@W_HSW0") address, please add judgment conditions, such as: connection to MQTT fails, there is no network, the value of a PLC address meets the condition or counts to a certain value.
1392 +)))
1393 +)))
1540 1540  
1541 -1: Draw a map fence and the box is in the fence
1395 +The system data area (HSW) of the box is used for system special registers (system reserved). Use //addr_getword// to obtain the following register information:
1542 1542  
1543 -2: Draw a map fence and the box is not in the fence
1397 +(% class="table-bordered" %)
1398 +|=(% style="width: 151px;" %)address|=(% style="width: 169px;" %)function|=(% style="width: 456px;" %)Read and write status: read only, write only, read and write
1399 +|(% style="width:151px" %)@W_HSW0|(% style="width:169px" %)restart|(% style="width:456px" %)read and write
1400 +|(% style="width:151px" %)@W_HSW1|(% style="width:169px" %)Box time: year|(% style="width:456px" %)read and write
1401 +|(% style="width:151px" %)@W_HSW2|(% style="width:169px" %)Box time: month|(% style="width:456px" %)read and write
1402 +|(% style="width:151px" %)@W_HSW3|(% style="width:169px" %)Box time: day|(% style="width:456px" %)read and write
1403 +|(% style="width:151px" %)@W_HSW4|(% style="width:169px" %)Box time: hour|(% style="width:456px" %)read and write
1404 +|(% style="width:151px" %)@W_HSW5|(% style="width:169px" %)Box time: minute|(% style="width:456px" %)read and write
1405 +|(% style="width:151px" %)@W_HSW6|(% style="width:169px" %)Box time: second|(% style="width:456px" %)read and write
1406 +|(% style="width:151px" %)@W_HSW7|(% style="width:169px" %)Box time: week|(% style="width:456px" %)read and write
1407 +|(% style="width:151px" %)@W_HSW8|(% style="width:169px" %)Ethernet IP1|(% style="width:456px" %)read only
1408 +|(% style="width:151px" %)@W_HSW9|(% style="width:169px" %)Ethernet IP2|(% style="width:456px" %)read only
1409 +|(% style="width:151px" %)@W_HSW10|(% style="width:169px" %)Ethernet IP3|(% style="width:456px" %)read only
1410 +|(% style="width:151px" %)@W_HSW11|(% style="width:169px" %)Ethernet IP4|(% style="width:456px" %)read only
1411 +|(% style="width:151px" %)@W_HSW12|(% style="width:169px" %)Ethernet Mask 1|(% style="width:456px" %)read only
1412 +|(% style="width:151px" %)@W_HSW13|(% style="width:169px" %)Ethernet Mask 2|(% style="width:456px" %)read only
1413 +|(% style="width:151px" %)@W_HSW14|(% style="width:169px" %)Ethernet Mask 3|(% style="width:456px" %)read only
1414 +|(% style="width:151px" %)@W_HSW15|(% style="width:169px" %)Ethernet Mask 4|(% style="width:456px" %)read only
1415 +|(% style="width:151px" %)@W_HSW16|(% style="width:169px" %)Ethernet Gateway 1|(% style="width:456px" %)read only
1416 +|(% style="width:151px" %)@W_HSW17|(% style="width:169px" %)Ethernet Gateway 2|(% style="width:456px" %)read only
1417 +|(% style="width:151px" %)@W_HSW18|(% style="width:169px" %)Ethernet Gateway 3|(% style="width:456px" %)read only
1418 +|(% style="width:151px" %)@W_HSW19|(% style="width:169px" %)Ethernet Gateway 4|(% style="width:456px" %)read only
1419 +|(% style="width:151px" %)@W_HSW21|(% style="width:169px" %)Ethernet MAC1|(% style="width:456px" %)read only
1420 +|(% style="width:151px" %)@W_HSW22|(% style="width:169px" %)Ethernet MAC2|(% style="width:456px" %)read only
1421 +|(% style="width:151px" %)@W_HSW23|(% style="width:169px" %)Ethernet MAC3|(% style="width:456px" %)read only
1422 +|(% style="width:151px" %)@W_HSW24|(% style="width:169px" %)Ethernet MAC4|(% style="width:456px" %)read only
1423 +|(% style="width:151px" %)@W_HSW25|(% style="width:169px" %)Ethernet MAC3|(% style="width:456px" %)read only
1424 +|(% style="width:151px" %)@W_HSW26|(% style="width:169px" %)Ethernet MAC4|(% style="width:456px" %)read only
1425 +|(% style="width:151px" %)@W_HSW128|(% style="width:169px" %)WIFI IP1|(% style="width:456px" %)read only
1426 +|(% style="width:151px" %)@W_HSW129|(% style="width:169px" %)WIFI IP2|(% style="width:456px" %)read only
1427 +|(% style="width:151px" %)@W_HSW130|(% style="width:169px" %)WIFI IP3|(% style="width:456px" %)read only
1428 +|(% style="width:151px" %)@W_HSW131|(% style="width:169px" %)WIFI IP4|(% style="width:456px" %)read only
1429 +|(% style="width:151px" %)@W_HSW132|(% style="width:169px" %)WIFI Mask 1|(% style="width:456px" %)read only
1430 +|(% style="width:151px" %)@W_HSW133|(% style="width:169px" %)WIFI Mask 2|(% style="width:456px" %)read only
1431 +|(% style="width:151px" %)@W_HSW134|(% style="width:169px" %)WIFI Mask 3|(% style="width:456px" %)read only
1432 +|(% style="width:151px" %)@W_HSW135|(% style="width:169px" %)WIFI Mask 4|(% style="width:456px" %)read only
1433 +|(% style="width:151px" %)@W_HSW136|(% style="width:169px" %)WIFI Gateway 1|(% style="width:456px" %)read only
1434 +|(% style="width:151px" %)@W_HSW137|(% style="width:169px" %)WIFI Gateway 2|(% style="width:456px" %)read only
1435 +|(% style="width:151px" %)@W_HSW138|(% style="width:169px" %)WIFI Gateway 3|(% style="width:456px" %)read only
1436 +|(% style="width:151px" %)@W_HSW139|(% style="width:169px" %)WIFI Gateway 4|(% style="width:456px" %)read only
1437 +|(% style="width:151px" %)@W_HSW140|(% style="width:169px" %)WIFI MAC1|(% style="width:456px" %)read only
1438 +|(% style="width:151px" %)@W_HSW141|(% style="width:169px" %)WIFI MAC2|(% style="width:456px" %)read only
1439 +|(% style="width:151px" %)@W_HSW142|(% style="width:169px" %)WIFI MAC3|(% style="width:456px" %)read only
1440 +|(% style="width:151px" %)@W_HSW143|(% style="width:169px" %)WIFI MAC4|(% style="width:456px" %)read only
1441 +|(% style="width:151px" %)@W_HSW144|(% style="width:169px" %)WIFI MAC5|(% style="width:456px" %)read only
1442 +|(% style="width:151px" %)@W_HSW145|(% style="width:169px" %)WIFI MAC6|(% style="width:456px" %)read only
1443 +|(% style="width:151px" %)@W_HSW146|(% style="width:169px" %)WIFI Signal value|(% style="width:456px" %)read only
1444 +|(% style="width:151px" %)@W_HSW148|(% style="width:169px" %)4G IP1|(% style="width:456px" %)read only
1445 +|(% style="width:151px" %)@W_HSW149|(% style="width:169px" %)4G IP2|(% style="width:456px" %)read only
1446 +|(% style="width:151px" %)@W_HSW150|(% style="width:169px" %)4G IP3|(% style="width:456px" %)read only
1447 +|(% style="width:151px" %)@W_HSW151|(% style="width:169px" %)4G IP4|(% style="width:456px" %)read only
1448 +|(% style="width:151px" %)@W_HSW152|(% style="width:169px" %)4G Mask 1|(% style="width:456px" %)read only
1449 +|(% style="width:151px" %)@W_HSW153|(% style="width:169px" %)4G Mask 2|(% style="width:456px" %)read only
1450 +|(% style="width:151px" %)@W_HSW154|(% style="width:169px" %)4G Mask 3|(% style="width:456px" %)read only
1451 +|(% style="width:151px" %)@W_HSW155|(% style="width:169px" %)4G Mask 4|(% style="width:456px" %)read only
1452 +|(% style="width:151px" %)@W_HSW156|(% style="width:169px" %)4G Gateway 1|(% style="width:456px" %)read only
1453 +|(% style="width:151px" %)@W_HSW157|(% style="width:169px" %)4G Gateway 2|(% style="width:456px" %)read only
1454 +|(% style="width:151px" %)@W_HSW158|(% style="width:169px" %)4G Gateway 3|(% style="width:456px" %)read only
1455 +|(% style="width:151px" %)@W_HSW159|(% style="width:169px" %)4G Gateway 4|(% style="width:456px" %)read only
1456 +|(% style="width:151px" %)@W_HSW160|(% style="width:169px" %)4G MAC1|(% style="width:456px" %)read only
1457 +|(% style="width:151px" %)@W_HSW161|(% style="width:169px" %)4G MAC2|(% style="width:456px" %)read only
1458 +|(% style="width:151px" %)@W_HSW162|(% style="width:169px" %)4G MAC3|(% style="width:456px" %)read only
1459 +|(% style="width:151px" %)@W_HSW163|(% style="width:169px" %)4G MAC4|(% style="width:456px" %)read only
1460 +|(% style="width:151px" %)@W_HSW164|(% style="width:169px" %)4G MAC5|(% style="width:456px" %)read only
1461 +|(% style="width:151px" %)@W_HSW165|(% style="width:169px" %)4G MAC6|(% style="width:456px" %)read only
1462 +|(% style="width:151px" %)@W_HSW166|(% style="width:169px" %)4G Signal value|(% style="width:456px" %)read only
1544 1544  
1545 -2.8 SIM card status addr_getword("@W_HSW179") (read only)
1464 +**Others**
1546 1546  
1547 -1: No card detected
1466 +* Access password: addr_getstring("@W_HSW27", 16)
1467 +* Machine code: addr_getstring("@W_HSW60", 64)
1468 +* Positioning method (@W_HSW167): (read only)
1469 +** Latitude and longitude
1470 +*** Longitude: addr_getdouble("@W_HSW168") (read only)
1471 +*** Latitude: addr_getdouble("@W_HSW172") (read only)
1472 +** Base station positioning
1473 +*** LAC: addr_getdword("@W_HSW168") (read only)
1474 +*** CI: addr_getdword("@W_HSW172") (read only)
1475 +* Convert base station to latitude and longitude via API
1476 +** Longitude: addr_getdouble("@W_HSW187") (read only)
1477 +** Latitude: addr_getdouble("@W_HSW183") (read only)
1478 +* Operator information: addr_getdword("@W_HSW181") (read only)
1479 +* Networking mode: addr_getword("@W_HSW177") (read only)
1480 +** 0: Ethernet
1481 +** 1: WIFI
1482 +** 2: 4G
1483 +** 3: 2G
1484 +* Map fence flag: addr_getword("@W_HSW178") (read only)
1485 +** 0: No map fence is drawn
1486 +** 1: Draw a map fence and the box is in the fence
1487 +** 2: Draw a map fence and the box is not in the fence
1488 +* SIM card status addr_getword("@W_HSW179") (read only)
1489 +** 1: No card detected
1490 +** 2: Card insertion detected
1491 +** 3: The card status is abnormal
1492 +* MQTT status addr_getword("@W_HSW180") (read only)
1493 +** 1: online, 2: offline
1494 +* IO interface, X is read only, Y is read and write (H series)
1495 +** addr_getbit(addr1), addr_setbit(addr2)
1496 +** addr1:"@B_Y0" "@B_Y1" "@B_X0" "@B_X1"
1497 +** addr2:"@B_Y0" "@B_Y1"
1498 +* Obtaining IMEI (read only)
1499 +*
1500 +* Obtaining ICCID (read only)
1548 1548  
1549 -2: Card insertion detected
1550 -
1551 -3: The card status is abnormal
1552 -
1553 -2.9 MQTT status addr_getword("@W_HSW180") (read only)
1554 -
1555 -1: online, 2: offline
1556 -
1557 -2.10 IO interface, X is read only, Y is read and write (H series)
1558 -
1559 -addr_getbit(addr1), addr_setbit(addr2)
1560 -
1561 -addr1:"@B_Y0" "@B_Y1" "@B_X0" "@B_X1"
1562 -
1563 -addr2:"@B_Y0" "@B_Y1"
1564 -
1565 1565  (((
1566 1566  = **9 General Functions** =
1567 1567  )))