Ejemplo n.º 1
0
        private static void timer_park_information_and_update(object stateInfo)
        {
            mutex.WaitOne();
            Console.WriteLine("######################Update Excel Information###########################");
            foreach (LocationExcel locationExcel in locationCampus)
            {
                locationExcel.updateIfNeedUpdate();
            }
            Console.WriteLine("####################END-Update Excel Information#########################");

            Console.WriteLine("######################Park Information###########################");
            //List<Provider> providersLocal = (List<Provider>)stateInfo;
            XmlDocument    doc = new XmlDocument();
            XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", null, null);

            doc.AppendChild(dec);
            XmlElement listNote = doc.CreateElement("list");

            foreach (Provider provider in providers)
            {
                ParkingInformation parkingInformation = new ParkingInformation(provider.parkInfoID, provider.parkInfoDescription, provider.parkInfoNumberOfSpots, provider.parkInfoNumberOfSpecialSpots, provider.parkInfoOperatingHours);
                listNote.AppendChild(parkingInformation.ToXML(doc));
            }

            doc.AppendChild(listNote);

            Console.WriteLine(FunctionHelper.formatXmlToUnminifierString(doc));

            Console.WriteLine("Sending information...");
            Mosquitto.publishMosquitto(mClient, new string[] { "ParkDACE\\" }, doc.OuterXml);
            Console.WriteLine("######################END-Park Information#####################\n\n");
            mutex.ReleaseMutex();
        }
Ejemplo n.º 2
0
        private static void timer_SOAP(object stateInfo)
        {
            mutex.WaitOne();
            Console.WriteLine("#######################SOAP########################");
            Provider       provider = (Provider)stateInfo;
            Random         random   = new Random();
            XmlDocument    doc      = new XmlDocument();
            XmlDeclaration dec      = doc.CreateXmlDeclaration("1.0", null, null);

            doc.AppendChild(dec);

            Location location = null;

            foreach (LocationExcel le in locationCampus)
            {
                if (le.parkingID.Equals(provider.parkInfoID))
                {
                    location = le.giveLocation(random.Next(0, provider.parkInfoNumberOfSpots));
                }
            }
            if (location == null)
            {
                Console.WriteLine("Erro try to get spot location from " + provider.parkInfoGeoLocationFile);
                Console.WriteLine("######################END-SOAP#####################\n\n");
                return;
            }
            string xmlString = "";

            try
            {
                xmlString = dynamicWebServiceCall(provider.endpoint, "GetSensorDataString", location.name).ToString();
            } catch (Exception e)
            {
                Console.WriteLine("Fail to comunicate wich " + provider.endpoint);
                Console.WriteLine("######################END-SOAP#####################\n\n");
                return;
            }
            doc.LoadXml(xmlString);
            XmlNode locationNode = doc.SelectSingleNode("//location");

            locationNode.InnerXml = location.ToXML(doc).InnerXml;

            Console.WriteLine(FunctionHelper.formatXmlToUnminifierString(doc));

            Console.WriteLine("Sending information...");
            Mosquitto.publishMosquitto(mClient, new string[] { "ParkDACE\\all", "ParkDACE\\" + provider.parkInfoID }, doc.OuterXml);
            Console.WriteLine("######################END-SOAP#####################\n\n");
            mutex.ReleaseMutex();
        }
Ejemplo n.º 3
0
        public static void ComputeResponse(string str)
        {
            mutex.WaitOne();
            Console.WriteLine("########################DLL########################");
            string[] strs = str.Split(';');
            //string[] ids = { "ParkID", "SpotID", "Timestamp", "ParkingSpotStatus", "BatteryStatus" };

            XmlDocument doc       = new XmlDocument();
            string      xmlString = CreateXMLSpot(strs[0], strs[1], strs[3], strs[2], strs[4]);

            doc.LoadXml(xmlString);

            Console.WriteLine(FunctionHelper.formatXmlToUnminifierString(doc));
            Console.WriteLine("Sending information...");
            Mosquitto.publishMosquitto(mClient, new string[] { "ParkDACE\\all", "ParkDACE\\" + strs[0] }, doc.OuterXml);
            Console.WriteLine("######################END-DLL######################\n\n");
            mutex.ReleaseMutex();
        }
Ejemplo n.º 4
0
 private static void TryReconnectMClientPark(object sender, EventArgs e)
 {
     mutexReconnect.WaitOne();
     if (mClientPark == null || !mClientPark.IsConnected)
     {
         Console.WriteLine("##############Try to reconnect mClientPark#############");
         mClientPark = Mosquitto.connectMosquittoGuaranteeThatTryToConnect(ipsParkDACE);
         if (mClientPark == null || !mClientPark.IsConnected)
         {
             System.Environment.Exit(1);
         }
         mClientPark.ConnectionClosed += TryReconnectMClientPark;
         Mosquitto.configFunctionMosquitto(mClientPark, mClientPark_MqttMsgPublishReceived);
         Mosquitto.subscribedMosquitto(mClientPark, topicsParkDACE[0]);
     }
     mutexReconnect.ReleaseMutex();
     mutex.ReleaseMutex();
 }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            Console.WriteLine("#################################################################################");
            Console.WriteLine("###################################   INIT   ####################################");
            Console.WriteLine("#################################################################################\n\n");
            parkingsNameSubscribed = new List <string>();
            Console.WriteLine("#####################MOSQUITTO#####################");

            Console.WriteLine("####Connect to the topic " + topicsParkDACE[0] + "####");
            mClientPark = Mosquitto.connectMosquittoGuaranteeThatTryToConnect(ipsParkDACE);
            if (mClientPark == null || !mClientPark.IsConnected)
            {
                return;
            }
            mClientPark.ConnectionClosed += TryReconnectMClientPark;
            Console.WriteLine("####Connect to the other topics ####");
            mClient = Mosquitto.connectMosquittoGuaranteeThatTryToConnect(ipsParkDACE);
            if (mClient == null || !mClient.IsConnected)
            {
                return;
            }
            mClient.ConnectionClosed += TryReconnectMClient;
            Console.WriteLine("#####################END-Connection##################\n");

            String topicsSubscribe = "";

            Console.WriteLine("#######Config the mClientPark on topic " + topicsParkDACE[0] + "#######");
            Mosquitto.configFunctionMosquitto(mClientPark, mClientPark_MqttMsgPublishReceived);
            topicsSubscribe += "\n\t\t\t-'" + topicsParkDACE[0] + "'";
            Console.WriteLine("#####################END-Config##################\n");

            Console.WriteLine("#######Config the mClient on new topics#######");
            Mosquitto.configFunctionMosquitto(mClient, mClient_MqttMsgPublishReceived);
            Console.WriteLine("#####################END-Config##################\n");

            Console.WriteLine("You will be subscribe to the topic:" + topicsSubscribe);
            Console.WriteLine("#################END-Config-MOSQUITTO###############\n");
            Console.WriteLine("\n\n\n#################################################################################");
            Console.WriteLine("###########################   Starting Application   ############################");
            Console.WriteLine("#################################################################################\n\n");
            Mosquitto.subscribedMosquitto(mClientPark, topicsParkDACE[0]);
            mutexReconnect.ReleaseMutex();
            mutex.ReleaseMutex();
        }
Ejemplo n.º 6
0
        private static void TryReconnect(object sender, EventArgs e)
        {
            if (mClient == null || !mClient.IsConnected)
            {
                Console.WriteLine("#####################MOSQUITTO#####################");
                mClient = Mosquitto.connectMosquittoGuaranteeThatTryToConnect(ips);
                if (mClient == null || !mClient.IsConnected)
                {
                    return;
                }
                mClient.ConnectionClosed += TryReconnect;
                Console.WriteLine("###################END-MOSQUITTO###################\n");
            }

            if (mClient == null || !mClient.IsConnected)
            {
                return;
            }
            mutex.ReleaseMutex();
        }
Ejemplo n.º 7
0
 private static void TryReconnectMClient(object sender, EventArgs e)
 {
     mutexReconnect.WaitOne();
     if (mClient == null || !mClient.IsConnected)
     {
         Console.WriteLine("##############Try to reconnect mClient#############");
         mClient = Mosquitto.connectMosquittoGuaranteeThatTryToConnect(ipsParkDACE);
         if (mClient == null || !mClient.IsConnected)
         {
             System.Environment.Exit(1);
         }
         mClient.ConnectionClosed += TryReconnectMClient;
         Mosquitto.configFunctionMosquitto(mClient, mClient_MqttMsgPublishReceived);
         foreach (String parkingInformation in parkingsNameSubscribed)
         {
             Mosquitto.subscribedMosquitto(mClient, topicsParkDACE[0] + "" + parkingInformation);
         }
     }
     mutexReconnect.ReleaseMutex();
     mutex.ReleaseMutex();
 }
Ejemplo n.º 8
0
 public Func <string, string, dynamic> this[string topic]
 {
     get
     {
         if (!handlers.ContainsKey(topic))
         {
             return(null);
         }
         return(handlers[topic]);
     }
     set
     {
         if (value == null)
         {
             handlers.Remove(topic);
             Mosquitto.Unubscribe(topic);
         }
         else if (!handlers.ContainsKey(topic))
         {
             Mosquitto.Subscribe(topic);
             handlers[topic] = value;
         }
     }
 }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            Console.WriteLine("#################################################################################");
            Console.WriteLine("###################################   INIT   ####################################");
            Console.WriteLine("#################################################################################\n\n");
            providers      = new List <Provider>();
            locationCampus = new List <LocationExcel>();
            timers         = new List <Timer>();
            Console.WriteLine("######################SETTINGS#####################");
            if (!FunctionHelper.ValidXMLParkingLocation("ParkingLocation.xml", "ParkingLocation.xsd"))
            {
                Console.WriteLine("####################END-SETTINGS###################\n");
                Console.WriteLine("Press any key to exit!");
                Console.ReadKey();
                return;
            }
            int time = ReadXMLParkingLocation("ParkingLocation.xml");

            if (providers == null || providers.ToArray().Length == 0)
            {
                Console.WriteLine("####################END-SETTINGS###################\n");
                Console.WriteLine("Press any key to exit!");
                Console.ReadKey();
                return;
            }
            Console.WriteLine("Xml is valid!");
            string topicsString = "ParkDACE\\, ParkDACE\\all";


            foreach (Provider provider in providers)
            {
                Console.WriteLine("");
                Console.WriteLine("Connection Type: " + provider.connectionType);
                Console.WriteLine("Endpoint: " + provider.endpoint);
                Console.WriteLine("parkInfo: ");
                Console.WriteLine("\tID: " + provider.parkInfoID);
                Console.WriteLine("\tDescription: " + provider.parkInfoDescription);
                Console.WriteLine("\tNumberOfSpots: " + provider.parkInfoNumberOfSpecialSpots);
                Console.WriteLine("\tOperatingHours: " + provider.parkInfoOperatingHours);
                Console.WriteLine("\tNumberOfSpecialSpots: " + provider.parkInfoNumberOfSpecialSpots);
                Console.WriteLine("\tGeoLocationFile: " + provider.parkInfoGeoLocationFile);
                Console.WriteLine("");

                topicsString += ", ParkDACE\\" + provider.parkInfoID;
            }
            Console.WriteLine("####################END-SETTINGS###################\n");

            Console.WriteLine("#####################MOSQUITTO#####################");
            mClient = Mosquitto.connectMosquittoGuaranteeThatTryToConnect(ips);
            if (mClient == null || !mClient.IsConnected)
            {
                Console.WriteLine("###################END-MOSQUITTO###################\n");
                Console.WriteLine("Press any key to exit!");
                Console.ReadKey();
                return;
            }
            mClient.ConnectionClosed += TryReconnect;
            Console.WriteLine("Topics that will be send data " + topicsString + "!");
            Console.WriteLine("###################END-MOSQUITTO###################\n");

            Console.WriteLine("\n\n\n#################################################################################");
            Console.WriteLine("###########################   Starting Application   ############################");
            Console.WriteLine("#################################################################################\n\n");
            foreach (Provider provider in providers)
            {
                locationCampus.Add(new LocationExcel(provider.parkInfoGeoLocationFile));
                if (provider.connectionType.Equals("DLL") || provider.endpoint.Equals("ParkingSensorNodeDll"))
                {
                    ParkingSensorNodeDll.ParkingSensorNodeDll dll = new ParkingSensorNodeDll.ParkingSensorNodeDll();
                    dll.Initialize(ComputeResponse, time);
                }
                else if (provider.connectionType.Equals("SOAP"))
                {
                    timers.Add(new Timer(new TimerCallback(timer_SOAP), provider, 1, time));
                }
            }
            timerParks = new Timer(new TimerCallback(timer_park_information_and_update), providers, 1, time);
            mutex.ReleaseMutex();
        }
Ejemplo n.º 10
0
        public static void mClientPark_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) //Recebe tudo independentement que park pretence
        {
            mutex.WaitOne();
            Console.WriteLine("#######################New Park########################################");
            Console.WriteLine("mClientPark-->> Topic: " + e.Topic);
            List <ParkingInformation> parkingsInformationsLocal = new List <ParkingInformation>();
            List <string>             parkingsNameLocal         = new List <string>();
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(Encoding.UTF8.GetString(e.Message));
            if (!FunctionHelper.ValidXML(doc, "ParkInformation.xsd"))
            {
                Console.WriteLine("##############################END New Park#################################");
                mutex.ReleaseMutex();
                return;
            }
            Console.WriteLine("XML is valid!");
            Boolean newTopics = false;

            foreach (XmlNode parkingInformationNode in doc.SelectNodes("/list/parkingInformation"))
            {
                ParkingInformation parkingInformation = new ParkingInformation(parkingInformationNode.OuterXml);
                parkingsInformationsLocal.Add(parkingInformation);
                if (parkingsNameSubscribed.Count == 0 || !parkingsNameSubscribed.Exists(topicList => topicList.Equals(parkingInformation.id)))
                {
                    Console.Write(newTopics?"": "New topics subscribed: \n");
                    newTopics = true;
                    string topic = topicsParkDACE[0] + "" + parkingInformation.id;
                    Console.WriteLine("\t\t|" + topic);
                    parkingsNameSubscribed.Add(parkingInformation.id);
                    Mosquitto.subscribedMosquitto(mClient, topic);
                }
            }
            Console.WriteLine();


            //Verificar e unsubscribe os que já não existem
            if (parkingsNameSubscribed.Count > 0)
            {
                List <string> auxList = parkingsNameLocal.Except(parkingsNameSubscribed).ToList();
                if (auxList.Count > 0)
                {
                    Console.WriteLine("Old topics Unsubscribed: ");
                    foreach (string aux in auxList)
                    {
                        Console.WriteLine("\t\t|" + topicsParkDACE[0] + "" + aux);
                        Mosquitto.unsubscribeMosquitto(mClient, new string[] { topicsParkDACE[0] + "" + aux });
                        parkingsNameSubscribed.Remove(aux);
                    }
                }
            }

            /////// Send data to BD
            string response = "";

            foreach (ParkingInformation park in parkingsInformationsLocal)
            {
                try
                {
                    response = DatabaseHelper.newParking(park);
                }
                catch (ParkNotInsertedException ex)
                {
                    response = ex.Message;
                }
                Console.WriteLine("\t\t\t" + park.id + ":" + response);
            }

            Console.WriteLine("##############################END New Park#################################");
            mutex.ReleaseMutex();
        }