123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Collections.Specialized;
- using System.Diagnostics;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- namespace AwInitilizer.Procedure
- {
- public class RestarttoIdelProcedure : ProcedureBase
- {
- public RestarttoIdelProcedure() : base()
- {
- Name = "Restart To Idel";
- Content = "Restart EVSSE and check status back to Idel";
- }
- internal override async Task<bool> Run()
- {
- var result = await FactorySet();
- if (!result)
- {
- return false;
- }
- else
- {
- Logger.Print("Waiting Factory reset complete...");
- await Task.Delay(TimeSpan.FromMinutes(2));
- if(await CheckAllIdel())
- {
- Logger.Print("All Connetor is Idel");
- }
- else
- {
- return false;
- }
- }
- return true;
- }
- private async Task<bool> FactorySet()
- {
- try
- {
- using (WebClient webClient = new WebClient())
- {
- NameValueCollection parameters = new NameValueCollection();
- parameters.Add("SystemId", "");
- parameters.Add("SystemDateTime", "");
- parameters.Add("PhaseLossPolicy", "");
- parameters.Add("FactoryConfiguration", "1");
- parameters.Add("AuthorisationMode", "");
- parameters.Add("isAPP", "");
- parameters.Add("isQRCode", "");
- parameters.Add("isRFID", "");
- parameters.Add("QRCodeMadeMode", "");
- parameters.Add("QRCodeContent", "");
- parameters.Add("Intensity", "");
- parameters.Add("RfidCardNumEndian", "");
- parameters.Add("PsuAcInputType", "");
- webClient.QueryString = parameters;
- using (Stream stream = await webClient.OpenReadTaskAsync($"https://{ServerIpAddress}/set_system_action.php"))
- // 使用 StreamReader 讀取 stream 內的字元
- using (StreamReader reader = new StreamReader(stream))
- {
- // 將 StreamReader 所讀到的字元轉為 string
- string request = reader.ReadToEnd();
- InfoLog += $"factory set respons:\n{request}\n";
- var values = JsonConvert.DeserializeObject<Dictionary<string, string>>(request);
- }
- }
- return true;
- }
- catch(Exception e)
- {
- InfoLog += "Factory reset command failed\n";
- InfoLog += e.Message;
- InfoLog += "\n";
- Logger.Print("Factory reset command failed", isError: true);
- Logger.Print(e.Message, isError: true);
- return false;
- }
- }
- private async Task<bool> CheckAllIdel()
- {
- try
- {
- using (WebClient webClient = new WebClient())
- {
- NameValueCollection parameters = new NameValueCollection();
- parameters.Add("opt", "2");
- 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 += $"get status respons:\n{request}\n";
- LogPair.Add($"EvseStatus", request);
- Regex rx = new Regex("(SystemStatus)\\\": (\\d)");
- var matches = rx.Matches(request);
- bool isAllPassed = true;
- for(int matchIndex=0; matchIndex< matches.Count; matchIndex++)
- {
- var match = matches[matchIndex];
- if (match.Groups.Count != 3)
- {
- InfoLog += $"Connector {matchIndex} status string mismatched\n";
- Logger.Print($"Connector {matchIndex} status string mismatched", isError:true);
- isAllPassed = false;
- }
- else
- {
- if(match.Groups[2].Value != "1")
- {
- InfoLog += $"Connector {matchIndex} status not Idel\n";
- Logger.Print($"Connector {matchIndex} status not Idel", isError: true);
- isAllPassed = false;
- }
- }
- }
- return isAllPassed;
- }
- }
- return true;
- }
- catch (Exception e)
- {
- InfoLog += "Check all idel command failed\n";
- InfoLog += e.Message;
- InfoLog += "\n";
- Logger.Print("Check all idel command failed", isError:true);
- Logger.Print(e.Message, isError: true);
- return false;
- }
- }
- }
- }
|