Changes for page 2 Script
Last modified by Devin Chen on 2025/06/06 14:03
From version 70.1
edited by Theodore Xu
on 2023/08/25 09:48
on 2023/08/25 09:48
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 9 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. AiXia1 +XWiki.Hunter - Content
-
... ... @@ -1,9 +1,9 @@ 1 1 = **1 General Script Demo** = 2 2 3 -== **1.1 Address Operation** == 3 +== **1.1 Address Operation:Write/Read data from address A to B** == 4 4 5 5 ((( 6 - Write/Read data from address A to B**. **For example:transfer D2 to D06 +For example:transfer D2 to D0 7 7 ))) 8 8 9 9 (% style="text-align:center" %) ... ... @@ -27,19 +27,25 @@ 27 27 28 28 == **1.4 Short message** == 29 29 30 - Thefollowingdemo showsthat whenthealarm condition is reached: temp1 > 5 & temp2 >10 & temp3 < 20(lasts more than 5 seconds) , then send an "alarm trigger" sms.30 +When the alarm condition is reached: temp1 > 5 & temp2 >10 & temp3 < 20(lasts more than 5 seconds) , then send an "alarm trigger" sms. 31 31 32 -When the alarm condition is released,then send an Script is as below:32 +When the alarm condition is released,then send an "alarm release" sms. 33 33 34 -{{code language="lua"}} 34 +(% style="text-align:center" %) 35 +[[image:1645535936750-316.png||height="385" width="400" class="img-thumbnail"]] 36 + 37 +Script is as below: 38 + 39 +(% class="box infomessage" %) 40 +((( 35 35 function sms.main() 36 -------send condition------ 42 +~-~-~-~-~-~-send condition~-~-~-~-~-~- 37 37 local temp1 = addr_getword("@Temperature1") 38 38 local temp2 = addr_getword("@Temperature2") 39 39 local temp3 = addr_getword("@Temperature3") 40 40 local timer = addr_getword("@Timer") 41 41 local tag = addr_getbit("@Tag") 42 -------lasting time------ 48 +~-~-~-~-~-~-lasting time~-~-~-~-~-~- 43 43 if temp1 > 5 and temp2 > 10 and temp3 < 20 then 44 44 timer = timer + 1 45 45 addr_setword("@Timer",timer) ... ... @@ -47,7 +47,7 @@ 47 47 timer = 0 48 48 addr_setword("@Timer",timer) 49 49 end 50 -------send sms & output Y0------ 56 +~-~-~-~-~-~-send sms & output Y0~-~-~-~-~-~- 51 51 if timer > 5 then 52 52 if tag == 0 then 53 53 send_sms_ira("19859254700","alarm trigger") ... ... @@ -58,7 +58,7 @@ 58 58 addr_setbit("@Tag",0) 59 59 end 60 60 end 61 - {{/code}}67 +))) 62 62 63 63 == **1.5 Telegram notification** == 64 64 ... ... @@ -139,7 +139,7 @@ 139 139 140 140 This example shows how to use the LINE Notify to send message into LINE group. When monitoring bit "@test" changes, it will trigger and send the message. Please replace with your own Token. 141 141 142 -{{code language="lua"}}148 +{{code}} 143 143 local tempBit = 0 144 144 local tempWord = 0 145 145 ... ... @@ -343,7 +343,7 @@ 343 343 end 344 344 {{/code}} 345 345 346 -== **1.8 HTTP response body** == 352 +== **1.8 How to parse value from HTTP response body** == 347 347 348 348 This example use [[https:~~/~~/www.weatherapi.com/>>https://www.weatherapi.com/]] as example, to show how to parse value from HTTP response body. When we input the city name into address "@HDW5050": 349 349 ... ... @@ -441,39 +441,8 @@ 441 441 end 442 442 {{/code}} 443 443 444 -= =**1.9High-LowByteSwitch** ==450 += **2 V-Box connect with third part server** = 445 445 446 -The following example is converting the floating number from order 1234 to order 3412, and formating output the number with 2 decimal point. About which high-low word order corresponding to which value, please refer to the [[Address Operation Table>>doc:V-BOX.V-Net.Manual.04 Lua Script.01 Lua Functions.WebHome||anchor="H2Addressoperation"]]. 447 - 448 -{{code language="lua"}} 449 -function highLowByteSwitch(floatNumber) 450 - addr_setfloat("@W_0#HDW23036",floatNumber,0,2) 451 - local newFloat = addr_getfloat("@W_0#HDW23036") 452 - local formattedFloat = string.format("%.2f",newFloat) 453 - print("The formatted float value is the : "..formattedFloat) 454 - return formattedFloat 455 -end 456 -{{/code}} 457 - 458 -== **1.10 Read 64bits Unsigned Value** == 459 - 460 -In our built-in function library doesn't have the function for reading 64-bit unsigned format value, so the following function is for solve this. But if the number is greater 2^53, the precision will be lost. So the final result will be a little bit different from the original value. 461 - 462 -{{code language="lua"}} 463 -function addr_getquatra(address) 464 - local highAddress = addr_newnoaddr(address,2) 465 - local low32 = addr_getdword(address) 466 - local high32 = addr_getdword(highAddress) 467 - --print("the low number is "..low32) 468 - --print("the high number is "..high32) 469 - local formatVal = string.format("%64.0f",2^32*high32+low32) 470 - print("the format value is ".. formatVal) 471 - return formatVal 472 -end 473 -{{/code}} 474 - 475 -= **2 Third part server** = 476 - 477 477 V-Box have two mode.One is for V-Net,User need to use WECON server to store data.We call this V-NET platform. 478 478 479 479 (% class="mark" %)1.Europe server:eu.v-box.net ... ... @@ -497,31 +497,11 @@ 497 497 (% class="wikigeneratedid" %) 498 498 Tool link: **[[MQTT.fx>>http://mqttfx.jensd.de/index.php/download]]** 499 499 500 -== **2.1 Test server(General Example)** ==475 +== **2.1 V-Box connect with test server(General Example)** == 501 501 502 -The following example is trying to publish to the topic "testtopic/test/no1/7890", and subscribe the topic "testtopic/test/no1/123456". 503 - 504 -And the JSON message is like follows: 505 - 506 -{{code language="JSON"}} 507 -{ 508 - "timestamp": 1631152760, 509 - "messageId": 1, 510 - "event": "test_data", 511 - "mfrs": "HMI/box", 512 - "data": 513 - { 514 - "id" : 1436217747670454274, 515 - "waterlevel" : 48, 516 - "temperture" : 23 517 - } 518 -} 519 -{{/code}} 520 - 521 521 {{code language="lua"}} 522 522 --MQTT configuration table 523 523 local MQTT_CFG={} 524 ---if there is no need the username and password, please put them as "" 525 525 MQTT_CFG.username = "weconsupport" 526 526 MQTT_CFG.password = "123456" 527 527 MQTT_CFG.netway = 0 ... ... @@ -561,7 +561,7 @@ 561 561 function mqtt_init() 562 562 print(string.format("mqtt init mqtt_url:%s mqtt_clientid:%s", MQTT_URL, MQTT_CLIENT_ID)) 563 563 if g_mq then 564 - mqtt.close( g_mq) --Close mqtt object519 + mqtt.close() --Close mqtt object 565 565 end 566 566 g_mq, err = mqtt.create(MQTT_URL, MQTT_CLIENT_ID) -- create mqtt object,and declare it as a global variable 567 567 if g_mq then ... ... @@ -586,11 +586,6 @@ 586 586 g_mq:subscribe(SUBSCRIBE_TOPIC, 0) 587 587 end 588 588 589 ---Offline callback function 590 -function mqtt_msg_offline(cause) 591 - print("mqtt offline, cause:", cause) 592 -end 593 - 594 594 -- Received message callback function 595 595 function mqtt_msg_callback(topic, msg) 596 596 print("topic:", topic) ... ... @@ -646,7 +646,7 @@ 646 646 end 647 647 {{/code}} 648 648 649 -== **2.2 Customer server:grouprobotinfo.com** ==599 +== **2.2 V-Box connect with customer server:grouprobotinfo.com** == 650 650 651 651 This demo does not use SSL certification. Script is as below 652 652 ... ... @@ -787,7 +787,7 @@ 787 787 end 788 788 {{/code}} 789 789 790 -== **2.3 Azure platform** == 740 +== **2.3 V-Box connect with Azure platform** == 791 791 792 792 In this demo,V-Box connects with Azure by SSL certification. 793 793 ... ... @@ -918,12 +918,8 @@ 918 918 end 919 919 ))) 920 920 921 -== **2.4 Huawei platform** == 871 +== **2.4 How to configure the Huawei platform?(✎Note: Huawei IOT DA function is only in China area.If you want this function,you need to use chinese mobile to register)** == 922 922 923 -{{info}} 924 -**✎Note**:**Huawei IOT DA function is only in China area.If you want this function,you need to use chinese mobile to register** 925 -{{/info}} 926 - 927 927 1.Register a account: [[https:~~/~~/www.huaweicloud.com/intl/en-us/s/JUlPVERNJQ>>https://www.huaweicloud.com/intl/en-us/s/JUlPVERNJQ]] 928 928 929 929 2.log in the Huawei IOTDA ... ... @@ -1071,8 +1071,10 @@ 1071 1071 (% style="text-align:center" %) 1072 1072 [[image:1624441186851-536.png||height="434" width="700" class="img-thumbnail"]] 1073 1073 1074 -== =HuaweibySSLcertification.===1020 +== **2.5 V-Box connect with Huawei platform** == 1075 1075 1022 +In this demo,V-Box connects with Huawei by SSL certification. 1023 + 1076 1076 1.Create a project access for Huawei IOT 1077 1077 1078 1078 2.configure MQTT configuration ... ... @@ -1190,7 +1190,7 @@ 1190 1190 (% style="text-align:center" %) 1191 1191 [[image:1624506666650-161.png||height="547" width="1000" class="img-thumbnail"]] 1192 1192 1193 -== **2.6 AWS platform** == 1141 +== **2.6 V-Box connect with AWS platform** == 1194 1194 1195 1195 === **Log in AWS** === 1196 1196 ... ... @@ -1255,7 +1255,7 @@ 1255 1255 [[image:image-20220709165402-11.png]] 1256 1256 1257 1257 1258 -=== **MQTT.fx tool** === 1206 +=== **Test with MQTT.fx tool** === 1259 1259 1260 1260 Click “View Setting” to get the “Broker Adress” 1261 1261 ... ... @@ -1283,7 +1283,7 @@ 1283 1283 1284 1284 [[image:image-20220709165402-18.png]] 1285 1285 1286 -=== **CloudTool** === 1234 +=== **Configurate in CloudTool** === 1287 1287 1288 1288 Copy the same setting in MQTT.fx to MQTT configuration 1289 1289 ... ... @@ -1481,188 +1481,3 @@ 1481 1481 Get message in AWS 1482 1482 1483 1483 [[image:image-20220709165402-21.png]] 1484 - 1485 -== **2.7 Mysql** == 1486 - 1487 -=== 1.Install Mysql software === 1488 - 1489 -Download the latest version of Mysql. 1490 - 1491 -(% style="text-align:center" %) 1492 -[[image:Mysql的软件版本.png]] 1493 - 1494 -=== 2.Navicat connect Mysql === 1495 - 1496 -Connecting to Mysql with navicat. 1497 - 1498 -(% style="text-align:center" %) 1499 -[[image:连接到mysql.png]] 1500 - 1501 -=== 3.Create database === 1502 - 1503 -Character set should be choose utf8mb3/utf8mb4 and Collation choose utf8mb3_danish_ci/utf8mb4_danish_ci. 1504 - 1505 -(% style="text-align:center" %) 1506 -[[image:创建数据库.png]] 1507 - 1508 -=== 4.Create data table === 1509 - 1510 -Create a table, enter the fields you need. 1511 - 1512 -(% style="text-align:center" %) 1513 -[[image:创建表1.png]] 1514 - 1515 -Save, enter table name. 1516 - 1517 -(% style="text-align:center" %) 1518 -[[image:创建表2.png]] 1519 - 1520 -=== 5.Input Table Data === 1521 - 1522 -(% style="text-align:center" %) 1523 -[[image:输入或者导入数据.png]] 1524 - 1525 -=== 6.Script === 1526 - 1527 -**luaMySql.init(string sourcename, string username, string password, string host, number port, string character)** 1528 - 1529 -**Function:** Configure database connection parameters 1530 - 1531 -**Parameter:** 1532 - 1533 -sourcename: the name of database 1534 - 1535 -username: the username of the connection 1536 - 1537 -password: the password of the connection 1538 - 1539 -host: the host name of the connection 1540 - 1541 -port: the host port of the connection 1542 - 1543 -character: the character set of the connection 1544 - 1545 -**Return:** 1546 - 1547 -Succeed: string 1548 - 1549 -Failed: multi 1550 - 1551 -**luaMySql.exec(string statement)** 1552 - 1553 -**Function:** Execute the given SQL statement without returning the result set (add, delete, change) 1554 - 1555 -**Parameter:** 1556 - 1557 -statement: the given SQL statement 1558 - 1559 -**Return:** 1560 - 1561 -Succeed: status: returns the number of rows affected by SQL statement execution. 1562 - 1563 -Failed: nil, errorString 1564 - 1565 -**luaMySql.execWithResult(string statement)** 1566 - 1567 -**Function:** Execute the given SQL statement returning the result set (check) 1568 - 1569 -**Parameter:** 1570 - 1571 -statement: the given SQL statement 1572 - 1573 -**Return:** 1574 - 1575 -Succeed: table: returns the result set 1576 - 1577 -Failed: nil, errorString 1578 - 1579 -**For example:** 1580 - 1581 - 1582 -{{code language="LUA"}} 1583 --- Assuming the "mysqlclient" library is properly installed and available 1584 -mysql = require("mysqlclient") 1585 - 1586 -function DataInitRight() 1587 - local dbName = "excel" 1588 - local user = "root" 1589 - local pwd = "XXXXX" 1590 - local host = "192.168.39.146" 1591 - local port = 3306 1592 - local character = "utf8mb3" 1593 - 1594 - mysql.init(dbName, user, pwd, host, port, character) 1595 -end 1596 - 1597 -function ExecFunc() 1598 - status, errorString = mysql.exec("delete from student where Name = 'XXX';") --Delete statement, column name = table element 1599 - if nil == status then 1600 - print("ExecFunc() error:", errorString) 1601 - return -1 1602 - else 1603 - print("the number of rows affected by the command:", status) 1604 - end 1605 - return 0 1606 -end 1607 - 1608 - 1609 -function ExecWithResultFunc() 1610 - status, errorString = mysql.execWithResult("select * from student;") 1611 - if nil == status then 1612 - print("ExecWithResultFunc() error:", errorString) 1613 - return -1 1614 - else 1615 - print("ExecWithResultFunc() success : status type = ", type(status)) 1616 - print("ExecWithResultFunc() success : status len = ", #status) 1617 - local num = #status 1618 - local i = 1 1619 - if num > 0 then 1620 - for i = 1, num, 1 do 1621 - local var = string.format("select result[%d] :Num = %d,Name = %s,Age = %d", i, status[i].Num, status[i].Name,status[i].Age) --Iterate through the data in the table, noting whether the elements are strings or numbers 1622 - print(var) 1623 - end 1624 - end 1625 - print("---------------") 1626 - end 1627 - return 0 1628 -end 1629 - 1630 -function MySQL.main() 1631 - print("script running ...") 1632 - DataInitRight() 1633 - 1634 - -- use exec demo 1635 - if ExecFunc() < 0 then 1636 - return 1637 - end 1638 - 1639 - -- use execWithResult demo 1640 - if ExecWithResultFunc() < 0 then 1641 - return 1642 - end 1643 - 1644 - print("script running success") 1645 -end 1646 -{{/code}} 1647 - 1648 -=== 7.Debug === 1649 - 1650 -(% style="text-align:center" %) 1651 -[[image:调试结果.png]] 1652 - 1653 -=== 8.Problem === 1654 - 1655 -During our debugging process it may there are some problems about Mysql, such as 1656 - 1657 -* MySQL: Host 192.168.XXX.XXX is not allowed to connect. 1658 -* MySQL: Host 192.168.XXX.XXX is blocked because of many connection errors. 1659 -* MySQL: SSL connection error: unknown error number. 1660 -* ((( 1661 -1449-The user specified as a definer(‘mysql.infoschema‘@localhost‘) does not exist. 1662 -))) 1663 - 1664 -This type of problem has nothing to do with scripts or devices, it is a Mysql configuration issue. If you have any of these problems, please look for a solution online. 1665 - 1666 -{{info}} 1667 -✎Note: If you want to use CMD to access Mysql, you need to add the bin file to the environment variable, please check online for details of the operation. 1668 -{{/info}}
- Mysql的软件版本.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.AiXia - Size
-
... ... @@ -1,1 +1,0 @@ 1 -78.4 KB - Content
- 创建数据库.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.AiXia - Size
-
... ... @@ -1,1 +1,0 @@ 1 -53.2 KB - Content
- 创建表1.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.AiXia - Size
-
... ... @@ -1,1 +1,0 @@ 1 -49.0 KB - Content
- 创建表2.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.AiXia - Size
-
... ... @@ -1,1 +1,0 @@ 1 -18.4 KB - Content
- 调试结果.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.AiXia - Size
-
... ... @@ -1,1 +1,0 @@ 1 -68.4 KB - Content
- 输入或者导入数据.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.AiXia - Size
-
... ... @@ -1,1 +1,0 @@ 1 -26.6 KB - Content
- 连接到mysql.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.AiXia - Size
-
... ... @@ -1,1 +1,0 @@ 1 -59.0 KB - Content
- 连接数据库1.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.AiXia - Size
-
... ... @@ -1,1 +1,0 @@ 1 -56.5 KB - Content
- 连接数据库2.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.AiXia - Size
-
... ... @@ -1,1 +1,0 @@ 1 -25.5 KB - Content