Changes for page 01 Lua Functions
Last modified by Theodore Xu on 2023/10/26 10:51
From version 5.1
edited by Leo
on 2022/06/16 17:19
on 2022/06/16 17:19
Change comment:
Renamed from xwiki:V-BOX.V-Net.1\.User Manual.04 Lua script.01\.Lua script function.WebHome
Summary
-
Page properties (4 modified, 0 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,1 +1,1 @@ 1 -01 Lua script function1 +01 Lua Functions - Parent
-
... ... @@ -1,1 +1,1 @@ 1 -V-BOX.V-Net.1\.User Manual.04 Lua script.WebHome1 +V-BOX.V-Net.1\.User Manual.04 Lua Script.WebHome - Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. Leo1 +XWiki.Stone - Content
-
... ... @@ -1,70 +1,66 @@ 1 -= **1 Interface Description** =1 += **1 Interface description** = 2 2 3 -== ** 1.1Data type definition** ==3 +== **Data type definition** == 4 4 5 - 6 6 |=**Type**|=**Description** 7 7 |=nil|Null 8 -|=boolean|Boolean ,the value is true or false9 -|=number|Integer or floating point ,signed or unsigned7 +|=boolean|Boolean (the value is true or false) 8 +|=number|Integer or floating point (signed or unsigned) 10 10 |=string|String 11 11 |=table|Table 12 12 |=function|Functions 13 13 14 -== ** 1.2Built-in function library clipping** ==13 +== **Built-in function library clipping** == 15 15 16 16 Full features supported: coroutine/debug/ math/ package/ string/ table/ utf8 17 17 18 -// ,,Some features supported (available in []):** **os[clock/ date/ difftime/ time],,//17 +//Some features supported (available in []):** **os[clock/ date/ difftime/ time]// 19 19 20 -// ,,Not supported: io/ file,,//19 +//Not supported: io/ file// 21 21 22 -== ** 1.3Return value description** ==21 +== **Return value description** == 23 23 24 24 The function return type multi means multiple return values (at least 2), usually: 25 25 26 -// ,,1st: nil;,,//25 +//1st: nil// 27 27 28 -// ,,2nd: the error message;,,//27 +//2nd: the error message// 29 29 30 30 ((( 31 -== ** 1.4Function parameter description** ==30 +== **Function parameter description** == 32 32 ))) 33 33 34 - **Assumethefunction prototype:**33 +Suppose a function prototype is defined: 35 35 36 - |(((37 - //student(string name, number age[, number class])//35 +{{code language="LUA"}} 36 +student(string name, number age[, number class]) 38 38 39 - **Function:**38 +Function: 40 40 41 41 Register a student 42 42 43 - **Parameters:**42 +Parameters: 44 44 45 - //name//: student name44 +name: student name 46 46 47 - //age//: student age46 +age: student age 48 48 49 - //[class=1]//: Student class48 +[class=1]: Student class 50 50 51 - **Return:**50 +Return: 52 52 53 53 Succeed: true 54 54 55 55 Failed: multi 56 - )))55 +{{/code}} 57 57 58 -** Comment**57 +**Explanation** 59 59 60 -1.string name indicates that the first parameter name is a string 59 +1. string name indicates that the first parameter name is a string 60 +1. number age indicates that the second parameter age is numeric 61 +1. [, number class] indicates that the third parameter class is a numeric value, and it is optional. Specify the default class in class 1 in the parameter description. 62 +1. **Any parameter in the [] is considered to be an optional parameter, and may not be transmitted when called. The default value will be given in the parameter description.** 61 61 62 -2.number age indicates that the second parameter age is numeric 63 - 64 -3. [, number class] indicates that the third parameter class is a numeric value, and it is optional. Specify the default class in class 1 in the parameter description. 65 - 66 -4. Any parameter in the brackets of [] is considered to be an optional parameter, and may not be transmitted when called. The default value will be given in the parameter description. 67 - 68 68 **Call example** 69 69 70 70 |((( ... ... @@ -93,28 +93,23 @@ 93 93 94 94 **Comment** 95 95 96 -1.From the print result, the second line of the first line is successfully called and returns true; the third line fails the call, the error message is translated as: the bar student has been registered, and there is indeed an error in the code. 92 +1. From the print result, the first line and the second line are successfully called and returns true; the third line fails the call, the error message is translated as: the bar student has been registered, and there is indeed an error in the code. 93 +1. The fourth line of code uses two variables to receive the return value. The call failed, the first variable stat is nil, and the second variable err stores the error message. Then print it out using print, which is the output of the third line. This example shows how to capture and view the error message. 97 97 98 - 2.Thefourth line ofcode uses two variables to receive the return value. The call failed,the first variable stat is nil, and the secondvariable err storesthe error message. Thenprintit out using print, which isthe output of the third line. This example shows how to capture andview the error message.95 +== **Modification of print function** == 99 99 100 - ==**1.5Modification of thePrintFunction**==97 +For the convenience of remote development, the print data is sent to the front end (web page) by means of network transmission, and the user can see the result of the debug output, because it consumes certain data and occupies the bandwidth of the server (or occupies server resources). So the following restrictions are made. 101 101 102 -For the convenience of remote development, the print data is sent to the front end (web page) by means of network transmission, and the user can see the result of the debug output, because it consumes certain data and occupies the bandwidth of the server (or occupies server resources). So make the following restrictions: 99 +1. **Interval limit: **When debugging, transfer once every 2~~3 seconds; 100 +1. **Data limit: **The transfer data cannot be larger than 1.5KB in a single transmission, otherwise the extra part will be ignored; 101 +1. **Transmission limit: **The data transmission will be stopped automatically after the debugging windows is not closed normally. Only when it is in the debugging window and the switch is on, there is data transmission; 103 103 104 -**1.Interval limit: **When debugging, transfer once every 2~~3 seconds; 105 - 106 -**2.Data limit: **The transfer data cannot be larger than 1.5KB, and the extra part will be ignored; 107 - 108 -**3.Transmission limit: **The data transmission will be stopped automatically after the debugging windows is not closed normally. Only when it is in the debugging window and the switch is on, there is data transmission; 109 - 110 110 Users should pay attention to avoid printing a lot of useless information, should minimize the debug output 111 111 112 112 In addition, please refer to the front-end documentation for how to use view debugging. 113 113 114 114 ((( 115 -= **2 Address Operation** = 116 - 117 - 108 += **2 Address operation** = 118 118 ))) 119 119 120 120 |=16-bit data formal|=HLword|=32-bit data formal|=HLword|= 64-bit data formal|=HLword ... ... @@ -147,20 +147,17 @@ 147 147 43218765 148 148 )))|10 149 149 150 - *If HLword entersany other value,it will be treated as invalid.141 + Table 2-1 151 151 152 - Demo: Reads a 32-bit floating-point number at position D0 of PLC 143 +(% class="box errormessage" %) 144 +((( 145 +**✎Note: **If HLword enters any other value, it will be treated as invalid. 146 +))) 153 153 148 +== **addr_getshort(string addr[, number type, number hlword])** == 154 154 150 +**Function:** Read 16-bit signed decimal address 155 155 156 -[[image:企业微信截图_20210506180640.png||height="301" width="600" class="img-thumbnail"]] 157 - 158 -== **2.1 addr_getshort(string addr[, number type, number hlword])** == 159 - 160 -**Function:** 161 - 162 -Read 16-bit signed decimal address 163 - 164 164 **Parameters:** 165 165 166 166 //addr//: address ... ... @@ -178,13 +178,11 @@ 178 178 Failed: multi 179 179 180 180 ((( 181 -== ** 2.2addr_setshort(string addr, number num[, number type, number hlword])** ==169 +== **addr_setshort(string addr, number num[, number type, number hlword])** == 182 182 ))) 183 183 184 -**Function:** 172 +**Function:** Write 16-bit signed decimal address 185 185 186 -Write 16-bit signed decimal address 187 - 188 188 **Parameters:** 189 189 190 190 //addr//: address ... ... @@ -202,13 +202,11 @@ 202 202 Failed: multi 203 203 204 204 ((( 205 -== ** 2.3addr_getword(string addr[, number type, number hlword])** ==191 +== **addr_getword(string addr[, number type, number hlword])** == 206 206 ))) 207 207 208 -**Function:** 194 +**Function:** Read 16-bit unsigned decimal address 209 209 210 -Read 16-bit unsigned decimal address 211 - 212 212 **Parameters:** 213 213 214 214 //addr//: address ... ... @@ -224,13 +224,11 @@ 224 224 Failed: multi 225 225 226 226 ((( 227 -== ** 2.4addr_setword(string addr, number num[, number type, number hlword])** ==211 +== **addr_setword(string addr, number num[, number type, number hlword])** == 228 228 ))) 229 229 230 -**Function:** 214 +**Function:**Write 16-bit unsigned decimal address 231 231 232 -Write 16-bit unsigned decimal address 233 - 234 234 **Parameters:** 235 235 236 236 //addr//: address ... ... @@ -248,13 +248,11 @@ 248 248 Failed: multi 249 249 250 250 ((( 251 -== ** 2.5addr_getint(string addr[, number type, number hlword])** ==233 +== **addr_getint(string addr[, number type, number hlword])** == 252 252 ))) 253 253 254 -**Function:** 236 +**Function:** Read 32-bit signed decimal address 255 255 256 -Read 32-bit signed decimal address 257 - 258 258 **Parameters:** 259 259 260 260 //addr//: address ... ... @@ -270,13 +270,11 @@ 270 270 Failed: multi 271 271 272 272 ((( 273 -== ** 2.6addr_setint(string addr, number num[, number type, number hlword])** ==253 +== **addr_setint(string addr, number num[, number type, number hlword])** == 274 274 ))) 275 275 276 -**Function:** 256 +**Function:** Write 32-bit signed decimal address 277 277 278 -Write 32-bit signed decimal address 279 - 280 280 **Parameters:** 281 281 282 282 //addr//: address ... ... @@ -294,13 +294,11 @@ 294 294 Failed: multi 295 295 296 296 ((( 297 -== ** 2.7addr_getdword(string addr[, number type, number hlword])** ==275 +== **addr_getdword(string addr[, number type, number hlword])** == 298 298 ))) 299 299 300 -**Function:** 278 +**Function:** Read 32-bit unsigned decimal address 301 301 302 -Read 32-bit unsigned decimal address 303 - 304 304 **Parameters:** 305 305 306 306 //addr//: address ... ... @@ -316,13 +316,11 @@ 316 316 Failed: multi 317 317 318 318 ((( 319 -== ** 2.8addr_setdword(string addr, number num[, number type, number hlword])** ==295 +== **addr_setdword(string addr, number num[, number type, number hlword])** == 320 320 ))) 321 321 322 -**Function:** 298 +**Function:** Write 32-bit unsigned decimal address 323 323 324 -Write 32-bit unsigned decimal address 325 - 326 326 **Parameters:** 327 327 328 328 //addr//: address ... ... @@ -340,13 +340,11 @@ 340 340 Failed: multi 341 341 342 342 ((( 343 -== ** 2.9addr_getbit(string addr[, number type])** ==317 +== **addr_getbit(string addr[, number type])** == 344 344 ))) 345 345 346 -**Function:** 320 +**Function:** Read a bit of the register address 347 347 348 -Read a bit of the register address 349 - 350 350 **Parameters:** 351 351 352 352 //addr//: address ... ... @@ -362,13 +362,11 @@ 362 362 Failed: multi 363 363 364 364 ((( 365 -== ** 2.10addr_setbit(string addr, number num[, number type])** ==337 +== **addr_setbit(string addr, number num[, number type])** == 366 366 ))) 367 367 368 -**Function:** 340 +**Function:** Write a bit of the register address 369 369 370 -Write a bit of the register address 371 - 372 372 **Parameters:** 373 373 374 374 //addr//: address ... ... @@ -386,13 +386,11 @@ 386 386 Failed: multi 387 387 388 388 ((( 389 -== ** 2.11addr_getfloat(string addr[, number type, number hlword])** ==359 +== **addr_getfloat(string addr[, number type, number hlword])** == 390 390 ))) 391 391 392 -**Function:** 362 +**Function:** Read 32-bit floating address 393 393 394 -Read 32-bit floating address 395 - 396 396 **Parameters:** 397 397 398 398 //addr//: address ... ... @@ -408,13 +408,11 @@ 408 408 Failed: multi 409 409 410 410 ((( 411 -== ** 2.12addr_setfloat(string addr, number num[, number type, number hlword])** ==379 +== **addr_setfloat(string addr, number num[, number type, number hlword])** == 412 412 ))) 413 413 414 -**Function:** 382 +**Function:** Write 32-bit floating address 415 415 416 -Write 32-bit floating address 417 - 418 418 **Parameters:** 419 419 420 420 //addr//: address ... ... @@ -432,13 +432,11 @@ 432 432 Failed: multi 433 433 434 434 ((( 435 -== ** 2.13addr_getdouble(string addr[, number type, number hlword])** ==401 +== **addr_getdouble(string addr[, number type, number hlword])** == 436 436 ))) 437 437 438 -**Function:** 404 +**Function:** Read 64-bit floating address 439 439 440 -Read 64-bit floating address 441 - 442 442 **Parameters:** 443 443 444 444 //addr//: address ... ... @@ -454,13 +454,11 @@ 454 454 Failed: multi 455 455 456 456 ((( 457 -== ** 2.14addr_setdouble(string addr, number num[, number type, number hlword])** ==421 +== **addr_setdouble(string addr, number num[, number type, number hlword])** == 458 458 ))) 459 459 460 -**Function:** 424 +**Function:** Write 64-bit floating address 461 461 462 -Write 64-bit floating address 463 - 464 464 **Parameters:** 465 465 466 466 addr: address ... ... @@ -478,13 +478,11 @@ 478 478 Failed: multi 479 479 480 480 ((( 481 -== ** 2.15addr_getstring(string addr, number length[, number type, number hlbyte])** ==443 +== **addr_getstring(string addr, number length[, number type, number hlbyte])** == 482 482 ))) 483 483 484 -**Function:** 446 +**Function:** Read the specified length string from address 485 485 486 -Read the specified length string from address 487 - 488 488 **Parameters:** 489 489 490 490 //addr//: address ... ... @@ -502,13 +502,11 @@ 502 502 Failed: multi 503 503 504 504 ((( 505 -== ** 2.16addr_setstring(string addr, string str[, number type, number hlbyte])** ==465 +== **addr_setstring(string addr, string str[, number type, number hlbyte])** == 506 506 ))) 507 507 508 -**Function:** 468 +**Function:** Write the specified length string to address 509 509 510 -Write the specified length string to address 511 - 512 512 **Parameters:** 513 513 514 514 //addr//: address ... ... @@ -526,13 +526,11 @@ 526 526 Failed: multi 527 527 528 528 ((( 529 -== ** 2.17addr_bmov(string dst, string src, number length)** ==487 +== **addr_bmov(string dst, string src, number length)** == 530 530 ))) 531 531 532 -**Function:** 490 +**Function:** Copy data from source address to destination address 533 533 534 -Copy data from source address to destination address 535 - 536 536 **Parameters:** 537 537 538 538 //dst//: destination address ... ... @@ -548,13 +548,11 @@ 548 548 **Failed: multi** 549 549 550 550 ((( 551 -== ** 2.18addr_fill(string addr, number num, number length)** ==507 +== **addr_fill(string addr, number num, number length)** == 552 552 ))) 553 553 554 -**Function:** 510 +**Function:** Write the same value to consecutive addresses 555 555 556 -Write the same value to consecutive addresses 557 - 558 558 **Parameters:** 559 559 560 560 //addr//: address ... ... @@ -570,13 +570,11 @@ 570 570 Failed: multi 571 571 572 572 ((( 573 -== ** 2.19addr_newnoaddr(string addr, number offset)** ==527 +== **addr_newnoaddr(string addr, number offset)** == 574 574 ))) 575 575 576 -**Function:** 530 +**Function:** Offset address value relative to //addr// 577 577 578 -Offset address value relative to //addr// 579 - 580 580 **Parameters:** 581 581 582 582 //addr//: address ... ... @@ -590,13 +590,11 @@ 590 590 Failed: multi 591 591 592 592 ((( 593 -== ** 2.20addr_newstataddr(string addr, number offset)** ==545 +== **addr_newstataddr(string addr, number offset)** == 594 594 ))) 595 595 596 -**Function:** 548 +**Function:** Offset station number relative to //addr //station number 597 597 598 -Offset station number relative to //addr //station number 599 - 600 600 **Parameters:** 601 601 602 602 //addr//: address ... ... @@ -609,12 +609,10 @@ 609 609 610 610 Failed: multi 611 611 612 -== ** 2.21addr_gethex64(string addr[, number type, number hlword])** ==562 +== **addr_gethex64(string addr[, number type, number hlword])** == 613 613 614 -**Function:** 564 +**Function:** Read 64-bit hexadecimal numbers 615 615 616 -Read 64-bit hexadecimal numbers 617 - 618 618 **Parameters:** 619 619 620 620 //addr//: address ... ... @@ -629,12 +629,10 @@ 629 629 630 630 Failed: multi 631 631 632 -== ** 2.22addr_sethex64(string addr, number num[, number type, number hlword])** ==580 +== **addr_sethex64(string addr, number num[, number type, number hlword])** == 633 633 634 -**Function:** 582 +**Function:** Write 64-bit hexadecimal addresses 635 635 636 -Write 64-bit hexadecimal addresses 637 - 638 638 **Parameters:** 639 639 640 640 //addr//: address ... ... @@ -655,11 +655,11 @@ 655 655 656 656 Operations on the serial port such as read, write, etc. must use ':' for full mode calls, ie operations on an open serial object. 657 657 658 -**Serial port name and mode :**604 +**Serial port name and mode** 659 659 660 660 The serial port configured in the communication configuration window cannot be configured again using the script. RS232 and RS458 (or RS422) can be used simultaneously, but RS422 and RS485 are mutually exclusive.For example, when the communication port is configured with COM1-485, the script can only open COM1-232, but not COM1-485/422. Similarly, when the communication port is configured with COM2-485, the script can only open COM2-232, but not COM2-485. 661 661 662 -Attempting to use a script to open a serial port in an unsupported mode will result in an error directly, as below 608 +Attempting to use a script to open a serial port in an unsupported mode will result in an error directly, as below. 663 663 664 664 |((( 665 665 local setup = { ... ... @@ -681,13 +681,11 @@ 681 681 1. When the data bit is 8, the maximum value of data transmission is 255 (0xFF), which supports the transmission of any character. 682 682 683 683 ((( 684 -== ** 3.1serial.open(table setup)** ==630 +== **serial.open(table setup)** == 685 685 ))) 686 686 687 -**Function:** 633 +**Function:** Enable one serial port 688 688 689 -Enable one serial port 690 - 691 691 **Parameters:** 692 692 693 693 //Setup// is a Lua table; it needs to contain the following fields ... ... @@ -721,17 +721,13 @@ 721 721 Failed: multi 722 722 723 723 ((( 724 -== ** 3.2serial.close(serial obj)** ==668 +== **serial.close(serial obj)** == 725 725 ))) 726 726 727 -**Function:** 671 +**Function:** Disable the serial port 728 728 729 - Disable the serialport673 +**Parameters: **//Obj //is the object returned by serial.open 730 730 731 -**Parameters:** 732 - 733 -//Obj //is the object returned by serial.open 734 - 735 735 **Return:** 736 736 737 737 Succeed: true ... ... @@ -739,13 +739,11 @@ 739 739 Failed: multi 740 740 741 741 ((( 742 -== ** 3.3serial:read(number bytes[, number timeout])** ==682 +== **serial:read(number bytes[, number timeout])** == 743 743 ))) 744 744 745 -**Function:** 685 +**Function:** Read the specified byte length serial port data 746 746 747 -Read the specified byte length serial port data 748 - 749 749 **Parameters:** 750 750 751 751 //bytes//: number of bytes ... ... @@ -759,15 +759,13 @@ 759 759 Failed: multi 760 760 761 761 ((( 762 -== ** 3.4serial:write(string data)** ==700 +== **serial:write(string data)** == 763 763 ))) 764 764 765 -**Function:** 703 +**Function:** Write the specified byte length to serial port data 766 766 767 - Writehepecifiedbyte length to serial port data705 +**Parameters: ** 768 768 769 -**Parameters:** 770 - 771 771 //data//: serial port data 772 772 773 773 **Return:** ... ... @@ -777,13 +777,11 @@ 777 777 Failed: multi 778 778 779 779 ((( 780 -== ** 3.5serial:flush([number flag])** ==716 +== **serial:flush([number flag])** == 781 781 ))) 782 782 783 -**Function:** 719 +**Function:** Clear the serial port buffer 784 784 785 -Clear the serial port buffer 786 - 787 787 **Parameters:** 788 788 789 789 //[flag=2]// clear option: 0: read, 1: write, 2: read-write ... ... @@ -795,17 +795,13 @@ 795 795 Failed: multi 796 796 797 797 ((( 798 -== ** 3.6serial:close()** ==732 +== **serial:close()** == 799 799 ))) 800 800 801 -**Function:** 735 +**Function:** Close the serial port object 802 802 803 - Closeheserial port object737 +**Parameters:** None 804 804 805 -**Parameters:** 806 - 807 -None 808 - 809 809 **Return:** 810 810 811 811 Succeed: true ... ... @@ -822,12 +822,10 @@ 822 822 823 823 **QoS value:** 824 824 825 -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. 826 826 827 -1: The message is delivered at least once, but the message may be delivered repeatedly. 828 - 829 -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. 830 - 831 831 **Retain flag:** 832 832 833 833 0: not reserved; ... ... @@ -835,13 +835,11 @@ 835 835 1: reserved 836 836 837 837 ((( 838 -== ** 4.1mqtt.create(string serverurl, string clientid)** ==766 +== **mqtt.create(string serverurl, string clientid)** == 839 839 ))) 840 840 841 -**Function:** 769 +**Function:** Create an MQTT object 842 842 843 -Create an MQTT object 844 - 845 845 **Parameters:** 846 846 847 847 //serverurl //Server url ... ... @@ -863,17 +863,13 @@ 863 863 Failed: multi 864 864 865 865 ((( 866 -== ** 4.2mqtt.close(mqtt obj)** ==792 +== **mqtt.close(mqtt obj)** == 867 867 ))) 868 868 869 -**Function:** 795 +**Function:** Close the specified MQTT object (if the connected server will be disconnected automatically) 870 870 871 - ClosehepecifiedMQTT object(iftheconnectedserverwill be disconnectedautomatically)797 +**Parameters: **//Obj //is the objeced returned by mqtt.create 872 872 873 -**Parameters:** 874 - 875 -//Obj //is the objeced returned by mqtt.create 876 - 877 877 **Return:** 878 878 879 879 Succeed: true ... ... @@ -881,32 +881,25 @@ 881 881 Failed: multi 882 882 883 883 ((( 884 -== ** 4.3mqtt:connect(table conn[, table lwt, table cart])** ==806 +== **mqtt:connect(table conn[, table lwt, table cart])** == 885 885 ))) 886 886 887 -**Function:** 809 +**Function:**Establish a connection to the server 888 888 889 -Establish a connection to the server 890 - 891 891 **Parameters:** 892 892 893 893 //conn //is a Lua table and needs to contain the following fields 894 894 895 -//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: 896 896 897 -//string conn.password//, password 898 - 899 -//number [conn.netway=0]//, networking method, if set error number will use Ethernet method 900 - 901 -* 0: Ethernet 902 -* 1: WIFI 903 -* 2: 4G 904 -* 3: 2G 905 - 906 -//number [conn.keepalive=60]//, keep connected heartbeat interval, in seconds 907 - 908 -//number [conn.cleansession=1]//, empty the session as described below: 909 - 910 910 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: 911 911 912 912 * 1 (Empty): If a session exists and is 1, the previous session messages on the client and server are emptied. ... ... @@ -914,14 +914,11 @@ 914 914 915 915 //lwt// (Last Will and Testament) is a Lua table and needs to contain the following fields 916 916 917 -//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 918 918 919 -//string lwt.message//, message 920 - 921 -//number [lwt.qos=0]//, qos value 922 - 923 -//number [lwt.retain=0]//, retain flag 924 - 925 925 **Return:** 926 926 927 927 Succeed: true ... ... @@ -929,17 +929,13 @@ 929 929 Failed: multi 930 930 931 931 ((( 932 -== ** 4.4mqtt:disconnect([number timeout])** ==844 +== **mqtt:disconnect([number timeout])** == 933 933 ))) 934 934 935 -**Function:** 847 +**Function:** Disconnect from the MQTT server 936 936 937 -Disconnect fromtheMQTTserver849 +**Parameters: **//[timeout=10000] //Disconnect waiting timeout, in milliseconds 938 938 939 -**Parameters:** 940 - 941 -//[timeout=10000] //Disconnect waiting timeout, in milliseconds 942 - 943 943 **Return:** 944 944 945 945 Succeed: true ... ... @@ -947,17 +947,13 @@ 947 947 Failed: multi 948 948 949 949 ((( 950 -== ** 4.5mqtt:isconnected()** ==858 +== **mqtt:isconnected()** == 951 951 ))) 952 952 953 -**Function:** 861 +**Function:** Test whether or not a client is currently connected to the MQTT server 954 954 955 - Test whetheror notaclientis currently connectedto the MQTT server863 +**Parameters:** None 956 956 957 -**Parameters:** 958 - 959 -None 960 - 961 961 **Return:** 962 962 963 963 Succeed: true ~-~-Connected ... ... @@ -965,13 +965,11 @@ 965 965 Failed: false ~-~- Unconnected and other unknowns 966 966 967 967 ((( 968 -== ** 4.6mqtt:subscribe(string topic, number qos)** ==872 +== **mqtt:subscribe(string topic, number qos)** == 969 969 ))) 970 970 971 -**Function:** 875 +**Function: **Subscribe to the topic (before the subscription, the user must first call the connect method to connect to the server) 972 972 973 -Subscribe to the topic (before the subscription, the user must first call the connect method to connect to the server) 974 - 975 975 **Parameters:** 976 976 977 977 //topic//, topic name ... ... @@ -985,13 +985,11 @@ 985 985 Failed: multi 986 986 987 987 ((( 988 -== ** 4.7mqtt:unsubscribe(string topic)** ==890 +== **mqtt:unsubscribe(string topic)** == 989 989 ))) 990 990 991 -**Function:** 893 +**Function:** Unsubscribe topic 992 992 993 -Unsubscribe topic 994 - 995 995 **Parameters:** 996 996 997 997 //topic//, topic name ... ... @@ -1003,13 +1003,11 @@ 1003 1003 Failed: multi 1004 1004 1005 1005 ((( 1006 -== ** 4.8mqtt:publish(string topic, string message, number qos, number retain[, number timeout])** ==906 +== **mqtt:publish(string topic, string message, number qos, number retain[, number timeout])** == 1007 1007 ))) 1008 1008 1009 -**Function:** 909 +**Function:** Publish message 1010 1010 1011 -Publish message 1012 - 1013 1013 **Parameters:** 1014 1014 1015 1015 //topic//, topic name ... ... @@ -1029,17 +1029,13 @@ 1029 1029 Failed: multi 1030 1030 1031 1031 ((( 1032 -== ** 4.9mqtt:close()** ==930 +== **mqtt:close()** == 1033 1033 ))) 1034 1034 1035 -**Function:** 933 +**Function:** Close the mqtt object (the connection to the server will be automatically disconnected) 1036 1036 1037 - Close themqtt object(theconnection to the server will be automatically disconnected)935 +**Parameters:** None 1038 1038 1039 -**Parameters:** 1040 - 1041 -None 1042 - 1043 1043 **Return:** 1044 1044 1045 1045 Succeed: true ... ... @@ -1047,13 +1047,11 @@ 1047 1047 Failed: multi 1048 1048 1049 1049 ((( 1050 -== ** 4.10mqtt:on(string method, function callback)** ==944 +== **mqtt:on(string method, function callback)** == 1051 1051 ))) 1052 1052 1053 -**Function:** 947 +**Function:** Register event callback function 1054 1054 1055 -Register event callback function 1056 - 1057 1057 **Parameters:** 1058 1058 1059 1059 //method//, It can be message/arrived/offline, these 3 types of events ... ... @@ -1066,20 +1066,17 @@ 1066 1066 1067 1067 Parameter: 1068 1068 1069 -//Topic//, topic name 961 +* //Topic//, topic name 962 +* //Message//, content 1070 1070 1071 - //Message//, content964 +**2."arrived" is published by publish, this function will be called after the publication arrives** 1072 1072 1073 -**2.**"arrived" is published by publish, this function will be called after the publication arrives 1074 - 1075 1075 //Callback// prototype~:// function ()// 1076 1076 1077 -Parameter: 968 +Parameter: None 1078 1078 1079 - None970 +**3.This function will be called after the "offline" connection is lost** 1080 1080 1081 -**3.**This function will be called after the "offline" connection is lost 1082 - 1083 1083 //Callback// prototype~:// function (string cause)// 1084 1084 1085 1085 Parameter: ... ... @@ -1093,17 +1093,13 @@ 1093 1093 Failed: multi 1094 1094 1095 1095 ((( 1096 -== ** 4.11mqtt:setup_cfg()** ==985 +== **mqtt:setup_cfg()** == 1097 1097 ))) 1098 1098 1099 -**Function:** 988 +**Function:** Cloud mode interface, to obtain MQTT information configured by the cloud platform 1100 1100 1101 - Cloudmodeinterface, toobtainMQTT information configured by the cloud platform990 +**Parameters:** None 1102 1102 1103 -**Parameters:** 1104 - 1105 -None 1106 - 1107 1107 **Return:** 1108 1108 1109 1109 //serverurl, clientid, conn, lwt, cart //(5 returns, respectively, server address, client ID, connection table, last word table, certificate table) ... ... @@ -1121,39 +1121,27 @@ 1121 1121 Lua only has a table data structure, so all arrays and key-value objects of json will be returned as a table. 1122 1122 1123 1123 ((( 1124 -== ** 5.1json.encode( lua_object )** ==1009 +== **json.encode( lua_object )** == 1125 1125 ))) 1126 1126 1127 -**Function:** 1012 +**Function: **Convert lua data type to json string 1128 1128 1129 - Convertlua data typetojson string1014 +**Parameters: **Lua data type (including boolean, number, string, table) 1130 1130 1131 -** Parameters:**1016 +**Return:** Json format string 1132 1132 1133 -Lua data type (including boolean, number, string, table) 1134 - 1135 -**Return:** 1136 - 1137 -Json format string 1138 - 1139 1139 ((( 1140 -== ** 5.2json.decode(string json_string)** ==1019 +== **json.decode(string json_string)** == 1141 1141 ))) 1142 1142 1143 -**Function:** 1022 +**Function:** Convert json string to lua data type 1144 1144 1145 - Convert jsonluadata type1024 +**Parameters: **//json_string//, string of json data structure 1146 1146 1147 -** Parameters:**1026 +**Return: **Lua data type 1148 1148 1149 -//json_string//, string of json data structure 1150 - 1151 -**Return:** 1152 - 1153 -Lua data type 1154 - 1155 1155 ((( 1156 -== ** 5.3json.null** ==1029 +== **json.null** == 1157 1157 ))) 1158 1158 1159 1159 **Function:** ... ... @@ -1160,32 +1160,24 @@ 1160 1160 1161 1161 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. 1162 1162 1163 -**Parameters:** 1036 +**Parameters:** None 1164 1164 1165 -None 1038 +**Return: **None 1166 1166 1167 -**Return:** 1168 - 1169 -None 1170 - 1171 1171 = **6 Cloud mode** = 1172 1172 1173 1173 The cloud interface is only used in cloud mode, and V-NET mode is not available. 1174 1174 1175 1175 ((( 1176 -== ** 6.1bns_get_alldata()** ==1045 +== **bns_get_alldata()** == 1177 1177 ))) 1178 1178 1179 -**Function:** 1048 +**Function:** Obtain all monitoring points (point table) data configured by the end user 1180 1180 1181 - Obtain allmonitoringpoints(point table)dataconfiguredbythe enduser1050 +**✎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 1182 1182 1183 - Note: Assuming thereareiming scripts A and B with a period of 1second, if this function is called in script A, the data will not be obtained if called in script B1052 +**Parameters:** None 1184 1184 1185 -**Parameters:** 1186 - 1187 -None 1188 - 1189 1189 **Return:** 1190 1190 1191 1191 Succeed: table two-dimensional array, the structure is as follows ... ... @@ -1215,13 +1215,11 @@ 1215 1215 Failed: //table// empty table 1216 1216 1217 1217 ((( 1218 -== ** 6.2bns_get_config(string from)** ==1083 +== **bns_get_config(string from)** == 1219 1219 ))) 1220 1220 1221 -**Function:** 1086 +**Function:** Obtain custom configuration parameters with the specified from type 1222 1222 1223 -Obtain custom configuration parameters with the specified from type 1224 - 1225 1225 **parameter:** 1226 1226 1227 1227 from type, there are the following two categories, the string must be all lowercase ... ... @@ -1239,13 +1239,11 @@ 1239 1239 Failed~:// table// empty table 1240 1240 1241 1241 ((( 1242 -== ** 6.3bns_get_data(string name, string data)** ==1105 +== **bns_get_data(string name, string data)** == 1243 1243 ))) 1244 1244 1245 -**Function:** 1108 +**Function:**write data to the name of the monitoring point 1246 1246 1247 -write data to the name of the monitoring point 1248 - 1249 1249 **parameter:** 1250 1250 1251 1251 //name //The name of the monitoring point ... ... @@ -1259,7 +1259,7 @@ 1259 1259 Failed: nil 1260 1260 1261 1261 ((( 1262 -== ** 6.4bns_get_data(string name)** ==1123 +== **bns_get_data(string name)** == 1263 1263 ))) 1264 1264 1265 1265 **Function:** ... ... @@ -1277,17 +1277,13 @@ 1277 1277 Failed: nil 1278 1278 1279 1279 ((( 1280 -== ** 6.5bns_get_datadesc()** ==1141 +== **bns_get_datadesc()** == 1281 1281 ))) 1282 1282 1283 -**Function:** 1144 +**Function: **Obtain all configured communication ports and monitoring point information 1284 1284 1285 - Obtain all configured communication portsand monitoring point information1146 +**Parameters:** None 1286 1286 1287 -**Parameters:** 1288 - 1289 -None 1290 - 1291 1291 **Return:** 1292 1292 1293 1293 Succeed: table three-dimensional array, the structure is as follows ... ... @@ -1340,17 +1340,13 @@ 1340 1340 Failed~:// table// empty table 1341 1341 1342 1342 ((( 1343 -== ** 6.6bns_get_machineinfo()** ==1200 +== **bns_get_machineinfo()** == 1344 1344 ))) 1345 1345 1346 -**Function:** 1203 +**Function:** get machine information 1347 1347 1348 - get machine information1205 +**Parameters:** None 1349 1349 1350 -**Parameters:** 1351 - 1352 -None 1353 - 1354 1354 **Return:** 1355 1355 1356 1356 Succeed: 3 string type results (model, machine code, software version) ... ... @@ -1358,13 +1358,11 @@ 1358 1358 Failed: nil 1359 1359 1360 1360 ((( 1361 -== ** 6.7bns_get_groupdata(string name)** ==1214 +== **bns_get_groupdata(string name)** == 1362 1362 ))) 1363 1363 1364 -**Function:** 1217 +**Function:** Get all monitoring point data under the specified group name 1365 1365 1366 -Get all monitoring point data under the specified group name 1367 - 1368 1368 **parameter:** 1369 1369 1370 1370 //Name // group name ... ... @@ -1376,17 +1376,13 @@ 1376 1376 Failed: //table// empty table 1377 1377 1378 1378 ((( 1379 -== ** 6.8bns_get_groupdesc()** ==1230 +== **bns_get_groupdesc()** == 1380 1380 ))) 1381 1381 1382 -**Function:** 1233 +**Function:** Get all group information 1383 1383 1384 - Getall group information1235 +**Parameters:** None 1385 1385 1386 -**Parameters:** 1387 - 1388 -None 1389 - 1390 1390 **Return:** 1391 1391 1392 1392 Succeed: //table// two-dimensional array, the structure is as follows ... ... @@ -1400,17 +1400,13 @@ 1400 1400 Failed: //table // empty table 1401 1401 1402 1402 ((( 1403 -== ** 6.9bns_get_onecache(string msg)** ==1250 +== **bns_get_onecache(string msg)** == 1404 1404 ))) 1405 1405 1406 -**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. 1407 1407 1408 - Saveassageto thecache file, which can be storedafter power failure. Store up to 2000 items,delete the old and save the new in arollingmanner when it is full.1255 +**Parameters: **//msg// String 1409 1409 1410 -**Parameters:** 1411 - 1412 -//msg// String 1413 - 1414 1414 **Return:** 1415 1415 1416 1416 Succeed: true ... ... @@ -1418,17 +1418,13 @@ 1418 1418 Failed: nil 1419 1419 1420 1420 ((( 1421 -== ** 6.10bns_get_allcache()** ==1264 +== **bns_get_allcache()** == 1422 1422 ))) 1423 1423 1424 -**Function:** 1267 +**Function:** Get all the cached content (once the internal cache file will be emptied) 1425 1425 1426 - Getall the cached content (oncethe internal cache file will be emptied)1269 +**Parameters:** None 1427 1427 1428 -**Parameters:** 1429 - 1430 -None 1431 - 1432 1432 **Return:** 1433 1433 1434 1434 Succeed: //table// one-dimensional array ... ... @@ -1456,11 +1456,57 @@ 1456 1456 Network communication includes Http request interface, this document does not provide interface description, please refer to the online document for how to use it. 1457 1457 1458 1458 ((( 1459 -== ** 7.1http request** ==1298 +== **http request** == 1460 1460 ))) 1461 1461 1462 1462 [[http:~~/~~/w3.impa.br/~~~~diego/software/luasocket/http.html#request>>url:http://w3.impa.br/~~diego/software/luasocket/http.html#request]] 1463 1463 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 + 1464 1464 ((( 1465 1465 = **8 Internal register** = 1466 1466 ))) ... ... @@ -1467,32 +1467,32 @@ 1467 1467 1468 1468 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): 1469 1469 1470 -** ~1. **Access by word, prefix @W_HDW,1355 +**Access by word, prefix @W_HDW.** 1471 1471 1472 1472 For example: @W_HDW0 represents the first word of the system data area, @W_HDW1 represents the second word of the system data area. 1473 1473 1474 -** 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.** 1475 1475 1476 1476 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. 1477 1477 1363 +(% class="box errormessage" %) 1364 +((( 1478 1478 **✎Note: ** 1366 +))) 1479 1479 1480 -**~1. **The address in @B_HDX is taken from the word in @W_HDW, so pay special attention when using the address. 1368 +* The address in @B_HDX is taken from the word in @W_HDW, so pay special attention when using the address. 1369 +** 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. 1370 +* The address of the bit address @B_HDX has a decimal point, while the word address is an integer. 1481 1481 1482 -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. 1483 - 1484 -**2.**The address of the bit address @B_HDX has a decimal point, while the word address is an integer. 1485 - 1486 1486 ((( 1487 -== ** 8.1Data storage area(HDW/HDX)** ==1373 +== **Data storage area(HDW/HDX)** == 1488 1488 ))) 1489 1489 1490 1490 The system storage area (HDW) of the V-BOX is used to store temporary data: 1491 1491 1492 -~1. Access by word, the number range is: "@W_HDW0"-"@W_HDW299999". 1378 +1. Access by word, the number range is: "@W_HDW0"-"@W_HDW299999". 1379 +1. Access in bit mode, the number range is: "@B_HDX0.0"-"@B_HDX299999.15". 1493 1493 1494 -2. Access in bit mode, the number range is: "@B_HDX0.0"-"@B_HDX299999.15". 1495 - 1496 1496 ((( 1497 1497 == **8.2 Special data area (HSW/HSX)** == 1498 1498 )))