先展示一下我們測試視頻,以證明我們緊跟時代潮流,沒忽悠:) 在WinCC的WebUX客戶端上(iPad)上操作觸發(fā)了“壓力低限”和“溫度高限”報警 在手機微信app的測試公眾號里可以馬上收到報警消息,并查詢數據。 大致步驟如下: 1. 需要注冊一個微信公眾號,微信沒有開放第三方直接把消息把推送給個人這樣的功能,只能通過公眾號以“模板消息”的方式推送(這里我們用的是免費的個人訂閱號做的測試,有些功能受限,如每天只能群發(fā)1條消息,其它服務號、企業(yè)號之類的公眾號功能更強,但需作企業(yè)認證和付費) 2. 微信公眾號的通訊機制:①用戶通過微信app向公眾號發(fā)送一條內容,實際是發(fā)送到了微信服務器上。②然后,微信服務器就會對內容進行封裝,如xml格式,再轉發(fā)到我們的公眾號服務器(必須有能暴露給外界訪問的一個公網地址);同樣,⑤公眾號若要把信息推送或回復給用戶,也是要經由微信服務器,⑥再到用戶。也就是說,我們自己需部署一個用來接收和響應微信消息和事件的公眾號服務器,由這個公眾號服務器作為中間商完成微信服務器與WinCC的交互。 3. 部署公眾號服務器(我們把WinCC系統(tǒng)和測試用的公眾號服務器部署在一臺硬件服務器上了,此臺服務器有公網固定IP) 在IIS中設定web站點。 (下面的C#代碼均發(fā)布到此Web站點) 將此臺服務器綁定域名http://wechat. (已在公網域名管理服務器中將IP與此域名綁定) 應用池設定,接收WinCC本地應用交互。 完成IIS的基本設定 4. 將公眾號服務器注冊到微信服務器 在微信公眾平臺上,將公眾號從“編輯模式”切換到“開發(fā)者模式”,并輸入公眾號服務器地址URL (http://wechat.)和token(可任意填寫,用作生成簽名)以及用作消息體加解密密鑰EncodingAESKey(由開發(fā)者手動填寫或隨機生成),提交后,微信服務器會發(fā)送一個get請求到我們填寫的URL上,公眾號服務器收到這個消息后,回復內容即可通過微信服務器的驗證。即建立關注此公眾號的微信用戶與公眾號服務器之間的關聯關系。 5. 在WinCC中封裝報警消息并POST到公眾號服務器 關于報警事件及報警文本的捕捉,參考前一篇:《短信、郵件推送WinCC報警消息》 在C全局腳本GMsgFunction函數中將報警編號、文本等信息寫入WinCC內部變量,并置位Alarm_coming(也是WinCC內部變量)。 通過Alarm_coming這個變量觸發(fā)下面的VBS全局動作,將報警消息封裝成XML格式的字符串(這里我們把報警的MsgType消息類型定義為“alarm”,便于公眾號服務器區(qū)分信息來源和類別),通過msxml2.xmlhttp對象將這個字符串POST到公眾號服務器(wechat.)。 6. 公眾號服務器識別第三方POST過來的信息,當解析后發(fā)現MsgType為“alarm”,即約定為是WinCC推送過來的報警消息。(下面均為C#代碼,均需發(fā)布到公眾號網站上) 然后利用微信提供的接口讀取關注此公眾號的用戶,輪詢客戶并推送消息到用戶端(目前微信規(guī)定,即使是采用模板方式推送,也只能到單個客戶,不能一次性批量群發(fā)) wxMessageService類展開如下,調用了微信的接口,按微信公眾平臺預定義的消息模板,向特定用戶Post消息。其中access_token是公眾號的全局唯一接口調用憑據,公眾號調用各種微信接口時都需要(https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html) 其實我個人并不推薦這種方式,因為要接入到互聯網,如果信息安全措施不到位,可能會有隱患;另外,正式用的企業(yè)公眾號還涉及到額外的費用。再另外,涉及太多非傳統(tǒng)自動化的IT知識點,有時隔行如隔山。 騰訊官方的微信開發(fā)者文檔: https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html) App推送 部署一個PC用作SIMATICNotifier報警信息服務器(需要購買SIMATIC Notifier軟件及授權),它可以通過S7,OPC UA通信把WinCC和觸摸屏等各種信息源的報警消息,推送到智能手表(支持安卓Android wear 2)或安卓手機的app客戶端,效果如下面視頻: |
|
來自: AllenLI123 > 《待分類》