123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- using AwInitilizer.Assist;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Collections.Specialized;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- namespace AwInitilizer.Procedure
- {
- public class WifRssiCheckProcedure : ProcedureBase
- {
- public WifRssiCheckProcedure() : base()
- {
- Name = "WiFi Rssi Check";
- Content = "Check Wifi Rssi Signal";
- }
- internal override async Task<bool> Run()
- {
- if (!UpdateData.SystemID.ModelName.Network.ToString().Contains("WiFi"))
- {
- //if does not support Wifi then end init
- InfoLog += "model name does not support Wifi ,skip check process\n";
- ReportLog.Add("Wifi not supported, skip procedure");
- return true;
- }
- Logger.Print("Connecting to EVSE");
- var checkResult = await CheckWifiRssi();
- return checkResult;
- }
- internal async Task<bool> CheckWifiRssi()
- {
- try
- {
- using (WebClientTimeout webClient = new WebClientTimeout())
- {
- NameValueCollection parameters = new NameValueCollection();
- parameters.Add("opt", "3");
- webClient.QueryString = parameters;
- using (Stream stream = await webClient.OpenReadTaskAsync($"https://{ServerIpAddress}/get_query_action.php"))
- // 使用 StreamReader 讀取 stream 內的字元
- using (StreamReader reader = new StreamReader(stream))
- {
- // 將 StreamReader 所讀到的字元轉為 string
- string request = reader.ReadToEnd();
- InfoLog += $"GetResponse:{request}";
- Logger.Print($"GetResponse:{request}", isError: false);
- Regex rx_mode = new Regex("(WifiMode)\\\": ([0-9]*)");
- var matches_mode = rx_mode.Matches(request);
- if (matches_mode.Count != 0)
- {
- var match = matches_mode[0];
- if (match.Groups.Count != 3)
- {
- return false;
- }
- else
- {
- if (int.TryParse(match.Groups[2].Value, out var wifiMode))
- {
- if (wifiMode != 1)
- return false;
- }
- else
- {
- return false;
- }
- }
- }
- else
- {
- return false;
- }
- Regex rx = new Regex("(WifiRssi)\\\": (-?[0-9]*)");
- var matches = rx.Matches(request);
- if (matches.Count != 0)
- {
- var match = matches[0];
- if (match.Groups.Count != 3)
- {
- return false;
- }
- else
- {
- if (int.TryParse(match.Groups[2].Value, out var rssiSignal))
- {
- LogPair.Add("WifiRssi", rssiSignal.ToString());
- return rssiSignal >= -80;
- }
- return false;
- }
- }
- else
- {
- return false;
- }
- }
- }
- }
- catch (Exception e)
- {
- Logger.Print("Get Wifi Rssi Failed", isError: true);
- Logger.Print(e.Message + "", isError: true);
- InfoLog += "Get Wifi Rssi Failed\n";
- InfoLog += e.Message;
- InfoLog += "\n";
- return false;
- }
- }
- }
- }
|