private async void HandleConsole() { while (true) { string[] command = Console.ReadLine().Split(' '); Logger.Info($"Komenda: {string.Join(", ", command)}"); switch (command[0].ToLower()) { case "exit": Environment.Exit(0); break; case "sms": Logger.Info("Wszystkie SMS: \n" + string.Join <SMS>(",\n", (await Program.modem.GetAllSMS()).ToArray())); break; case "unread": Logger.Info("Nieodczytane SMS: \n" + string.Join <SMS>(",\n", (await Program.modem.GetUnreadSMS()).ToArray())); break; case "tag": if (command.Length == 1) { Logger.Info("Usage: tag <SMS ID> <TAG>"); } else { Logger.Info("Zmienianie tagu SMS: " + Program.modem.SetSMSTag(int.Parse(command[1]), int.Parse(command[2]))); } break; case "status": Logger.Info(await Program.automat.Status()); break; case "przelacz": if (command.Length == 1) { Logger.Info("Usage: przelacz <DEV ID>"); } else { if (int.TryParse(command[1], out int id)) { SmartDomDevice dev = (await Program.smartdom.GetDevices()).Find(x => x.id == id); if (dev == null) { Logger.Error("Brak urządzenia o danym ID."); return; } Logger.Info("Przełączanie: " + dev); await Program.smartdom.Change(dev); } else { Logger.Warn("Wymagany INT"); } } break; } } }
private async void MainTaskHandler() { while (true) { try { foreach (SMS sms in (await Program.modem.GetUnreadSMS())) { await Program.modem.SetSMSTag(sms.id, 0); string[] command = Program.RemovePolishDiacritics(sms.content.ToLower()).Split(' '); Logger.Info($"Komenda: {string.Join(", ", command)}"); switch (command[0]) { case "status": Logger.Info($"Numer {sms.number} zażądał statusu."); await Program.modem.SendSMS(new SMS() { number = sms.number, content = await Status() }); break; case "przelacz": Logger.Info($"Numer {sms.number} zażądał przełączenia."); if (int.TryParse(command[1], out int id)) { SmartDomDevice dev = (await Program.smartdom.GetDevices()).Find(x => x.id == id); if (dev == null) { Logger.Error("Brak urządzenia o danym ID."); } else { Logger.Info($"Przełączanie: {dev}"); await Program.smartdom.Change(dev); await Program.modem.SendSMS(new SMS() { number = sms.number, content = $"Przełączanie: {dev.name}" }); } } else { Logger.Info("Bledne ID"); } break; case "wlacz": Logger.Info($"Numer {sms.number} zażądał włączenia."); if (int.TryParse(command[1], out int iid)) { SmartDomDevice dev = (await Program.smartdom.GetDevices()).Find(x => x.id == iid); if (dev == null) { Logger.Error("Brak urządzenia o danym ID."); } else { Logger.Info($"Włączanie: {dev}"); await Program.smartdom.Change(dev, new SmartDomDeviceData() { state = true }); await Program.modem.SendSMS(new SMS() { number = sms.number, content = $"Włączanie: {dev.name}" }); } } else { Logger.Info("Bledne ID"); } break; case "wylacz": Logger.Info($"Numer {sms.number} zażądał wyłączenia."); if (int.TryParse(command[1], out int i)) { SmartDomDevice dev = (await Program.smartdom.GetDevices()).Find(x => x.id == i); if (dev == null) { Logger.Error("Brak urządzenia o danym ID."); } else { Logger.Info($"Wyłączanie: {dev}"); await Program.smartdom.Change(dev, new SmartDomDeviceData() { state = false }); await Program.modem.SendSMS(new SMS() { number = sms.number, content = $"Wyłączanie: {dev.name}" }); } } else { Logger.Info("Bledne ID"); } break; } } await Task.Delay(1000); } catch (Exception e) { Logger.Fatal(e); await Task.Delay(10000); } } }