diff --git a/console_solaredge/Program.cs b/console_solaredge/Program.cs
index 6826249..0516312 100644
--- a/console_solaredge/Program.cs
+++ b/console_solaredge/Program.cs
@@ -4,81 +4,101 @@ using System.Net.Http.Headers;
using System.Text;
using static console_solaredge.Model;
-SolarEdgeModel result = new();
-var credential = Convert.ToBase64String(Encoding.ASCII.GetBytes($"ced@pal.it:#zPG6tax1yuiWU*8iw"));
-var handler = new HttpClientHandler();
-handler.CookieContainer = new CookieContainer();
-
-using (var client = new HttpClient(handler))
+internal class Program
{
- client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credential);
- var response = await client.GetAsync("https://monitoring.solaredge.com/solaredge-web/p/site/3834979/#/dashboard");
- var cookies = handler.CookieContainer.GetCookies(new Uri("https://monitoring.solaredge.com"));
- string csrfToken = null;
- foreach (Cookie cookie in cookies)
+ ///
+ /// This method retrive alerts from SolarEdge Monitoring site
+ ///
+ /// [0] UserName - [1] Password - [2] SiteId
+ /// Write on console the result
+ private static async Task Main(string[] args)
{
- if (cookie.Name == "CSRF-TOKEN")
+ if (args.Length == 0) {
+
+ Console.WriteLine("No args found, use di this script with folowing args:");
+ Console.WriteLine("./console_solaredge ");
+ throw new ArgumentNullException(nameof(args));
+ }
+
+ SolarEdgeModel result = new();
+ var credential = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{args[0]}:{args[1]}"));
+ var handler = new HttpClientHandler();
+ handler.CookieContainer = new CookieContainer();
+
+ using (var client = new HttpClient(handler))
{
- csrfToken = cookie.Value;
- break;
+ client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credential);
+ var response = await client.GetAsync($"https://monitoring.solaredge.com/solaredge-web/p/site/{args[2]}/#/dashboard");
+ var cookies = handler.CookieContainer.GetCookies(new Uri("https://monitoring.solaredge.com"));
+
+ string? csrfToken = null;
+ foreach (Cookie cookie in cookies)
+ {
+ if (cookie.Name == "CSRF-TOKEN")
+ {
+ csrfToken = cookie.Value;
+ break;
+ }
+ }
+
+ ArgumentNullException.ThrowIfNull(csrfToken);
+
+ var alertRequest = new HttpRequestMessage(HttpMethod.Post, $"https://monitoring.solaredge.com/solaredge-apigw/api/rna/v1.0/site/{args[2]}/alerts?count=20&page=1");
+ alertRequest.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0");
+ alertRequest.Headers.Add("Accept", "application/json, text/plain, */*");
+ alertRequest.Headers.Add("Accept-Language", "it,it-IT;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6");
+ alertRequest.Headers.Add("Connection", "keep-alive");
+ alertRequest.Headers.Add("Origin", "https://monitoring.solaredge.com");
+ alertRequest.Headers.Add("Referer", $"https://monitoring.solaredge.com/solaredge-web/p/site/{args[2]}/");
+ alertRequest.Headers.Add("Sec-Fetch-Dest", "empty");
+ alertRequest.Headers.Add("Sec-Fetch-Mode", "cors");
+ alertRequest.Headers.Add("Sec-Fetch-Site", "same-origin");
+ alertRequest.Headers.Add("X-CSRF-TOKEN", csrfToken);
+ alertRequest.Headers.Add("sec-ch-ua", "\"Microsoft Edge\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"");
+ alertRequest.Headers.Add("sec-ch-ua-mobile", "?0");
+ alertRequest.Headers.Add("sec-ch-ua-platform", "Windows");
+ alertRequest.Content = new StringContent("[{\"fieldFilterOperator\":\"IN\",\"fieldName\":\"status\",\"fieldValue\":[\"OPEN\"]}]", Encoding.UTF8, "application/json");
+
+ var alertResponse = await client.SendAsync(alertRequest);
+ string responseText = await alertResponse.Content.ReadAsStringAsync();
+
+ var apiResult = JsonConvert.DeserializeObject(responseText);
+ var groupOpenAlert = apiResult?.Alerts?.Where(x => x.Open == true).ToList();
+
+ ArgumentNullException.ThrowIfNull(groupOpenAlert);
+ result.Count = groupOpenAlert.Count;
+ result.Alerts = new List();
+
+ foreach (var alert in groupOpenAlert)
+ {
+ result.Alerts.Add(alert);
+ }
+ }
+
+ if (result.Count > 0)
+ {
+ Console.WriteLine("Alert Count: " + result.Count);
+ Console.WriteLine("");
+
+ foreach (var alert in result.Alerts)
+ {
+ Console.WriteLine($"[{result.Alerts.ToList().IndexOf(alert) + 1}]");
+ Console.WriteLine("Type :\t\t" + alert.AlertType);
+ Console.WriteLine("Impact :\t" + alert.Impact);
+ Console.WriteLine("Device :\t" + alert.ComponentType);
+ Console.WriteLine("Device S\\N :\t" + alert.ReporterSerialNumber);
+ Console.WriteLine("On Date :\t" + DateTimeOffset.FromUnixTimeMilliseconds(alert.CreationDate).ToLocalTime().ToString("dd/MM/yyyy HH:mm"));
+ Console.WriteLine("Last Trigger :\t" + DateTimeOffset.FromUnixTimeMilliseconds(alert.LastTrigger).ToLocalTime().ToString("dd/MM/yyyy HH:mm"));
+ Console.WriteLine("");
+ }
+
+ Environment.Exit(2);
+ }
+ else
+ {
+ Console.WriteLine("OK - System run without alert!");
+ Environment.Exit(0);
}
}
-
- ArgumentNullException.ThrowIfNull(csrfToken);
-
- var alertRequest = new HttpRequestMessage(HttpMethod.Post, "https://monitoring.solaredge.com/solaredge-apigw/api/rna/v1.0/site/3834979/alerts?count=20&page=1");
- alertRequest.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0");
- alertRequest.Headers.Add("Accept", "application/json, text/plain, */*");
- alertRequest.Headers.Add("Accept-Language", "it,it-IT;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6");
- alertRequest.Headers.Add("Connection", "keep-alive");
- alertRequest.Headers.Add("Origin", "https://monitoring.solaredge.com");
- alertRequest.Headers.Add("Referer", "https://monitoring.solaredge.com/solaredge-web/p/site/3834979/");
- alertRequest.Headers.Add("Sec-Fetch-Dest", "empty");
- alertRequest.Headers.Add("Sec-Fetch-Mode", "cors");
- alertRequest.Headers.Add("Sec-Fetch-Site", "same-origin");
- alertRequest.Headers.Add("X-CSRF-TOKEN", csrfToken);
- alertRequest.Headers.Add("sec-ch-ua", "\"Microsoft Edge\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"");
- alertRequest.Headers.Add("sec-ch-ua-mobile", "?0");
- alertRequest.Headers.Add("sec-ch-ua-platform", "Windows");
- alertRequest.Content = new StringContent("[{\"fieldFilterOperator\":\"IN\",\"fieldName\":\"status\",\"fieldValue\":[\"OPEN\"]}]", Encoding.UTF8, "application/json");
-
- var alertResponse = await client.SendAsync(alertRequest);
- string responseText = await alertResponse.Content.ReadAsStringAsync();
-
- var apiResult = JsonConvert.DeserializeObject(responseText);
- var groupOpenAlert = apiResult.Alerts.Where(x => x.Open == true).ToList();
-
- result.Count = groupOpenAlert.Count;
- result.Alerts = new List();
-
- foreach (var alert in groupOpenAlert)
- {
- result.Alerts.Add(alert);
- }
-}
-
-if (result.Count > 0)
-{
- Console.WriteLine("Alert Count: " + result.Count);
- Console.WriteLine("");
-
- foreach (var alert in result.Alerts)
- {
- Console.WriteLine($"[{ result.Alerts.ToList().IndexOf(alert) + 1}]");
- Console.WriteLine("Type :\t\t" + alert.AlertType);
- Console.WriteLine("Impact :\t" + alert.Impact);
- Console.WriteLine("Device :\t" + alert.ComponentType);
- Console.WriteLine("Device S\\N :\t" + alert.ReporterSerialNumber);
- Console.WriteLine("On Date :\t" + DateTimeOffset.FromUnixTimeMilliseconds(alert.CreationDate).ToLocalTime().ToString("dd/MM/yyyy HH:mm"));
- Console.WriteLine("Last Trigger :\t" + DateTimeOffset.FromUnixTimeMilliseconds(alert.LastTrigger).ToLocalTime().ToString("dd/MM/yyyy HH:mm"));
- Console.WriteLine("");
- }
-
- Environment.Exit(2);
-}
-else
-{
- Console.WriteLine("System run without alert!");
- Environment.Exit(0);
}
\ No newline at end of file