Changes for page 05 Lua Script

Last modified by Hunter on 2026/10/23 11:34

From version 2.1
edited by Joe
on 2025/10/24 15:58
Change comment: There is no comment for this version
To version 34.1
edited by Hunter
on 2026/10/23 11:34
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.joe
1 +XWiki.Hunter
Content
... ... @@ -48,29 +48,32 @@
48 48  (% style="text-align:center" %)
49 49  [[image:dZyxVCtWDz.png]]
50 50  
51 -~1. About how to set up the FTP server in Windows PC: **[[Build an FTP Site on IIS>>https://docs.microsoft.com/en-us/iis/publish/using-the-ftp-service/scenario-build-an-ftp-site-on-iis]] **,** [[How to set up and manage an FTP server on Windows 10>>https://www.windowscentral.com/how-set-and-manage-ftp-server-windows-10]]**
51 +(% class="box infomessage" %)
52 +(((
53 +Note:About how to set up the FTP server in Windows PC: **[[How to set up and manage an FTP server on Windows 10>>https://www.windowscentral.com/how-set-and-manage-ftp-server-windows-10]]**
54 +)))
52 52  
53 -2. Enter PC (FTP Server) IP address and port number (Default 21).
56 +1.Enter PC (FTP Server) IP address and port number (Default 21).
54 54  
55 55  (% style="text-align:center" %)
56 56  [[image:LuaFTPDemoIP&Port.png]]
57 57  
58 -3. Change the filename of the file that needs to be uploaded. If run on as Offline Simulator, the simulate upload path of "udisk:1.png" will be "C:\WECON\USB\1.png" on the PC.
61 +2.Change the filename of the file that needs to be uploaded. If run on as Offline Simulator, the simulate upload path of "udisk:1.png" will be "C:\WECON\USB\1.png" on the PC.
59 59  
60 60  (% style="text-align:center" %)
61 61  [[image:LuaFTPDemoUpload.png]]
62 62  
63 -4. Change drive letter of file save path according to drop-down list (There are three option available: Flash, UDisk and SDCard).
66 +3.Change drive letter of file save path according to drop-down list (There are three option available: Flash, UDisk and SDCard).
64 64  
65 65  (% style="text-align:center" %)
66 66  [[image:LuaFTPDemoDropBox.png]]
67 67  
68 -5. Change the filename of the file that needs to be downloaded from PC(Server).
71 +4.Change the filename of the file that needs to be downloaded from PC(Server).
69 69  
70 70  (% style="text-align:center" %)
71 71  [[image:LuaFTPDemoDownload.png]]
72 72  
73 -6. Set the default configuration in file "Script_BG.lua"
76 +5.Set the default configuration in file "Script_BG.lua"
74 74  
75 75  (% style="text-align:center" %)
76 76  [[image:LuaFTPDemoInitial.png]]
... ... @@ -123,6 +123,9 @@
123 123  
124 124  [[Download link>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/Telegram.zip]]
125 125  
129 +
130 +[[URL Encode Table for Special Characters>>https://docs.we-con.com.cn/bin/view/PIStudio/FAQ/Why%20can't%20I%20receive%20HMI%20messages%20on%20Telegram]]
131 +
126 126  = 9** LINE Notify(Not available now)** =
127 127  
128 128  This example shows how to use the LINE Notify to send message into LINE group. When monitoring bit "@B_HDX0.0" changes, it will trigger and send the message. Please replace with your own Token.
... ... @@ -696,6 +696,204 @@
696 696  (% style="text-align:center" %)
697 697  [[image:xT8f08pfY0.png]]
698 698  
699 -= [[26. Send attachment picture with SMTP by Gmail>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/SMTP%20for%20Gmail%28with%20Attachment%20picture%20%29.zip]] =
705 += 26 Send attachment picture with SMTP by Gmail =
700 700  
701 701  The project is to send mail message with text and attachment picture called test.png.
708 +
709 +[[Download link>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/SMTP%20for%20Gmail%28with%20Attachment%20picture%20%29.zip]]
710 +
711 += 27 TTS function =
712 +
713 +The project is to show a Music Player and alarm sound with TTS function in Lua script. Please note that  use PI version 10.4 or higher to open the project.
714 +
715 +[[Download link>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/Music%20player.pi2]]
716 +
717 += 28 Google Sheets API =
718 +
719 +The example shows how to send the data into the Google sheets API via Lua script. [[Jump to Video>>https://youtu.be/VKjr3_MVNzc]]
720 +
721 +{{warning}}
722 +since the HMI lacks a built-in library for cryptographic signatures (RS256/JWT), user can automate this by sending the token to the HMI via external communication. Token need to be manual input in this project.
723 +{{/warning}}
724 +
725 +[[Download link>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/GoogleSheet.zip]]
726 +
727 += 29 Graphics Drawing =
728 +
729 +This demo shows how to draw static graphics, such as a snowflake and a star, on the HMI screen using Lua custom object.
730 +The drawing coordinate data can come from HMI internal registers or external PLC registers.
731 +This demo does not demonstrate dynamic path updates or motion animation. For dynamic trajectory visualization, refer to the [[Lua curve>>doc:PIStudio.09 Lua Editor.Lua Script.WebHome||anchor="HCurveDrawing28Experimental29"]].
732 +
733 +[[Download link>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/Graphics%20Drawing.pi2]]
734 +
735 +
736 += 30 Timestamp =
737 +
738 +This example shows how to obtain second-level and millisecond-level timestamps.
739 +[[Download link>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/Timestamp.zip]]
740 +
741 +
742 += 31 Sending CSV file with Gmail =
743 +
744 +This example shows how to send CSV file transferred by DB file with Gmail. Please note that  use PI version 10.6 or higher to open the project.
745 +[[Download link>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/Sending%20CSV%20file%20with%20Gmail.zip]]
746 +
747 +
748 += 32 GPS Function =
749 +
750 +This example shows how to get the GPS data from device (Support RH-AG). Please note that  use PI version 11.4.64.26081301 or higher to open the project.
751 +
752 +[[Download link>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/GPS%20function.zip]]
753 +
754 +
755 += **33 Data record query** =
756 +
757 +This example shows how to obtain data records for a certain time period and display them at an address. Please note that  use PI version 10.6.45.26070101 or higher to open the project.
758 +[[Download link>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/Data%20record%20query.zip]]
759 +
760 +
761 += 34 Ethernet A4 Printer =
762 +
763 +This example shows how to print A4 report paper directly from an HMI via TCP/IP, which is not required any PC software tool. [[Jump to Video>>https://youtu.be/IZoOoRefJc8]]
764 +
765 +{{warning}}
766 +Please prioritize printers that support **PCL5**.
767 +{{/warning}}
768 +
769 +**Common PCL5 Commands**
770 +
771 +{{code language="lua"}}
772 +--Set text position and content
773 +local sample = "\x1B*p1000x1000YHelloWorld"
774 +{{/code}}
775 +
776 +{{code language="lua"}}
777 +-- Set font size to 12 pt
778 +local fontSize = "\x1B(s12V"
779 +{{/code}}
780 +
781 +{{code language="lua"}}
782 +-- Set print direction to 0 degrees
783 +local direction = "\x1B&a0P"
784 +{{/code}}
785 +
786 +{{code language="lua"}}
787 +--Restore default drawing logic
788 +local defaultLogic = "\x1B*l252O"
789 +{{/code}}
790 +
791 +{{code language="lua"}}
792 +--New page feed output
793 +local formFeed = "\x0C"
794 +{{/code}}
795 +
796 +[[Download link>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/PrinterTCPSocket.zip]]
797 +
798 += 35 SFTP Client(PI 11.4) =
799 +
800 +This example shows how to set up the SSH connection between HMI and server, and upload or download the file. **This function only works on PIStudio version 11.4 or above and PI8000ig or PI9000ig HMI.**
801 +
802 +{{info}}
803 +Refer to the Microsoft official guide for installing and enabling OpenSSH Server on Windows using PowerShell: [[Get started with OpenSSH Server for Windows ~| Microsoft Learn>>https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui&pivots=windows-server-2025]]
804 +
805 +**Make sure TCP port 22 is not occupied by another SSH server, such as Bitvise SSH Server.**
806 +{{/info}}
807 +
808 +~1. Run PowerShell as administrator. Enter Get-Service sshd in the PowerShell window. If the status is Stopped, enter Start-Service sshd to start the service.
809 +
810 +{{code language="powershell"}}
811 +Get-Service sshd
812 +Start-Service sshd
813 +{{/code}}
814 +
815 +(% style="text-align:center" %)
816 +[[image:checkstatusSSH.png]]
817 +
818 +{{info}}
819 +If the SSH connection cannot be established, check and adjust the firewall’s inbound and outbound rules. Enter following command in powershell
820 +{{/info}}
821 +
822 +{{code language="powershell"}}
823 +netsh advfirewall set allprofiles state off
824 +{{/code}}
825 +
826 +2. Change the server IP, username and password.
827 +
828 +(% style="text-align:center" %)
829 +[[image:SSH1.png]]
830 +
831 +2. Change the server file path and HMI file path as user wanted.
832 +
833 +(% style="text-align:center" %)
834 +[[image:E2.png]]
835 +
836 +3. Click the Copy to copy the file into flash(user:) path from the pen drive path, then click SFTP connect, click Upload or Download button.
837 +
838 +{{warning}}
839 +File operations are only supported under the "user:" path for the moment.
840 +{{/warning}}
841 +
842 +(% style="text-align:center" %)
843 +[[image:sf.png]]
844 +
845 +4. Check the file whether download or upload successfully.
846 +
847 +(% style="text-align:center" %)
848 +[[image:8217Wc3rju.png]]
849 +
850 +[[Download link>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/SFTP%20Client.zip]]
851 +
852 += 36 Wechat Official Account Notification Push =
853 +
854 +This example shows how to set up the Wechat official account sandbox to test the alarm push.
855 +
856 +[[Wechat Official Platform Sandbox>>https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index]]
857 +
858 +To register a formal WeChat Official Account, please forward to:
859 +
860 +[[Weixin Official Accounts Platform>>url:https://mp.weixin.qq.com/]]
861 +
862 +~1. Login into the platform, and user can see the appID and appSecret, copy them for the further use.
863 +
864 +(% style="text-align:center" %)
865 +[[image:wechataccount.png]]
866 +
867 +2. User can scan the QR code on the left side to subscribe push notifications. And copy the Wechat ID.
868 +
869 +(% style="text-align:center" %)
870 +[[image:wechatID.png]]
871 +
872 +3. Click [Add test template] to create a new notification template.
873 +
874 +(% style="text-align:center" %)
875 +[[image:wechatTempalte.png]]
876 +
877 +4. Enter the title and content, then click submission, the content must follow this format: text: ~{~{text.DATA}}
878 +
879 +For example, use Alarm: ~{~{Alarm.DATA}}. For multiple lines, format the content as follows:
880 +
881 +{{code language="lua"}}
882 +Device: {{Device.DATA}}
883 +Alarm: {{Alarm.DATA}}
884 +Time: {{Time.DATA}}
885 +{{/code}}
886 +
887 +(% style="text-align:center" %)
888 +[[image:wechatTempalteConten2.png]]
889 +
890 +5. After the template is created, copy the template ID.
891 +
892 +(% style="text-align:center" %)
893 +[[image:wechatCopyTempalte.png]]
894 +
895 +6. Paste all these IDs(appID, appSecret, wechatID and templateID) into the lua script.
896 +
897 +(% style="text-align:center" %)
898 +[[image:wechatscriptcopyID.png]]
899 +
900 +7. Trigger the alarm condition, and user will receive an alarm notification from the WeChat Official Account.
901 +
902 +(% style="text-align:center" %)
903 +[[image:WechatResultResize.jpg]]
904 +
905 +[[Download link>>https://ftp.we-con.com.cn/Download/WIKI/PI%20HMI/Demo/Lua%20Script/WechatAlarmPushNotify.zip]]
1792547572135-677.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +41.0 KB
Content
8217Wc3rju.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +50.8 KB
Content
E2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +154.6 KB
Content
EYGRzMYrhy.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +171.9 KB
Content
SSH1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +190.6 KB
Content
WechatResult.jpg
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +163.7 KB
Content
WechatResultResize.jpg
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +29.8 KB
Content
checkstatusSSH.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +15.5 KB
Content
sf.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +298.4 KB
Content
wechatCopyTempalte.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +22.9 KB
Content
wechatID.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +41.0 KB
Content
wechatTempalte.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +23.1 KB
Content
wechatTempalteConten.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +46.9 KB
Content
wechatTempalteConten2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +48.4 KB
Content
wechataccount.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +70.4 KB
Content
wechatscriptcopyID.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.Hunter
Size
... ... @@ -1,0 +1,1 @@
1 +245.5 KB
Content