Changes for page 01 Lua Functions

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

From version 5.8
edited by Stone Wu
on 2022/07/12 09:25
Change comment: (Autosaved)
To version 8.1
edited by Stone Wu
on 2022/07/12 11:24
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -140,7 +140,7 @@
140 140  
141 141   Table 2-1
142 142  
143 -(% class="box errormessage" %)
143 +(% class="box infomessage" %)
144 144  (((
145 145  **✎Note: **If HLword enters any other value, it will be treated as invalid.
146 146  )))
... ... @@ -608,11 +608,12 @@
608 608  Attempting to use a script to open a serial port in an unsupported mode will result in an error directly, as below.
609 609  
610 610  |(((
611 +{{code language="LUA"}}
611 611  local setup = {
612 612  
613 613  name = "COM2",
614 614  
615 -mode = 422, ~-~- COM2 does not support RS422
616 +mode = 422, -- COM2 does not support RS422
616 616  
617 617  ...
618 618  
... ... @@ -619,6 +619,7 @@
619 619  }
620 620  
621 621  serial.open(setup)
623 +{{/code}}
622 622  )))
623 623  
624 624  **Data bit:**
... ... @@ -627,13 +627,11 @@
627 627  1. When the data bit is 8, the maximum value of data transmission is 255 (0xFF), which supports the transmission of any character.
628 628  
629 629  (((
630 -== **3.1 serial.open(table setup)** ==
632 +== **serial.open(table setup)** ==
631 631  )))
632 632  
633 -**Function:**
635 +**Function:** Enable one serial port
634 634  
635 -Enable one serial port
636 -
637 637  **Parameters:**
638 638  
639 639  //Setup// is a Lua table; it needs to contain the following fields
... ... @@ -667,17 +667,13 @@
667 667  Failed: multi
668 668  
669 669  (((
670 -== **3.2 serial.close(serial obj)** ==
670 +== **serial.close(serial obj)** ==
671 671  )))
672 672  
673 -**Function:**
673 +**Function:** Disable the serial port
674 674  
675 -Disable the serial port
675 +**Parameters: **//Obj //is the object returned by serial.open
676 676  
677 -**Parameters:**
678 -
679 -//Obj //is the object returned by serial.open
680 -
681 681  **Return:**
682 682  
683 683  Succeed: true
... ... @@ -685,13 +685,11 @@
685 685  Failed: multi
686 686  
687 687  (((
688 -== **3.3 serial:read(number bytes[, number timeout])** ==
684 +== **serial:read(number bytes[, number timeout])** ==
689 689  )))
690 690  
691 -**Function:**
687 +**Function:** Read the specified byte length serial port data
692 692  
693 -Read the specified byte length serial port data
694 -
695 695  **Parameters:**
696 696  
697 697  //bytes//: number of bytes
... ... @@ -705,15 +705,13 @@
705 705  Failed: multi
706 706  
707 707  (((
708 -== **3.4 serial:write(string data)** ==
702 +== **serial:write(string data)** ==
709 709  )))
710 710  
711 -**Function:**
705 +**Function:** Write the specified byte length to serial port data
712 712  
713 -Write the specified byte length to serial port data
707 +**Parameters: **
714 714  
715 -**Parameters:**
716 -
717 717  //data//: serial port data
718 718  
719 719  **Return:**
... ... @@ -723,13 +723,11 @@
723 723  Failed: multi
724 724  
725 725  (((
726 -== **3.5 serial:flush([number flag])** ==
718 +== **serial:flush([number flag])** ==
727 727  )))
728 728  
729 -**Function:**
721 +**Function:** Clear the serial port buffer
730 730  
731 -Clear the serial port buffer
732 -
733 733  **Parameters:**
734 734  
735 735  //[flag=2]// clear option: 0: read, 1: write, 2: read-write
... ... @@ -741,17 +741,13 @@
741 741  Failed: multi
742 742  
743 743  (((
744 -== **3.6 serial:close()** ==
734 +== **serial:close()** ==
745 745  )))
746 746  
747 -**Function:**
737 +**Function:** Close the serial port object
748 748  
749 -Close the serial port object
739 +**Parameters:** None
750 750  
751 -**Parameters:**
752 -
753 -None
754 -
755 755  **Return:**
756 756  
757 757  Succeed: true
... ... @@ -768,12 +768,10 @@
768 768  
769 769  **QoS value:**
770 770  
771 -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.
757 +* 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.
758 +* 1: The message is delivered at least once, but the message may be delivered repeatedly.
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.
772 772  
773 -1: The message is delivered at least once, but the message may be delivered repeatedly.
774 -
775 -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.
776 -
777 777  **Retain flag:**
778 778  
779 779  0: not reserved;
... ... @@ -781,13 +781,11 @@
781 781  1: reserved
782 782  
783 783  (((
784 -== **4.1 mqtt.create(string serverurl, string clientid)** ==
768 +== **mqtt.create(string serverurl, string clientid)** ==
785 785  )))
786 786  
787 -**Function:**
771 +**Function:** Create an MQTT object
788 788  
789 -Create an MQTT object
790 -
791 791  **Parameters:**
792 792  
793 793  //serverurl //Server url
... ... @@ -809,17 +809,13 @@
809 809  Failed: multi
810 810  
811 811  (((
812 -== **4.2 mqtt.close(mqtt obj)** ==
794 +== **mqtt.close(mqtt obj)** ==
813 813  )))
814 814  
815 -**Function:**
797 +**Function:** Close the specified MQTT object (if the connected server will be disconnected automatically)
816 816  
817 -Close the specified MQTT object (if the connected server will be disconnected automatically)
799 +**Parameters: **//Obj //ithe objeced returned by mqtt.create
818 818  
819 -**Parameters:**
820 -
821 -//Obj //is the objeced returned by mqtt.create
822 -
823 823  **Return:**
824 824  
825 825  Succeed: true
... ... @@ -827,32 +827,25 @@
827 827  Failed: multi
828 828  
829 829  (((
830 -== **4.3 mqtt:connect(table conn[, table lwt, table cart])** ==
808 +== **mqtt:connect(table conn[, table lwt, table cart])** ==
831 831  )))
832 832  
833 -**Function:**
811 +**Function:**Establish a connection to the server
834 834  
835 -Establish a connection to the server
836 -
837 837  **Parameters:**
838 838  
839 839  //conn //is a Lua table and needs to contain the following fields
840 840  
841 -//string conn.username//, user name
817 +* //string conn.username//, user name
818 +* //string conn.password//, password
819 +* //number [conn.netway=0]//, networking method, if set error number will use Ethernet method
820 +** 0: Ethernet
821 +** 1: WIFI
822 +** 2: 4G
823 +** 3: 2G
824 +* //number [conn.keepalive=60]//, keep connected heartbeat interval, in seconds
825 +* //number [conn.cleansession=1]//, empty the session as described below:
842 842  
843 -//string conn.password//, password
844 -
845 -//number [conn.netway=0]//, networking method, if set error number will use Ethernet method
846 -
847 -* 0: Ethernet
848 -* 1: WIFI
849 -* 2: 4G
850 -* 3: 2G
851 -
852 -//number [conn.keepalive=60]//, keep connected heartbeat interval, in seconds
853 -
854 -//number [conn.cleansession=1]//, empty the session as described below:
855 -
856 856  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:
857 857  
858 858  * 1 (Empty): If a session exists and is 1, the previous session messages on the client and server are emptied.
... ... @@ -860,14 +860,11 @@
860 860  
861 861  //lwt// (Last Will and Testament) is a Lua table and needs to contain the following fields
862 862  
863 -//string lwt.topic//, topic
834 +* //string lwt.topic//, topic
835 +* //string lwt.message//, message
836 +* //number [lwt.qos=0]//, qos value
837 +* //number [lwt.retain=0]//, retain flag
864 864  
865 -//string lwt.message//, message
866 -
867 -//number [lwt.qos=0]//, qos value
868 -
869 -//number [lwt.retain=0]//, retain flag
870 -
871 871  **Return:**
872 872  
873 873  Succeed: true
... ... @@ -875,17 +875,13 @@
875 875  Failed: multi
876 876  
877 877  (((
878 -== **4.4 mqtt:disconnect([number timeout])** ==
846 +== **mqtt:disconnect([number timeout])** ==
879 879  )))
880 880  
881 -**Function:**
849 +**Function:** Disconnect from the MQTT server
882 882  
883 -Disconnect from the MQTT server
851 +**Parameters: **//[timeout=10000] //Disconnect waiting timeout, in milliseconds
884 884  
885 -**Parameters:**
886 -
887 -//[timeout=10000] //Disconnect waiting timeout, in milliseconds
888 -
889 889  **Return:**
890 890  
891 891  Succeed: true
... ... @@ -893,17 +893,13 @@
893 893  Failed: multi
894 894  
895 895  (((
896 -== **4.5 mqtt:isconnected()** ==
860 +== **mqtt:isconnected()** ==
897 897  )))
898 898  
899 -**Function:**
863 +**Function:** Test whether or not a client is currently connected to the MQTT server
900 900  
901 -Test whether or not a client is currently connected to the MQTT server
865 +**Parameters:** None
902 902  
903 -**Parameters:**
904 -
905 -None
906 -
907 907  **Return:**
908 908  
909 909  Succeed: true ~-~-Connected
... ... @@ -911,13 +911,11 @@
911 911  Failed: false ~-~- Unconnected and other unknowns
912 912  
913 913  (((
914 -== **4.6 mqtt:subscribe(string topic, number qos)** ==
874 +== **mqtt:subscribe(string topic, number qos)** ==
915 915  )))
916 916  
917 -**Function:**
877 +**Function: **Subscribe to the topic (before the subscription, the user must first call the connect method to connect to the server)
918 918  
919 -Subscribe to the topic (before the subscription, the user must first call the connect method to connect to the server)
920 -
921 921  **Parameters:**
922 922  
923 923  //topic//, topic name
... ... @@ -931,13 +931,11 @@
931 931  Failed: multi
932 932  
933 933  (((
934 -== **4.7 mqtt:unsubscribe(string topic)** ==
892 +== **mqtt:unsubscribe(string topic)** ==
935 935  )))
936 936  
937 -**Function:**
895 +**Function:** Unsubscribe topic
938 938  
939 -Unsubscribe topic
940 -
941 941  **Parameters:**
942 942  
943 943  //topic//, topic name
... ... @@ -949,13 +949,11 @@
949 949  Failed: multi
950 950  
951 951  (((
952 -== **4.8 mqtt:publish(string topic, string message, number qos, number retain[, number timeout])** ==
908 +== **mqtt:publish(string topic, string message, number qos, number retain[, number timeout])** ==
953 953  )))
954 954  
955 -**Function:**
911 +**Function:** Publish message
956 956  
957 -Publish message
958 -
959 959  **Parameters:**
960 960  
961 961  //topic//, topic name
... ... @@ -975,17 +975,13 @@
975 975  Failed: multi
976 976  
977 977  (((
978 -== **4.9 mqtt:close()** ==
932 +== **mqtt:close()** ==
979 979  )))
980 980  
981 -**Function:**
935 +**Function:** Close the mqtt object (the connection to the server will be automatically disconnected)
982 982  
983 -Close the mqtt object (the connection to the server will be automatically disconnected)
937 +**Parameters:** None
984 984  
985 -**Parameters:**
986 -
987 -None
988 -
989 989  **Return:**
990 990  
991 991  Succeed: true
... ... @@ -993,13 +993,11 @@
993 993  Failed: multi
994 994  
995 995  (((
996 -== **4.10 mqtt:on(string method, function callback)** ==
946 +== **mqtt:on(string method, function callback)** ==
997 997  )))
998 998  
999 -**Function:**
949 +**Function:** Register event callback function
1000 1000  
1001 -Register event callback function
1002 -
1003 1003  **Parameters:**
1004 1004  
1005 1005  //method//, It can be message/arrived/offline, these 3 types of events
... ... @@ -1012,20 +1012,17 @@
1012 1012  
1013 1013  Parameter:
1014 1014  
1015 -//Topic//, topic name
963 +* //Topic//, topic name
964 +* //Message//, content
1016 1016  
1017 -//Message//, content
966 +**2."arrived" is published by publish, this function will be called after the publication arrives**
1018 1018  
1019 -**2.**"arrived" is published by publish, this function will be called after the publication arrives
1020 -
1021 1021  //Callback// prototype~:// function ()//
1022 1022  
1023 -Parameter:
970 +Parameter: None
1024 1024  
1025 -None
972 +**3.This function will be called after the "offline" connection is lost**
1026 1026  
1027 -**3.**This function will be called after the "offline" connection is lost
1028 -
1029 1029  //Callback// prototype~:// function (string cause)//
1030 1030  
1031 1031  Parameter:
... ... @@ -1039,17 +1039,13 @@
1039 1039  Failed: multi
1040 1040  
1041 1041  (((
1042 -== **4.11 mqtt:setup_cfg()** ==
987 +== **mqtt:setup_cfg()** ==
1043 1043  )))
1044 1044  
1045 -**Function:**
990 +**Function:** Cloud mode interface, to obtain MQTT information configured by the cloud platform
1046 1046  
1047 -Cloud mode interface, to obtain MQTT information configured by the cloud platform
992 +**Parameters:** None
1048 1048  
1049 -**Parameters:**
1050 -
1051 -None
1052 -
1053 1053  **Return:**
1054 1054  
1055 1055  //serverurl, clientid, conn, lwt, cart //(5 returns, respectively, server address, client ID, connection table, last word table, certificate table)
... ... @@ -1067,39 +1067,27 @@
1067 1067  Lua only has a table data structure, so all arrays and key-value objects of json will be returned as a table.
1068 1068  
1069 1069  (((
1070 -== **5.1 json.encode( lua_object )** ==
1011 +== **json.encode( lua_object )** ==
1071 1071  )))
1072 1072  
1073 -**Function:**
1014 +**Function: **Convert lua data type to json string
1074 1074  
1075 -Convert lua data type to json string
1016 +**Parameters: **Lua data type (including boolean, number, string, table)
1076 1076  
1077 -**Parameters:**
1018 +**Return:** Json format string
1078 1078  
1079 -Lua data type (including boolean, number, string, table)
1080 -
1081 -**Return:**
1082 -
1083 -Json format string
1084 -
1085 1085  (((
1086 -== **5.2 json.decode(string json_string)** ==
1021 +== **json.decode(string json_string)** ==
1087 1087  )))
1088 1088  
1089 -**Function:**
1024 +**Function:** Convert json string to lua data type
1090 1090  
1091 -Convert json string to lua data type
1026 +**Parameters: **//json_string//, string of json data structure
1092 1092  
1093 -**Parameters:**
1028 +**Return: **Lua data type
1094 1094  
1095 -//json_string//, string of json data structure
1096 -
1097 -**Return:**
1098 -
1099 -Lua data type
1100 -
1101 1101  (((
1102 -== **5.3 json.null** ==
1031 +== **json.null** ==
1103 1103  )))
1104 1104  
1105 1105  **Function:**
... ... @@ -1106,32 +1106,24 @@
1106 1106  
1107 1107  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.
1108 1108  
1109 -**Parameters:**
1038 +**Parameters:** None
1110 1110  
1111 -None
1040 +**Return: **None
1112 1112  
1113 -**Return:**
1114 -
1115 -None
1116 -
1117 1117  = **6 Cloud mode** =
1118 1118  
1119 1119  The cloud interface is only used in cloud mode, and V-NET mode is not available.
1120 1120  
1121 1121  (((
1122 -== **6.1 bns_get_alldata()** ==
1047 +== **bns_get_alldata()** ==
1123 1123  )))
1124 1124  
1125 -**Function:**
1050 +**Function:** Obtain all monitoring points (point table) data configured by the end user
1126 1126  
1127 -Obtain all monitoring points (point table) data configured by the end user
1052 +**✎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
1128 1128  
1129 -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
1054 +**Parameters:** None
1130 1130  
1131 -**Parameters:**
1132 -
1133 -None
1134 -
1135 1135  **Return:**
1136 1136  
1137 1137  Succeed: table two-dimensional array, the structure is as follows
... ... @@ -1144,8 +1144,9 @@
1144 1144  
1145 1145  If there is no custom configuration, return an empty table, otherwise, return with "field name/field content"
1146 1146  
1147 -E.g:
1068 +**For example:**
1148 1148  
1070 +{{code language="LUA"}}
1149 1149  {
1150 1150  
1151 1151  [1]= {[1]=1234, [2]=1, [3]='temp', [4]='23.5', [5]={"fruit"="apple"}},
... ... @@ -1158,16 +1158,15 @@
1158 1158  
1159 1159  }
1160 1160  
1161 -Failed: //table// empty table
1083 +Failed: table empty table
1084 +{{/code}}
1162 1162  
1163 1163  (((
1164 -== **6.2 bns_get_config(string from)** ==
1087 +== **bns_get_config(string from)** ==
1165 1165  )))
1166 1166  
1167 -**Function:**
1090 +**Function:** Obtain custom configuration parameters with the specified from type
1168 1168  
1169 -Obtain custom configuration parameters with the specified from type
1170 -
1171 1171  **parameter:**
1172 1172  
1173 1173  from type, there are the following two categories, the string must be all lowercase
... ... @@ -1185,13 +1185,11 @@
1185 1185  Failed~:// table// empty table
1186 1186  
1187 1187  (((
1188 -== **6.3 bns_get_data(string name, string data)** ==
1109 +== **bns_get_data(string name, string data)** ==
1189 1189  )))
1190 1190  
1191 -**Function:**
1112 +**Function:**write data to the name of the monitoring point
1192 1192  
1193 -write data to the name of the monitoring point
1194 -
1195 1195  **parameter:**
1196 1196  
1197 1197  //name //The name of the monitoring point
... ... @@ -1205,7 +1205,7 @@
1205 1205  Failed: nil
1206 1206  
1207 1207  (((
1208 -== **6.4 bns_get_data(string name)** ==
1127 +== **bns_get_data(string name)** ==
1209 1209  )))
1210 1210  
1211 1211  **Function:**
... ... @@ -1223,17 +1223,13 @@
1223 1223  Failed: nil
1224 1224  
1225 1225  (((
1226 -== **6.5 bns_get_datadesc()** ==
1145 +== **bns_get_datadesc()** ==
1227 1227  )))
1228 1228  
1229 -**Function:**
1148 +**Function: **Obtain all configured communication ports and monitoring point information
1230 1230  
1231 -Obtain all configured communication ports and monitoring point information
1150 +**Parameters:** None
1232 1232  
1233 -**Parameters:**
1234 -
1235 -None
1236 -
1237 1237  **Return:**
1238 1238  
1239 1239  Succeed: table three-dimensional array, the structure is as follows
... ... @@ -1246,13 +1246,15 @@
1246 1246  
1247 1247  Type (1: switch, 2: number, 3: string)
1248 1248  
1249 -E.g:
1250 - {
1164 +**For example:**
1251 1251  
1252 -[1]={~-~-The first communication port
1166 +{{code language="LUA"}}
1167 +{
1253 1253  
1254 -[1]={~-~-monitoring point array of the first communication port
1169 +[1]={--The first communication port
1255 1255  
1171 +[1]={--monitoring point array of the first communication port
1172 +
1256 1256  [1]={[1]=11,[2]='data1',[3]=3,[4]=2},
1257 1257  
1258 1258  [2]={[1]=12,[2]='data2',[3]=3,[4]=2},
... ... @@ -1259,23 +1259,23 @@
1259 1259  
1260 1260  ...
1261 1261  
1262 -[n]={[1]=xx,[2]='datan',[3]=x,[4]=x},~-~-n monitoring points
1179 +[n]={[1]=xx,[2]='datan',[3]=x,[4]=x},--n monitoring points
1263 1263  
1264 1264  },
1265 1265  
1266 -[2]=14, ~-~-ID
1183 +[2]=14, --ID
1267 1267  
1268 -[3]='Modbus TCP' ~-~-n monitoring points
1185 +[3]='Modbus TCP' --n monitoring points
1269 1269  
1270 1270  },
1271 1271  
1272 -[2]={~-~-The second communication port
1189 +[2]={--The second communication port
1273 1273  
1274 -[1]={},~-~-The monitoring point of the second communication port is not configured and is empty
1191 +[1]={},--The monitoring point of the second communication port is not configured and is empty
1275 1275  
1276 -[2]=15, ~-~-ID
1193 +[2]=15, --ID
1277 1277  
1278 -[3]='WECON' ~-~-communication protocol name
1195 +[3]='WECON' --communication protocol name
1279 1279  
1280 1280  },
1281 1281  
... ... @@ -1282,21 +1282,18 @@
1282 1282  ...n communication ports and so on
1283 1283  
1284 1284  }
1202 +{{/code}}
1285 1285  
1286 1286  Failed~:// table// empty table
1287 1287  
1288 1288  (((
1289 -== **6.6 bns_get_machineinfo()** ==
1207 +== **bns_get_machineinfo()** ==
1290 1290  )))
1291 1291  
1292 -**Function:**
1210 +**Function:** get machine information
1293 1293  
1294 -get machine information
1212 +**Parameters:** None
1295 1295  
1296 -**Parameters:**
1297 -
1298 -None
1299 -
1300 1300  **Return:**
1301 1301  
1302 1302  Succeed: 3 string type results (model, machine code, software version)
... ... @@ -1304,13 +1304,11 @@
1304 1304  Failed: nil
1305 1305  
1306 1306  (((
1307 -== **6.7 bns_get_groupdata(string name)** ==
1221 +== **bns_get_groupdata(string name)** ==
1308 1308  )))
1309 1309  
1310 -**Function:**
1224 +**Function:** Get all monitoring point data under the specified group name
1311 1311  
1312 -Get all monitoring point data under the specified group name
1313 -
1314 1314  **parameter:**
1315 1315  
1316 1316  //Name  // group name
... ... @@ -1322,17 +1322,13 @@
1322 1322  Failed: //table// empty table
1323 1323  
1324 1324  (((
1325 -== **6.8 bns_get_groupdesc()** ==
1237 +== **bns_get_groupdesc()** ==
1326 1326  )))
1327 1327  
1328 -**Function:**
1240 +**Function:** Get all group information
1329 1329  
1330 -Get all group information
1242 +**Parameters:** None
1331 1331  
1332 -**Parameters:**
1333 -
1334 -None
1335 -
1336 1336  **Return:**
1337 1337  
1338 1338  Succeed: //table// two-dimensional array, the structure is as follows
... ... @@ -1346,17 +1346,13 @@
1346 1346  Failed: //table  // empty table
1347 1347  
1348 1348  (((
1349 -== **6.9 bns_get_onecache(string msg)** ==
1257 +== **bns_get_onecache(string msg)** ==
1350 1350  )))
1351 1351  
1352 -**Function:**
1260 +**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.
1353 1353  
1354 -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.
1262 +**Parameters: **//msg// String
1355 1355  
1356 -**Parameters:**
1357 -
1358 -//msg// String
1359 -
1360 1360  **Return:**
1361 1361  
1362 1362  Succeed: true
... ... @@ -1364,23 +1364,20 @@
1364 1364  Failed: nil
1365 1365  
1366 1366  (((
1367 -== **6.10 bns_get_allcache()** ==
1271 +== **bns_get_allcache()** ==
1368 1368  )))
1369 1369  
1370 -**Function:**
1274 +**Function:** Get all the cached content (once the internal cache file will be emptied)
1371 1371  
1372 -Get all the cached content (once the internal cache file will be emptied)
1276 +**Parameters:** None
1373 1373  
1374 -**Parameters:**
1375 -
1376 -None
1377 -
1378 1378  **Return:**
1379 1379  
1380 1380  Succeed: //table// one-dimensional array
1381 1381  
1382 -E.g:
1282 +**For example:**
1383 1383  
1284 +{{code language="LUA"}}
1384 1384  {
1385 1385  
1386 1386  [1]="This is the oldest message", - the first is the oldest message
... ... @@ -1392,6 +1392,7 @@
1392 1392  [n]="This is the latest message", - the last is the latest message
1393 1393  
1394 1394  }
1296 +{{/code}}
1395 1395  
1396 1396  Failede: nil
1397 1397  
... ... @@ -1402,194 +1402,232 @@
1402 1402  Network communication includes Http request interface, this document does not provide interface description, please refer to the online document for how to use it.
1403 1403  
1404 1404  (((
1405 -== **7.1 http request** ==
1307 +== **http request** ==
1406 1406  )))
1407 1407  
1408 1408  [[http:~~/~~/w3.impa.br/~~~~diego/software/luasocket/http.html#request>>url:http://w3.impa.br/~~diego/software/luasocket/http.html#request]]
1409 1409  
1410 -(((
1411 -= **8 Internal register** =
1412 -)))
1312 +== **https request** ==
1413 1413  
1414 -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):
1314 +**For example:**
1415 1415  
1416 -**~1. **Access by word, prefix @W_HDW,
1316 +{{code language="LUA"}}
1317 +local json = require("json")
1417 1417  
1418 -For example: @W_HDW0 represents the first word of the system data area, @W_HDW1 represents the second word of the system data area.
1319 +local https = require("https")
1419 1419  
1420 -**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.
1321 +functions https_demo.main()
1421 1421  
1422 -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.
1323 +local url = "https://XXXXXXXXXXXXXXXXXXXXXXXXXX"
1423 1423  
1424 -**✎Note: **
1325 +local body = {}
1425 1425  
1426 -**~1. **The address in @B_HDX is taken from the word in @W_HDW, so pay special attention when using the address.
1327 +body["XXXXXX"] = "XXXXX"
1427 1427  
1428 -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.
1329 +body["XXXXXXX"] = "XXXXXXXXXXX"
1429 1429  
1430 -**2.**The address of the bit address @B_HDX has a decimal point, while the word address is an integer.
1331 +local bodyJson = json.encode(body)
1431 1431  
1432 -(((
1433 -== **8.1 Data storage area(HDW/HDX)** ==
1434 -)))
1333 +local header = {}
1435 1435  
1436 -The system storage area (HDW) of the V-BOX is used to store temporary data:
1335 +header["content-type"] = "application/json"
1437 1437  
1438 -~1. Access by word, the number range is: "@W_HDW0"-"@W_HDW299999".
1337 +local result_table, code, headers, status = https.request(url,
1439 1439  
1440 -2. Access in bit mode, the number range is: "@B_HDX0.0"-"@B_HDX299999.15".
1339 +bodyJson)
1441 1441  
1442 -(((
1443 -== **8.2 Special data area (HSW/HSX)** ==
1444 -)))
1341 +if code == 200 then
1445 1445  
1446 -**✎Note: **
1343 +print("https suc")
1447 1447  
1448 -//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).
1345 +return true
1449 1449  
1450 -//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.
1347 +else
1451 1451  
1452 -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:
1349 +print("https fail")
1453 1453  
1454 -(% class="table-bordered" %)
1455 -|address|function|Read and write status: read only, write only, read and write
1456 -|@W_HSW0|restart|read and write
1457 -|@W_HSW1|Box time: year|read and write
1458 -|@W_HSW2|Box time: month|read and write
1459 -|@W_HSW3|Box time: day|read and write
1460 -|@W_HSW4|Box time: hour|read and write
1461 -|@W_HSW5|Box time: minute|read and write
1462 -|@W_HSW6|Box time: second|read and write
1463 -|@W_HSW7|Box time: week|read and write
1464 -|@W_HSW8|Ethernet IP1|read only
1465 -|@W_HSW9|Ethernet IP2|read only
1466 -|@W_HSW10|Ethernet IP3|read only
1467 -|@W_HSW11|Ethernet IP4|read only
1468 -|@W_HSW12|Ethernet Mask 1|read only
1469 -|@W_HSW13|Ethernet Mask 2|read only
1470 -|@W_HSW14|Ethernet Mask 3|read only
1471 -|@W_HSW15|Ethernet Mask 4|read only
1472 -|@W_HSW16|Ethernet Gateway 1|read only
1473 -|@W_HSW17|Ethernet Gateway 2|read only
1474 -|@W_HSW18|Ethernet Gateway 3|read only
1475 -|@W_HSW19|Ethernet Gateway 4|read only
1476 -|@W_HSW21|Ethernet MAC1|read only
1477 -|@W_HSW22|Ethernet MAC2|read only
1478 -|@W_HSW23|Ethernet MAC3|read only
1479 -|@W_HSW24|Ethernet MAC4|read only
1480 -|@W_HSW25|Ethernet MAC3|read only
1481 -|@W_HSW26|Ethernet MAC4|read only
1482 -|@W_HSW128|WIFI IP1|read only
1483 -|@W_HSW129|WIFI IP2|read only
1484 -|@W_HSW130|WIFI IP3|read only
1485 -|@W_HSW131|WIFI IP4|read only
1486 -|@W_HSW132|WIFI Mask 1|read only
1487 -|@W_HSW133|WIFI Mask 2|read only
1488 -|@W_HSW134|WIFI Mask 3|read only
1489 -|@W_HSW135|WIFI Mask 4|read only
1490 -|@W_HSW136|WIFI Gateway 1|read only
1491 -|@W_HSW137|WIFI Gateway 2|read only
1492 -|@W_HSW138|WIFI Gateway 3|read only
1493 -|@W_HSW139|WIFI Gateway 4|read only
1494 -|@W_HSW140|WIFI MAC1|read only
1495 -|@W_HSW141|WIFI MAC2|read only
1496 -|@W_HSW142|WIFI MAC3|read only
1497 -|@W_HSW143|WIFI MAC4|read only
1498 -|@W_HSW144|WIFI MAC5|read only
1499 -|@W_HSW145|WIFI MAC6|read only
1500 -|@W_HSW146|WIFI Signal value|read only
1501 -|@W_HSW148|4G IP1|read only
1502 -|@W_HSW149|4G IP2|read only
1503 -|@W_HSW150|4G IP3|read only
1504 -|@W_HSW151|4G IP4|read only
1505 -|@W_HSW152|4G Mask 1|read only
1506 -|@W_HSW153|4G Mask 2|read only
1507 -|@W_HSW154|4G Mask 3|read only
1508 -|@W_HSW155|4G Mask 4|read only
1509 -|@W_HSW156|4G Gateway 1|read only
1510 -|@W_HSW157|4G Gateway 2|read only
1511 -|@W_HSW158|4G Gateway 3|read only
1512 -|@W_HSW159|4G Gateway 4|read only
1513 -|@W_HSW160|4G MAC1|read only
1514 -|@W_HSW161|4G MAC2|read only
1515 -|@W_HSW162|4G MAC3|read only
1516 -|@W_HSW163|4G MAC4|read only
1517 -|@W_HSW164|4G MAC5|read only
1518 -|@W_HSW165|4G MAC6|read only
1519 -|@W_HSW166|4G Signal value|read only
1351 +return nil
1520 1520  
1521 -2. Other
1353 +end
1522 1522  
1523 -2.1 Access password: addr_getstring("@W_HSW27", 16)
1355 +end
1356 +{{/code}}
1524 1524  
1525 -2.2 Machine code: addr_getstring("@W_HSW60", 64)
1358 +(((
1359 += **8 Internal register** =
1360 +)))
1526 1526  
1527 -2.3 Positioning method (@W_HSW167): (read only)
1362 +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):
1528 1528  
1529 -~1. Latitude and longitude
1364 +**Access by word, prefix @W_HDW.**
1530 1530  
1531 -Longitude: addr_getdouble("@W_HSW168") (read only)
1366 +For example: @W_HDW0 represents the first word of the system data area, @W_HDW1 represents the second word of the system data area.
1532 1532  
1533 -Latitude: addr_getdouble("@W_HSW172") (read only)
1368 +**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.**
1534 1534  
1535 -2. Base station positioning
1370 +**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.
1536 1536  
1537 -LAC: addr_getdword("@W_HSW168") (read only)
1372 +(% class="box infomessage" %)
1373 +(((
1374 +**✎Note: **
1538 1538  
1539 -CI: addr_getdword("@W_HSW172") (read only)
1376 +* The address in @B_HDX is taken from the word in @W_HDW, so pay special attention when using the address.
1377 +** 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.
1378 +* The address of the bit address @B_HDX has a decimal point, while the word address is an integer.
1379 +)))
1540 1540  
1541 -2.4 Convert base station to latitude and longitude via API
1542 1542  
1543 -Longitude: addr_getdouble("@W_HSW187") (read only)
1382 +(((
1383 +== **Data storage area(HDW/HDX)** ==
1384 +)))
1544 1544  
1545 -Latitude: addr_getdouble("@W_HSW183") (read only)
1386 +The system storage area (HDW) of the V-BOX is used to store temporary data:
1546 1546  
1547 -2.5 Operator information: addr_getdword("@W_HSW181") (read only)
1388 +1. Access by word, the number range is: "@W_HDW0"-"@W_HDW299999".
1389 +1. Access in bit mode, the number range is: "@B_HDX0.0"-"@B_HDX299999.15".
1548 1548  
1549 -2.6 Networking mode: addr_getword("@W_HSW177") (read only)
1391 +(((
1392 +== **Special data area (HSW/HSX)** ==
1550 1550  
1551 -0: Ethernet, 1: WIFI, 2: 4G, 3: 2G
1394 +(% class="box infomessage" %)
1395 +(((
1396 +**✎Note: **
1552 1552  
1553 -2.7 Map fence flag: addr_getword("@W_HSW178") (read only)
1398 +* //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).
1399 +* //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.
1400 +)))
1401 +)))
1554 1554  
1555 -0: No map fence is drawn
1403 +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:
1556 1556  
1557 -1: Draw a map fence and the box is in the fence
1405 +(% class="table-bordered" %)
1406 +|=(% style="width: 151px;" %)address|=(% style="width: 169px;" %)function|=(% style="width: 456px;" %)Read and write status: read only, write only, read and write
1407 +|(% style="width:151px" %)@W_HSW0|(% style="width:169px" %)restart|(% style="width:456px" %)read and write
1408 +|(% style="width:151px" %)@W_HSW1|(% style="width:169px" %)Box time: year|(% style="width:456px" %)read and write
1409 +|(% style="width:151px" %)@W_HSW2|(% style="width:169px" %)Box time: month|(% style="width:456px" %)read and write
1410 +|(% style="width:151px" %)@W_HSW3|(% style="width:169px" %)Box time: day|(% style="width:456px" %)read and write
1411 +|(% style="width:151px" %)@W_HSW4|(% style="width:169px" %)Box time: hour|(% style="width:456px" %)read and write
1412 +|(% style="width:151px" %)@W_HSW5|(% style="width:169px" %)Box time: minute|(% style="width:456px" %)read and write
1413 +|(% style="width:151px" %)@W_HSW6|(% style="width:169px" %)Box time: second|(% style="width:456px" %)read and write
1414 +|(% style="width:151px" %)@W_HSW7|(% style="width:169px" %)Box time: week|(% style="width:456px" %)read and write
1415 +|(% style="width:151px" %)@W_HSW8|(% style="width:169px" %)Ethernet IP1|(% style="width:456px" %)read only
1416 +|(% style="width:151px" %)@W_HSW9|(% style="width:169px" %)Ethernet IP2|(% style="width:456px" %)read only
1417 +|(% style="width:151px" %)@W_HSW10|(% style="width:169px" %)Ethernet IP3|(% style="width:456px" %)read only
1418 +|(% style="width:151px" %)@W_HSW11|(% style="width:169px" %)Ethernet IP4|(% style="width:456px" %)read only
1419 +|(% style="width:151px" %)@W_HSW12|(% style="width:169px" %)Ethernet Mask 1|(% style="width:456px" %)read only
1420 +|(% style="width:151px" %)@W_HSW13|(% style="width:169px" %)Ethernet Mask 2|(% style="width:456px" %)read only
1421 +|(% style="width:151px" %)@W_HSW14|(% style="width:169px" %)Ethernet Mask 3|(% style="width:456px" %)read only
1422 +|(% style="width:151px" %)@W_HSW15|(% style="width:169px" %)Ethernet Mask 4|(% style="width:456px" %)read only
1423 +|(% style="width:151px" %)@W_HSW16|(% style="width:169px" %)Ethernet Gateway 1|(% style="width:456px" %)read only
1424 +|(% style="width:151px" %)@W_HSW17|(% style="width:169px" %)Ethernet Gateway 2|(% style="width:456px" %)read only
1425 +|(% style="width:151px" %)@W_HSW18|(% style="width:169px" %)Ethernet Gateway 3|(% style="width:456px" %)read only
1426 +|(% style="width:151px" %)@W_HSW19|(% style="width:169px" %)Ethernet Gateway 4|(% style="width:456px" %)read only
1427 +|(% style="width:151px" %)@W_HSW21|(% style="width:169px" %)Ethernet MAC1|(% style="width:456px" %)read only
1428 +|(% style="width:151px" %)@W_HSW22|(% style="width:169px" %)Ethernet MAC2|(% style="width:456px" %)read only
1429 +|(% style="width:151px" %)@W_HSW23|(% style="width:169px" %)Ethernet MAC3|(% style="width:456px" %)read only
1430 +|(% style="width:151px" %)@W_HSW24|(% style="width:169px" %)Ethernet MAC4|(% style="width:456px" %)read only
1431 +|(% style="width:151px" %)@W_HSW25|(% style="width:169px" %)Ethernet MAC3|(% style="width:456px" %)read only
1432 +|(% style="width:151px" %)@W_HSW26|(% style="width:169px" %)Ethernet MAC4|(% style="width:456px" %)read only
1433 +|(% style="width:151px" %)@W_HSW128|(% style="width:169px" %)WIFI IP1|(% style="width:456px" %)read only
1434 +|(% style="width:151px" %)@W_HSW129|(% style="width:169px" %)WIFI IP2|(% style="width:456px" %)read only
1435 +|(% style="width:151px" %)@W_HSW130|(% style="width:169px" %)WIFI IP3|(% style="width:456px" %)read only
1436 +|(% style="width:151px" %)@W_HSW131|(% style="width:169px" %)WIFI IP4|(% style="width:456px" %)read only
1437 +|(% style="width:151px" %)@W_HSW132|(% style="width:169px" %)WIFI Mask 1|(% style="width:456px" %)read only
1438 +|(% style="width:151px" %)@W_HSW133|(% style="width:169px" %)WIFI Mask 2|(% style="width:456px" %)read only
1439 +|(% style="width:151px" %)@W_HSW134|(% style="width:169px" %)WIFI Mask 3|(% style="width:456px" %)read only
1440 +|(% style="width:151px" %)@W_HSW135|(% style="width:169px" %)WIFI Mask 4|(% style="width:456px" %)read only
1441 +|(% style="width:151px" %)@W_HSW136|(% style="width:169px" %)WIFI Gateway 1|(% style="width:456px" %)read only
1442 +|(% style="width:151px" %)@W_HSW137|(% style="width:169px" %)WIFI Gateway 2|(% style="width:456px" %)read only
1443 +|(% style="width:151px" %)@W_HSW138|(% style="width:169px" %)WIFI Gateway 3|(% style="width:456px" %)read only
1444 +|(% style="width:151px" %)@W_HSW139|(% style="width:169px" %)WIFI Gateway 4|(% style="width:456px" %)read only
1445 +|(% style="width:151px" %)@W_HSW140|(% style="width:169px" %)WIFI MAC1|(% style="width:456px" %)read only
1446 +|(% style="width:151px" %)@W_HSW141|(% style="width:169px" %)WIFI MAC2|(% style="width:456px" %)read only
1447 +|(% style="width:151px" %)@W_HSW142|(% style="width:169px" %)WIFI MAC3|(% style="width:456px" %)read only
1448 +|(% style="width:151px" %)@W_HSW143|(% style="width:169px" %)WIFI MAC4|(% style="width:456px" %)read only
1449 +|(% style="width:151px" %)@W_HSW144|(% style="width:169px" %)WIFI MAC5|(% style="width:456px" %)read only
1450 +|(% style="width:151px" %)@W_HSW145|(% style="width:169px" %)WIFI MAC6|(% style="width:456px" %)read only
1451 +|(% style="width:151px" %)@W_HSW146|(% style="width:169px" %)WIFI Signal value|(% style="width:456px" %)read only
1452 +|(% style="width:151px" %)@W_HSW148|(% style="width:169px" %)4G IP1|(% style="width:456px" %)read only
1453 +|(% style="width:151px" %)@W_HSW149|(% style="width:169px" %)4G IP2|(% style="width:456px" %)read only
1454 +|(% style="width:151px" %)@W_HSW150|(% style="width:169px" %)4G IP3|(% style="width:456px" %)read only
1455 +|(% style="width:151px" %)@W_HSW151|(% style="width:169px" %)4G IP4|(% style="width:456px" %)read only
1456 +|(% style="width:151px" %)@W_HSW152|(% style="width:169px" %)4G Mask 1|(% style="width:456px" %)read only
1457 +|(% style="width:151px" %)@W_HSW153|(% style="width:169px" %)4G Mask 2|(% style="width:456px" %)read only
1458 +|(% style="width:151px" %)@W_HSW154|(% style="width:169px" %)4G Mask 3|(% style="width:456px" %)read only
1459 +|(% style="width:151px" %)@W_HSW155|(% style="width:169px" %)4G Mask 4|(% style="width:456px" %)read only
1460 +|(% style="width:151px" %)@W_HSW156|(% style="width:169px" %)4G Gateway 1|(% style="width:456px" %)read only
1461 +|(% style="width:151px" %)@W_HSW157|(% style="width:169px" %)4G Gateway 2|(% style="width:456px" %)read only
1462 +|(% style="width:151px" %)@W_HSW158|(% style="width:169px" %)4G Gateway 3|(% style="width:456px" %)read only
1463 +|(% style="width:151px" %)@W_HSW159|(% style="width:169px" %)4G Gateway 4|(% style="width:456px" %)read only
1464 +|(% style="width:151px" %)@W_HSW160|(% style="width:169px" %)4G MAC1|(% style="width:456px" %)read only
1465 +|(% style="width:151px" %)@W_HSW161|(% style="width:169px" %)4G MAC2|(% style="width:456px" %)read only
1466 +|(% style="width:151px" %)@W_HSW162|(% style="width:169px" %)4G MAC3|(% style="width:456px" %)read only
1467 +|(% style="width:151px" %)@W_HSW163|(% style="width:169px" %)4G MAC4|(% style="width:456px" %)read only
1468 +|(% style="width:151px" %)@W_HSW164|(% style="width:169px" %)4G MAC5|(% style="width:456px" %)read only
1469 +|(% style="width:151px" %)@W_HSW165|(% style="width:169px" %)4G MAC6|(% style="width:456px" %)read only
1470 +|(% style="width:151px" %)@W_HSW166|(% style="width:169px" %)4G Signal value|(% style="width:456px" %)read only
1558 1558  
1559 -2: Draw a map fence and the box is not in the fence
1472 +**Others**
1560 1560  
1561 -2.8 SIM card status addr_getword("@W_HSW179") (read only)
1474 +* Access password: addr_getstring("@W_HSW27", 16)
1475 +* Machine code: addr_getstring("@W_HSW60", 64)
1476 +* Positioning method (@W_HSW167): (read only)
1477 +** Latitude and longitude
1478 +*** Longitude: addr_getdouble("@W_HSW168") (read only)
1479 +*** Latitude: addr_getdouble("@W_HSW172") (read only)
1480 +** Base station positioning
1481 +*** LAC: addr_getdword("@W_HSW168") (read only)
1482 +*** CI: addr_getdword("@W_HSW172") (read only)
1483 +* Convert base station to latitude and longitude via API
1484 +** Longitude: addr_getdouble("@W_HSW187") (read only)
1485 +** Latitude: addr_getdouble("@W_HSW183") (read only)
1486 +* Operator information: addr_getdword("@W_HSW181") (read only)
1487 +* Networking mode: addr_getword("@W_HSW177") (read only)
1488 +** 0: Ethernet
1489 +** 1: WIFI
1490 +** 2: 4G
1491 +** 3: 2G
1492 +* Map fence flag: addr_getword("@W_HSW178") (read only)
1493 +** 0: No map fence is drawn
1494 +** 1: Draw a map fence and the box is in the fence
1495 +** 2: Draw a map fence and the box is not in the fence
1496 +* SIM card status addr_getword("@W_HSW179") (read only)
1497 +** 1: No card detected
1498 +** 2: Card insertion detected
1499 +** 3: The card status is abnormal
1500 +* MQTT status addr_getword("@W_HSW180") (read only)
1501 +** 1: online, 2: offline
1502 +* IO interface, X is read only, Y is read and write (H series)
1503 +** addr_getbit(addr1), addr_setbit(addr2)
1504 +** addr1:"@B_Y0" "@B_Y1" "@B_X0" "@B_X1"
1505 +** addr2:"@B_Y0" "@B_Y1"
1506 +* Obtaining IMEI (read only)
1507 +** addr_getstring("@W_HSW191",17)
1508 +* Obtaining ICCID (read only)
1509 +** addr_getstring("@W_HSW225",15)
1562 1562  
1563 -1: No card detected
1511 +(((
1512 +== **Power-down storage area (HAW/HAX)** ==
1564 1564  
1565 -2: Card insertion detected
1514 +The system storage area (HAW) is used for the system power-down hold registers:
1566 1566  
1567 -3: The card status is abnormal
1516 +1. Accessed as a word, numbered in the range: "@W_HAW0"-"@W_HAW199999".
1517 +1. Accessed by bit, the numbering range is: "@B_HAX0.0"-"@B_HAX199999.15".
1568 1568  
1569 -2.9 MQTT status addr_getword("@W_HSW180") (read only)
1570 -
1571 -1: online, 2: offline
1572 -
1573 -2.10 IO interface, X is read only, Y is read and write (H series)
1574 -
1575 -addr_getbit(addr1), addr_setbit(addr2)
1576 -
1577 -addr1:"@B_Y0" "@B_Y1" "@B_X0" "@B_X1"
1578 -
1579 -addr2:"@B_Y0" "@B_Y1"
1580 -
1519 +(% class="box infomessage" %)
1581 1581  (((
1521 +**✎Note:** HAW/HAX is a power-down hold, that is, the registers of this type can retain the data before power-down in case of power-down.
1522 +)))
1523 +
1582 1582  = **9 General Functions** =
1583 1583  )))
1584 1584  
1585 1585  (((
1586 -== **9.1 send_sms_ira(string number, string message)** ==
1528 +== **send_sms_ira(string number, string message)** ==
1587 1587  )))
1588 1588  
1589 -**Function:**
1531 +**Function:** Use IRA character set to send English text messages
1590 1590  
1591 -Use IRA character set to send English text messages
1592 -
1593 1593  **Parameters:**
1594 1594  
1595 1595  //number: //number (up to 32 characters, the excess will be discarded)
... ... @@ -1603,7 +1603,7 @@
1603 1603  Failed: multi
1604 1604  
1605 1605  (((
1606 -== **9.2 send_sms_ucs2(string number, string message)** ==
1546 +== **send_sms_ucs2(string number, string message)** ==
1607 1607  )))
1608 1608  
1609 1609  **Function:**
... ... @@ -1623,13 +1623,11 @@
1623 1623  Failed: multi
1624 1624  
1625 1625  (((
1626 -== **9.3 sms_get_state(number id)** ==
1566 +== **sms_get_state(number id)** ==
1627 1627  )))
1628 1628  
1629 -**Function:**
1569 +**Function:** Get the status of the SMS
1630 1630  
1631 -Get the status of the SMS
1632 -
1633 1633  **parameter:**
1634 1634  
1635 1635  //id~:// SMS corresponding id
... ... @@ -1641,13 +1641,11 @@
1641 1641  Failed: multi
1642 1642  
1643 1643  (((
1644 -== **9.4 jwt_encode(table head, table payload, string aud, number iat, number exp, string key, int jwttype)** ==
1582 +== **jwt_encode(table head, table payload, string aud, number iat, number exp, string key, int jwttype)** ==
1645 1645  )))
1646 1646  
1647 -**Function:**
1585 +**Function:** Convert data to JWT format
1648 1648  
1649 -Convert data to JWT format
1650 -
1651 1651  **parameter:**
1652 1652  
1653 1653  //aud: //project name
... ... @@ -1692,19 +1692,20 @@
1692 1692  
1693 1693  //key~:// the private key required for encryption
1694 1694  
1695 -For example:
1631 +**For example:**
1696 1696  
1633 +{{code language="LUA"}}
1697 1697  function jwt.main()
1698 1698  
1699 -local PRIVATE_KEY = ~[~[~-~- Please enter the secret key~-~-]]
1636 +local PRIVATE_KEY = [[-- Please enter the secret key--]]
1700 1700  
1701 1701  local JWTType=0
1702 1702  
1703 -local payload = ~{~{key="test1",value="test1",type="0"},
1640 +local payload = {{key="test1",value="test1",type="0"},
1704 1704  
1705 1705  {key="test",value="123122131",type="1"}}
1706 1706  
1707 -local head = ~{~{ key="name",value="data",type="0"},
1644 +local head = {{ key="name",value="data",type="0"},
1708 1708  
1709 1709  {key="test2",value="test2",type="0"}}
1710 1710  
... ... @@ -1719,15 +1719,14 @@
1719 1719  print(en)
1720 1720  
1721 1721  End
1659 +{{/code}}
1722 1722  
1723 1723  (((
1724 -== **9.5 convertohex(number type, number value)** ==
1662 +== **convertohex(number type, number value)** ==
1725 1725  )))
1726 1726  
1727 -**Function:**
1665 +**Function:** Convert data into hexadecimal data
1728 1728  
1729 -Convert data into hexadecimal data
1730 -
1731 1731  **parameter:**
1732 1732  
1733 1733  //type~:// incoming data type 0:word 1:dword 2:float
... ... @@ -1740,106 +1740,445 @@
1740 1740  
1741 1741  Failed: multi
1742 1742  
1679 +== **crc.init(table prarm)** ==
1680 +
1681 +**Function:** Initialize the CRC
1682 +
1683 +**Parameters:**
1684 +
1685 +prarm is a Lua table and needs to contain the following fields.
1686 +
1687 +* string prarm name, see table 9-1 for details of the parameter model name When this parameter is passed in, the default table parameters are used and the poly,init,xorout,refin,and refout passed in are invalid.
1688 +* number prarm.width: the width, i.e. the number of CRC bits.
1689 +* number [prarm.poly]: short for the generated item in hexadecimal. For example, CRC-32 is 0x04C11DB7, ignoring the highest bit "1", i.e., the complete generation item is 0x104C11DB7.
1690 +* number [prarm.init]: the initialization preset value of the register (crc) at the beginning of the algorithm in hexadecimal.
1691 +* number [prarm.xorout]: the final CRC value obtained after heterodyning the calculation result with this parameter.
1692 +* number [prarm.refin]: whether each byte of the data to be measured is inverted by bit, true or false.
1693 +* number [prarm.refout]: after the calculation or before the heterodyning output, whether the whole data is inverted by bit, true or false.
1694 +
1695 +**Return:**
1696 +
1697 +Success: crc object
1698 +
1699 +Failure: multi, error code
1700 +
1743 1743  (((
1744 -== **9.6 set_network(table config)** ==
1702 +|=Parameter model name|=poly|=init|=xorout|=refin|=refout
1703 +|crc8|0x07|0x00|0x00|false|false
1704 +|crc8_cdma2000|0x9B|0xFF|0x00|false|false
1705 +|crc8_darc|0x39|0x00|0x00|true|true
1706 +|crc8_dvb_s2|0xD5|0x00|0x00|false|false
1707 +|crc8_ebu|0x1D|0xFF|0x00|true|true
1708 +|crc8_i_code|0x1D|0xFD|0x00|false|false
1709 +|crc8_itu|0x07|0x00|0x55|false|false
1710 +|crc8_maxim|0x31|0x00|0x00|true|true
1711 +|crc8_rohc|0x07|0xFF|0x00|true|true
1712 +|crc8_wcdma|0x9B|0x00|0x00|true|true
1713 +|crc8_sae_j1850|0x1D|0xFF|0xFF|false|false
1714 +|crc8_opensafety|0x2F|0x00|0x00|false|false
1715 +|crc16_tms37157|0x1021|0x3791|0x0000|true|true
1716 +|crc16_a|0x1021|0x6363|0x0000|true|true
1717 +|crc16_riello|0x1021|0x554D|0x0000|true|true
1718 +|crc16_ccitt_false|0x1021|0xFFFF|0x0000|false|false
1719 +|crc16_arc|0x8005|0x0000|0x0000|true|true
1720 +|crc16_arc_ccitt|0x1021|0x1D0F|0x0000|false|false
1721 +|crc16_buypass|0x8005|0x0000|0x0000|false|false
1722 +|crc16_cdma2000|0xC867|0xFFFF|0x0000|false|false
1723 +|crc16_dds110|0x8005|0x800D|0x0000|false|false
1724 +|crc16_dect_r|0x0589|0x0000|0x0001|false|false
1725 +|crc16_dect_x|0x0589|0x0000|0x0000|false|false
1726 +|crc16_dnp|0x3D65|0x0000|0xFFFF|true|true
1727 +|crc16_en_13757|0x3D65|0x0000|0xFFFF|false|false
1728 +|crc16_genibus|0x1021|0xFFFF|0xFFFF|false|false
1729 +|crc16_maxim|0x8005|0x0000|0xFFFF|true|true
1730 +|crc16_mcrf4xx|0x1021|0xFFFF|0x0000|true|true
1731 +|crc16_t10_dif|0x8BB7|0x0000|0x0000|false|false
1732 +|crc16_teledisk|0xA097|0x0000|0x0000|false|false
1733 +|crc16_usb|0x8005|0xFFFF|0xFFFF|true|true
1734 +|crc16_kermit|0x1021|0x0000|0x0000|true|true
1735 +
1736 +(% class="wikigeneratedid" %)
1737 +Table 9-1
1738 +
1739 +== **crc:calc(string crcValue)** ==
1740 +
1741 +**Function:** Calculate CRC result
1742 +
1743 +**Parameter:**
1744 +
1745 +crcValue: the value to be calculated
1746 +
1747 +**Return:**
1748 +
1749 +Succeed: calculated result
1750 +
1751 +Failed: multi, error code
1745 1745  )))
1746 1746  
1747 -**Function:**
1754 +**For example:**
1748 1748  
1749 -Set V-BOX network, take effect after restart
1756 +{{code language="LUA"}}
1757 +function crcTest.main()
1750 1750  
1751 -**parameter:**
1759 +local param = {
1752 1752  
1753 -//config~:// incoming network configuration table
1761 +name = '',
1754 1754  
1755 -1. connectMode: the way V-BOX connects to the server, 0: Ethernet, 1: WIFI, 2: 4G, 3: 2G, it is not allowed to be empty.
1756 -1. ethernetEnable: Whether to enable Ethernet, 1: enable, 0: disable, and it is not allowed to be empty.
1757 -1. ethernetLanIp: Set the LAN IP address. Only V-BOX with three network ports support this configuration, and other models of V-BOX do not support setting LAN IP. This item is allowed to be empty.
1758 -1. ethernetIpMode: Whether to enable Ethernet static IP, 1: Enable static IP, 0: DHCP, not allowed to be empty.
1759 -1. ethernetIp: The IP address needs to be configured when the Ethernet static IP is used, and it is not allowed to be empty.
1760 -1. ethernetNetmask: The subnet mask needs to be configured when Ethernet static IP is used, and it is not allowed to be empty.
1761 -1. ethernetGateway: The gateway can be configured when Ethernet static IP is used.
1763 +width = 64,
1762 1762  
1763 -1. When using the Ethernet network, if the Gateway is empty, V-BOX will not connect to the server.
1764 -1. If you only use Ethernet to directly connect to the PLC for communication, you do not need to configure a gateway.
1765 +poly = 0x42F0E1EBA9EA3693,
1765 1765  
1766 -1. ethernetFirstDns: You can configure the preferred DNS server when the Ethernet static IP is used, and it is allowed to be empty. If you use the Ethernet network and do not fill in the DNS server, V-BOX will not be connected to the server.
1767 -1. ethernetSpareDns: Alternate DNS server can be configured when the Ethernet static IP is used, and it is allowed to be empty.
1768 -1. wifiEnable: Whether to enable WIFI, 1: enable, 0: disable, it is not allowed to be empty. If it is a model that does not include WIFI, directly disable it.
1769 -1. wifiName: WIFI name, if WIFI is enabled, it is not allowed to be empty.
1770 -1. wifiPassword: WIFI password, it is allowed to be empty.
1771 -1. wifiIpMode: Whether to enable WIFI static IP, 1: Enable static IP, 0: DHCP, not allowed to be empty.
1772 -1. wifiIp: IP address needs to be configured when WIFI static IP is used, it is not allowed to be empty.
1773 -1. wifiNetmask: The subnet mask needs to be configured when WIFI static IP is used, and it is not allowed to be empty.
1774 -1. wifiGateway: The gateway can be configured when WIFI static IP is used, and it is not allowed to be empty.
1775 -1. wifiFirstDns: You can configure the preferred DNS server when the WIFI static IP is used, and it is allowed to be empty. If you use the WIFI network and do not fill in the DNS server, V-BOX will not be connected to the server.
1776 -1. wifiSpareDns: Alternate DNS server can be configured when the WIFI static IP is used, and it is allowed to be empty.
1777 -1. mobileEnable: Whether to enable the mobile network, 1: enable, 0: disable, it is not allowed to be empty, if it does not include 4G models, directly disable it.
1778 -1. mobileApnMode: Whether to manually configure the APN, 0: Use the default APN, 1: Manually configure the APN, it is not allowed to be empty.
1779 -1. apnName: APN name, if you choose to manually configure APN, it is not allowed to be empty.
1780 -1. apnPassword: APN username, it is allowed to be empty.
1781 -1. apnUserName: APN number, it is allowed to be empty.
1782 -1. apnNumber: APN number, it is allowed to be empty.
1767 +init = 0xFFFFFFFFFFFFFFFF,
1783 1783  
1769 +xorout = 0xFFFFFFFFFFFFFFFF,
1770 +
1771 +refin = 1,
1772 +
1773 +refout = 1
1774 +
1775 +}
1776 +
1777 +crc64,err = crc.init(param)
1778 +
1779 +if not crc64 then
1780 +
1781 +print("Crc init failed:", err)
1782 +else
1783 +
1784 +crcvalue = crc64:calc("123456789")
1785 +
1786 +print(string.format("crc64 calc :0X%16X", crcvalue))
1787 +
1788 +end
1789 +
1790 +end
1791 +{{/code}}
1792 +
1793 += **10 Special function for V-NET** =
1794 +
1795 +== **normal_get_alldata()** ==
1796 +
1797 +**Function: **Obtain the data of all the monitoring points
1798 +
1799 +**Parameter: None**
1800 +
1784 1784  **Return:**
1785 1785  
1786 -Succeed: true
1803 +Succeed: table two-dimensional arrays, as follows:
1787 1787  
1788 -Faied: multi
1805 +* Each item is a monitoring point and contains 4 attributes:
1806 +** 1: ID
1807 +** 2: status
1808 +** 3: tag name
1809 +** 4: value
1810 +* Status contains 3 enumerated values
1811 +** 0: offline
1812 +** 1: online
1813 +** 2: timeout
1814 +* Customization returns an empty table if there is no configuration, otherwise returns "field name/field content"
1789 1789  
1790 -(((
1791 -== **9.7 remote_com_start(string config)** ==
1792 -)))
1816 +**For example:**
1793 1793  
1794 -**Function:**
1818 +{{code language="LUA"}}
1819 +{
1795 1795  
1796 -start serial port pass-through
1821 +[1]= {[1]=1234, [2]=1, [3]='temp', [4]='23.5'},
1797 1797  
1823 +[2]= {[1]=1235, [2]=1, [3]='humi', [4]='67'},
1824 +
1825 +...
1826 +
1827 +[n]= {[1]=xxxx, [2]=x, [3]='xxxx', [4]='xx.x'},
1828 +
1829 +}
1830 +
1831 +Failed: table, empty table
1832 +{{/code}}
1833 +
1834 +== **normal_setdata_byname(string name, string data)** ==
1835 +
1836 +**Function:** Write data to the monitoring point name
1837 +
1798 1798  **Parameter:**
1799 1799  
1800 -//config: //incoming serial port parameter configuration, JSON format
1840 +name: the name of monitoring point
1801 1801  
1802 -1. type:0, serial port pass-through
1803 -1. port: serial port number marked on the V-BOX
1804 -1. comtype:0-RS232, 1-RS485, 2-RS422
1805 -1. baudrate: Baud Rate
1806 -1. data_length: Data Bits
1807 -1. stop_bit: Stop Bit
1808 -1. check_bit: Check Bit
1842 +data: the data to be written
1809 1809  
1810 1810  **Return:**
1811 1811  
1812 -Succeed: true
1846 +Succeed: string: The value of the monitor point before it is written
1813 1813  
1814 -Failed: multi
1848 +Failed: nil
1815 1815  
1816 -(((
1817 -== **9.8 remote_com_stop()** ==
1818 -)))
1850 +== **normal_getdata_byname(string name)** ==
1819 1819  
1820 -**Function:**
1852 +**Function:** Read the data of the monitoring point name
1821 1821  
1822 -close serial port pass-through
1854 +**Parameter:**
1823 1823  
1856 +name: the name of monitoring point
1857 +
1824 1824  **Return:**
1825 1825  
1826 -Succeed: true
1860 +Succeed: string
1827 1827  
1862 +Failed: nil
1863 +
1864 += **11 MySQL database operation** =
1865 +
1866 +== **luaMySql.init(string sourcename, string username, string password, string host, number port, string character)** ==
1867 +
1868 +**Function:** Configure database connection parameters
1869 +
1870 +**Parameter:**
1871 +
1872 +sourcename: the name of database
1873 +
1874 +username: the username of the connection
1875 +
1876 +password: the password of the connection
1877 +
1878 +host: the host name of the connection
1879 +
1880 +port: the host port of the connection
1881 +
1882 +character: the character set of the connection
1883 +
1884 +**Return:**
1885 +
1886 +Succeed: string
1887 +
1828 1828  Failed: multi
1829 1829  
1830 -(((
1831 -== **9.9 remote_com_state()** ==
1832 -)))
1890 +== **luaMySql.exec(string statement)** ==
1833 1833  
1834 -**Function:**
1892 +**Function:** Execute the given SQL statement without returning the result set (add, delete, change)
1835 1835  
1836 -query the serial port pass-through status and pass-through server domain name and port
1894 +**Parameter:**
1837 1837  
1896 +statement: the given SQL statement
1897 +
1838 1838  **Return:**
1839 1839  
1840 -Succeed:
1900 +Succeed: status: returns the number of rows affected by SQL statement execution.
1841 1841  
1842 -1. number, current pass-through status: 0-none 1,2-starting pass-through 3-penetrating 4,5-finishing pass-through 6-pass-through error
1843 -1. string, pass-through server domain name and port number, xxxx (domain name): xxx (port number)
1902 +Failed: nil, errorString
1844 1844  
1845 -Failed: multi
1904 +== **luaMySql.execWithResult(string statement)** ==
1905 +
1906 +**Function:** Execute the given SQL statement returning the result set (check)
1907 +
1908 +**Parameter:**
1909 +
1910 +statement: the given SQL statement
1911 +
1912 +**Return:**
1913 +
1914 +Succeed: table: returns the result set
1915 +
1916 +Failed: nil, errorString
1917 +
1918 +**For example:**
1919 +
1920 +{{code language="LUA"}}
1921 +mysql = require"mysqlclient"
1922 +
1923 +function DataInitRight()
1924 +
1925 +local dbName = "db_lua1"
1926 +
1927 +local user = "root"
1928 +
1929 +local pwd = "123456"
1930 +
1931 +local host = "192.168.56.186"
1932 +
1933 +local port = 3306
1934 +local character = "UTF8"
1935 +
1936 +mysql.init(dbName, user, pwd, host, port, character)
1937 +
1938 +end
1939 +
1940 +function ExecFunc()
1941 +
1942 +status, errorString = mysql.exec("delete from tb_lua1 where mykey =
1943 +
1944 +10;")
1945 +
1946 +if nil == status then
1947 +
1948 +print("ExecFunc() error:", errorString)
1949 +
1950 +return -1
1951 +
1952 +else
1953 +
1954 +print("the number of rows affected by the command:", status)
1955 +
1956 +end
1957 +
1958 +return 0
1959 +
1960 +end
1961 +
1962 +function ExecWithResultFunc()
1963 +
1964 +status, errorString = mysql.execWithResult("select * from tb_lua1;")
1965 +
1966 +if nil == status then
1967 +
1968 +print("ExecWithResultFunc() error:", errorString)
1969 +
1970 +return -1
1971 +
1972 +else
1973 +
1974 +print("ExecWithResultFunc()
1975 +
1976 +success
1977 +
1978 +: status
1979 +
1980 +type
1981 +
1982 +=
1983 +
1984 +",
1985 +
1986 +type(status))
1987 +
1988 +print("ExecWithResultFunc() success : status len = ", #status)
1989 +
1990 +local num = #status
1991 +
1992 +local i = 1
1993 +
1994 +if num > 0 then
1995 +
1996 +for i = 1, num, 1 do
1997 +
1998 +local var = string.format("select result[%d] :mykey = %d,
1999 +
2000 +value = %s", i, status[i].mykey, status[i].value)
2001 +
2002 +print(var)
2003 +
2004 +end
2005 +
2006 +end
2007 +
2008 +print("---------------")
2009 +
2010 +end
2011 +
2012 +return 0
2013 +end
2014 +
2015 +function luaMysql_apiTest.main()
2016 +
2017 +print("script running ...")
2018 +
2019 +DataInitRight()
2020 +
2021 +--use exec demo
2022 +
2023 +if ExecFunc() < 0 then
2024 +
2025 +return
2026 +
2027 +end
2028 +
2029 +--use execWithResult demo
2030 +
2031 +if ExecWithResultFunc() < 0 then
2032 +
2033 +return
2034 +
2035 +end
2036 +
2037 +print("script running success")
2038 +
2039 +end
2040 +{{/code}}
2041 +
2042 += **12 Message summary algorithm** =
2043 +
2044 +== **hmac(string hash_func, string key, string message)** ==
2045 +
2046 +**Function:** HMAC calculate
2047 +
2048 +**Function name**
2049 +
2050 +hash_func:
2051 +
2052 +* [md5, sha1, sha224, sha256, sha384, sha512]
2053 +* [sha512_224, sha512_256, sha3_224, sha3_256]
2054 +* [sha3_384, sha3_512]
2055 +
2056 +**Parameter:**
2057 +
2058 +key: the key
2059 +
2060 +message: message content
2061 +
2062 +**Return:**
2063 +
2064 +Succeed: string, calculation result
2065 +
2066 +Failed: nil
2067 +
2068 +**For example:**
2069 +
2070 +{{code language="LUA"}}
2071 +local sha = require"sha2"
2072 +
2073 +function hmac_test.main()
2074 +
2075 +local hmac = sha.hmac
2076 +
2077 +print(hmac(sha.sha1,
2078 +
2079 +"your key", "your message"))
2080 +
2081 +end
2082 +{{/code}}
2083 +
2084 +== **sha(string message** ==
2085 +
2086 +**Function:** SHA calculate
2087 +
2088 +**Function name:**
2089 +
2090 +sha:
2091 +
2092 +* sha1, sha224, sha256, sha384, sha512]
2093 +* [sha512_224, sha512_256, sha3_224, sha3_256]
2094 +* [sha3_384, sha3_512]
2095 +
2096 +**Parameter:**
2097 +
2098 +key: the key
2099 +
2100 +message: message content
2101 +
2102 +**Return:**
2103 +
2104 +Succeed: string, calculation result
2105 +
2106 +Failed: nil
2107 +
2108 +For example:
2109 +
2110 +{{code language="LUA"}}
2111 +local sha = require"sha2"
2112 +
2113 +function sha_test.main()
2114 +
2115 +local sha256 = sha.sha256
2116 +
2117 +print(sha256("your message"))
2118 +
2119 +end
2120 +{{/code}}