Example #1
0
        private string validate(string xmlString)
        {
            HandlerXML xmlHelper = new HandlerXML(xmlString, xsdPath);
            bool       valid     = xmlHelper.ValidateXML();

            if (!valid)
            {
                return("Mensagem Invalida! " + xmlHelper.ValidationMessage);
            }
            return("Mensagem Valida!");
        }
Example #2
0
        private void Form1_Load(object sender, EventArgs e)
        {
            handler = new HandlerXML(Environment.CurrentDirectory + "/Alerts.xml", Environment.CurrentDirectory + "/Alerts.xsd");
            updateLists();
            String[] operations = { "between", "equal", "minor", "bigger" };
            comboBoxOperator.DataSource = operations;
            String[] types = { "temperature", "humidity" };
            comboBoxCreateType.DataSource = types;

            mqttClient.Connect(Guid.NewGuid().ToString());
            if (!mqttClient.IsConnected)
            {
                MessageBox.Show("Error connecting to the message broker...");
                return;
            }

            mqttClient.Subscribe(topics, qosLevels);
            mqttClient.MqttMsgPublishReceived += MqttClient_MqttMsgPublishReceived;
        }
Example #3
0
        private void MqttClient_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
        {
            String     xmlString = Encoding.UTF8.GetString(e.Message);
            HandlerXML xmlHelper = new HandlerXML(xmlString, xsdPath);
            bool       valid     = xmlHelper.ValidateXML();

            if (!valid)
            {
                Console.WriteLine("Mensagem Invalida! " + xmlHelper.ValidationMessage);
                return;
            }
            else
            {
                this.Invoke((MethodInvoker) delegate()
                {
                    XmlDocument xml = new XmlDocument();
                    xml.LoadXml(Encoding.UTF8.GetString(e.Message));
                    XmlNode node         = xml.SelectSingleNode("/reading");   //obtem o root element do xml
                    XmlNodeList elements = xml.SelectNodes("//*[count(*)=0]"); //obtem todos os elementos sem filhos,
                    foreach (XmlNode item in elements)                         //os elementos sem filhos sao percorridos
                    {
                        for (int i = 0; i < frm.listBox1.Items.Count; i++)     //aqui percorro todas os requesitos que o utizador escolheu ter ativo
                        //eu chamo lhe requesitos pois nesta aplicaçao apesar de no final eu verificar e mandar alertas, nesta aplicaçao o utilizador define como quer que
                        //o valor dos sensores que existem sejam, ou seja, se o utilizador quiser uma alerta para quando a temperatura é maior que 5 entao o ele define
                        //um requesito que diz "quero que a temperatura seja menor que 5"
                        {
                            recursividadeXml(frm.listBox1.Items[i].ToString(), node, item, xml);//nesta funçao mando a mensagem do requesito atual, o node do xml, o atual item do xml, e o xml em si
                        }
                        richTextBox1.AppendText($"{item.Name}:{item.InnerText}\n");
                    }

                    xml.Save(xmlPath);
                    if (xml.InnerXml.Contains("alarms"))
                    {
                        mqttClient.Publish("AlarmsChannel", Encoding.UTF8.GetBytes(xml.InnerXml));
                    }
                    richTextBox1.AppendText($"\n");
                });
            }
        }