Exemple #1
0
        private void CreateAndPublishMessage(string topic, string payload)
        {
            var fields = topic.Split('/', StringSplitOptions.RemoveEmptyEntries);

            if (fields.Length < 6)
            {
                throw new ArgumentException("Topic does not seem to be a valid topic");
            }

            var nodeId      = Int32.Parse(fields[1]);
            var sensorId    = Int32.Parse(fields[2]);
            var messageType = (MessageType)Int32.Parse(fields[3]);
            var ack         = fields[4] == "1";

            if (messageType == MessageType.C_SET || messageType == MessageType.C_REQ)
            {
                var type           = Int32.Parse(fields[5]);
                var sensorDataType = (SensorDataType)type;
                var message        = new MySensorsDataMessage(nodeId, sensorId, sensorDataType, ack, payload);
                queueProvider.EnqueueMessage(message);
            }
            else if (messageType == MessageType.C_PRESENTATION)
            {
                var sensorType = (SensorType)Int32.Parse(fields[5]);
                var message    = new MySensorsPresentationMessage(nodeId, sensorId, sensorType, ack, payload);
                //TODO: Not sure what to do with these...
            }
        }
Exemple #2
0
        public void CreateMySensorsPresentationMessageTest()
        {
            var nodeId     = 0;
            var sensorId   = 1;
            var sensorType = SensorType.S_BARO;
            var ack        = true;
            var payload    = "1234";

            var message = new MySensorsPresentationMessage(nodeId, sensorId, sensorType, ack, payload);

            Assert.AreEqual(nodeId, message.NodeId);
            Assert.AreEqual(sensorId, message.SensorId);
            Assert.AreEqual(sensorType, message.SensorType);
            Assert.AreEqual(ack, message.Ack);
            Assert.AreEqual(payload, message.Payload);
        }