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.13
edited by Stone Wu
on 2022/07/12 09:45
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,11 +1386,57 @@
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  
1303 +== **https request** ==
1304 +
1305 +Example:
1306 +
1307 +{{code language="LUA"}}
1308 +local json = require("json")
1309 +
1310 +local https = require("https")
1311 +
1312 +functions https_demo.main()
1313 +
1314 +local url = "https://XXXXXXXXXXXXXXXXXXXXXXXXXX"
1315 +
1316 +local body = {}
1317 +
1318 +body["XXXXXX"] = "XXXXX"
1319 +
1320 +body["XXXXXXX"] = "XXXXXXXXXXX"
1321 +
1322 +local bodyJson = json.encode(body)
1323 +
1324 +local header = {}
1325 +
1326 +header["content-type"] = "application/json"
1327 +
1328 +local result_table, code, headers, status = https.request(url,
1329 +
1330 +bodyJson)
1331 +
1332 +if code == 200 then
1333 +
1334 +print("https suc")
1335 +
1336 +return true
1337 +
1338 +else
1339 +
1340 +print("https fail")
1341 +
1342 +return nil
1343 +
1344 +end
1345 +
1346 +end
1347 +{{/code}}
1348 +
1394 1394  (((
1395 1395  = **8 Internal register** =
1396 1396  )))
... ... @@ -1397,41 +1397,50 @@
1397 1397  
1398 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):
1399 1399  
1400 -**~1. **Access by word, prefix @W_HDW,
1355 +**Access by word, prefix @W_HDW.**
1401 1401  
1402 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.
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.
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.**
1405 1405  
1406 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.
1407 1407  
1363 +(% class="box infomessage" %)
1364 +(((
1408 1408  **✎Note: **
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.
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 +)))
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.
1413 1413  
1414 -**2.**The address of the bit address @B_HDX has a decimal point, while the word address is an integer.
1373 +(% class="box errormessage" %)
1374 +(((
1415 1415  
1376 +)))
1377 +
1416 1416  (((
1417 -== **8.1 Data storage area(HDW/HDX)** ==
1379 +== **bvData storage area(HDW/HDX)** ==
1418 1418  )))
1419 1419  
1420 1420  The system storage area (HDW) of the V-BOX is used to store temporary data:
1421 1421  
1422 -~1. Access by word, the number range is: "@W_HDW0"-"@W_HDW299999".
1384 +1. Access by word, the number range is: "@W_HDW0"-"@W_HDW299999".
1385 +1. Access in bit mode, the number range is: "@B_HDX0.0"-"@B_HDX299999.15".
1423 1423  
1424 -2. Access in bit mode, the number range is: "@B_HDX0.0"-"@B_HDX299999.15".
1425 -
1426 1426  (((
1427 1427  == **8.2 Special data area (HSW/HSX)** ==
1428 1428  )))
1429 1429  
1391 +(% class="box errormessage" %)
1392 +(((
1430 1430  **✎Note: **
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).
1395 +* //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).
1396 +* //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.
1397 +)))
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.
1435 1435  
1436 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:
1437 1437