Example #1
0
        static void HandleSmsRecievedEvent(object sender, Sms e)
        {
            //Neue SMS-Nachricht empfangen
            Gsm_Basics.RaiseGsmEvent(GsmEventArgs.Telegram.SmsRec, e.Message);

            //Neue Nachricht in DB speichern
            Sql.InsertMessageRec(e.Message, e.Phone);

            if (e.Message.Trim().ToLower() == GlobalProperty.SmsRouteTestTrigger.ToLower())
            {
                //SMS mit 'MeldeAbruf' Empfangen

                //if (!Gsm.SmsSendQueue.Contains(e))
                {
                    //Gsm.SmsSend(e.Phone, e.Message + " um " + DateTime.Now);
                    //Gsm.SmsToDelete.Add(e.Index);
                    //Gsm.SmsDeletePending();

                    const string ctrlz = "\u001a";

                    //Senden
                    Gsm_Basics.AddAtCommand("AT+CMGS=\"+" + e.Phone + "\"\r");
                    Gsm_Basics.AddAtCommand(e.Message + " um " + DateTime.Now + ctrlz);
                }
            }
            else
            {
                bool isBlocked = Sql.IsMessageBlockedNow(e.Message);

                if (isBlocked)
                {
                    Sql.Log(MelBoxSql.LogTopic.Shift, MelBoxSql.LogPrio.Info, "Keine SMS: " + e.Message);
                }
                else
                {
                    //Für jeden Empfänger (Bereitschaft) eine SMS vorbereiten
                    foreach (ulong phone in Sql.GetCurrentShiftPhoneNumbers())
                    {
                        //Nachricht per SMS weiterleiten
                        Gsm.SmsSend(phone, e.Message);
                    }
                }

                //Nachricht per email weiterleiten
                System.Net.Mail.MailAddressCollection mailTo = Sql.GetCurrentShiftEmail();

                foreach (string mail in Email.PermanentEmailRecievers)
                {
                    mailTo.Add(new System.Net.Mail.MailAddress(mail));
                }

                Email.Send(mailTo, e, isBlocked);
            }

            Gsm.ReadGsmMemory();
        }
Example #2
0
        static void HandleSmsStatusReportEvent(object sender, Sms e)
        {
            //Empfangener Statusreport (z.B. Sendebestätigung)
            Gsm_Basics.RaiseGsmEvent(GsmEventArgs.Telegram.SmsStatus, string.Format("Empfangsbestätigung erhalten für SMS-Referrenz {0}", e.MessageReference));

            Sql.InsertMessageStatus(e.MessageReference, e.SendStatus);             //provisorisch - später entfernen?
            Sql.UpdateMessageSentStatus(MelBoxSql.SendWay.Sms, e.MessageReference, e.SmsProviderTimeStamp, e.SendStatus);

            //Status prüfen 0-31 erfolgreich versandt; 32-63 versucht weiter zu senden: 64-127 Sendeversuch abgebrochen
            if (63 > e.SendStatus && e.SendStatus < 128)
            {
                //BAUSTELLE: In DB prüfen, ob die Nachricht schonal erfolglos versdnet wurde, wenn ja Abbruch, wenn nein; Sendewiederholung
                Email.Send(Email.MelBox2Admin, string.Format("Sendeabbruch. Wiederhole SMS senden an \r\n+{0}\r\n{1}\r\n\r\nSendeversuch um {2}", e.Phone, e.Message, e.SmsProviderTimeStamp), "SMS-Sendeversuch wiederholen");
                Gsm.SmsSend(e.Phone, e.Message);
            }
        }
Example #3
0
        /// <summary>
        /// Soll einmal täglich ausgeführt werden für Inaktivitätsprüfung, DB-Backup
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void DailyCheck(object sender, ElapsedEventArgs e)
        {
            //Timer stoppen, wird am Ende der Methode neu gestartet.
            tDaily.Stop();
            tDaily.Dispose();

            //Lebensbit-Meldung an MelBox2-Admin
#if DEBUG
            Console.WriteLine("\r\nDEBUG-Mode: Es wird keine Routinemeldung (Lebens-Bit) an MelBox2-Admin versendet.");
#else
            Gsm.SmsSend(Properties.Settings.Default.MelBoxAdminPhone, "MelBox2 - Tägliche Routinemeldung");
#endif
            // Prüfe Inaktivität Sender
            InactiveNotification();

            //Prüfe Backup Datenbank
            Sql.CheckDbBackup();

            // Timer neu starten, um TimeSpan bis morgen 8 Uhr neu zu berechnen
            InitDailyCheck(Properties.Settings.Default.HourOfDailyCheck);
        }
        private static void Main()
        {
            try
            {
                Console.BufferHeight = 1000; //Max. Zeilen in Konsole, bei Überlauf werden älteste Zeilen entfernt
                Console.WriteLine("Programm gestartet. Konsole mit max. {0} Zeilen.", Console.BufferHeight);

                Email.PermanentEmailRecievers = Properties.Settings.Default.PermanentEmailRecievers.Cast <string>().ToList();
                Email.MelBox2Admin            = new System.Net.Mail.MailAddress("*****@*****.**", "MelBox2 Admin"); //Properties gehen nicht?

                Gsm_Basics.ComPortName   = Properties.Settings.Default.ComPort;
                Gsm_Basics.BaudRate      = Properties.Settings.Default.BaudRate;
                Gsm_Basics.GsmConnected += HandleGsmEvent;
                Gsm_Basics.GsmEvent     += HandleGsmEvent;

                Gsm.GsmSignalQualityEvent += HandleGsmEvent;
                Gsm.SmsRecievedEvent      += HandleSmsRecievedEvent;
                Gsm.SmsSentEvent          += HandleSmsSentEvent;
                Gsm.SmsStatusreportEvent  += HandleSmsStatusReportEvent;

                MelBoxWeb.StartWebServer();

                Sql.Log(MelBoxSql.LogTopic.Start, MelBoxSql.LogPrio.Info, string.Format("MelBox2 - Anwendung gestartet. {0}, {1} Baud", Gsm_Basics.ComPortName, Gsm_Basics.BaudRate));

                InitDailyCheck(Properties.Settings.Default.HourOfDailyCheck);   //Führt täglich morgens um 8 Uhr Routinecheck aus

                //TEST
                Sql.InsertMessageRec("Testnachricht am " + DateTime.Now.Date, 4915142265412);

                //Auskommentiert für Test WebServer
                Gsm.Connect();

#if DEBUG
                Console.WriteLine("\r\nDEBUG Mode: es wird keine StartUp-Info an MelBox2-Admin gesendet.");
                //Email.Send(Email.MelBox2Admin, "MelBox2 - Anwendung neu gestartet um " + DateTime.Now);
#else
                //Gsm.SmsSend(Properties.Settings.Default.MelBoxAdminPhone, "MelBox2 - Anwendung neu gestartet um " + DateTime.Now); //besser Email
                Email.Send(Email.MelBox2Admin, "MelBox2 - Anwendung neu gestartet um " + DateTime.Now);
#endif

                const string help = "\r\n- ENTF zum Aufräumen der Anzeige\r\n" +
                                    "- EINF für AT-Befehl\r\n" +
                                    "- ESC Taste zum beenden...\r\n";

                Console.WriteLine(help);

                while (true)
                {
                    ConsoleKeyInfo pressed = Console.ReadKey();
                    //Console.WriteLine("Gedrückt: " + pressed.KeyChar);

                    if (pressed.Key == ConsoleKey.Escape)
                    {
                        break;
                    }

                    if (pressed.Key == ConsoleKey.Delete)
                    {
                        Console.Clear();
                        GlobalProperty.ShowOnConsole();
                        Console.WriteLine(help);
                    }

                    //if (pressed.Key == ConsoleKey.O)
                    //{
                    //    Console.Clear();
                    //    GlobalProperty.ShowOnConsole();
                    //    //Console.WriteLine("\r\nOPTIONEN:\r\n\tModem: Umschalten eingehend");
                    //    //Console.WriteLine((byte)GsmEventArgs.Telegram.GsmError + ":\t" + GsmEventArgs.Telegram.GsmError);
                    //    //Console.WriteLine((byte)GsmEventArgs.Telegram.GsmSystem + ":\t" + GsmEventArgs.Telegram.GsmSystem);
                    //    //Console.WriteLine((byte)GsmEventArgs.Telegram.GsmConnection + ":\t" + GsmEventArgs.Telegram.GsmConnection);
                    //    //Console.WriteLine((byte)GsmEventArgs.Telegram.GsmSignal + ":\t" + GsmEventArgs.Telegram.GsmSignal);
                    //    //Console.WriteLine((byte)GsmEventArgs.Telegram.GsmOwnPhone + ":\t" + GsmEventArgs.Telegram.GsmOwnPhone);
                    //    //Console.WriteLine((byte)GsmEventArgs.Telegram.GsmOwnPhone + ":\t" + GsmEventArgs.Telegram.GsmOwnPhone);

                    //    //Console.WriteLine("Konsolenanzeige: Bitweise Filter setzten (sperren):");
                    //    //Console.WriteLine("\r\n\tBitte Nummer auswählen.");

                    //    //string input = Console.ReadLine();
                    //    //if (byte.TryParse(input, out byte a))
                    //    //{
                    //    //    ConsoleDisplayBlock = a;
                    //    //}

                    //    Console.Clear();
                    //    Console.WriteLine(help);
                    //}

                    if (pressed.Key == ConsoleKey.Insert)
                    {
                        Console.WriteLine("AT-Befehl eingeben:");
                        string at = Console.ReadLine();
                        Gsm_Basics.AddAtCommand(at);
                    }
                }
            }
            finally
            {
                Console.WriteLine("Programm wird geschlossen...");
                MelBoxWeb.StopWebServer();
                Gsm_Basics.ClosePort();
                System.Threading.Thread.Sleep(3000);
            }
        }