public void insertLoadObservation(String sensorId,
                                          String sampleNumber,
                                          long loadTime,
                                          double downstreamActivePowerEEA,
                                          double reactiveInductivePowerEEI,
                                          double reactiveCapacitivePowerEEC,
                                          double upstreamActivePowerEUA,
                                          double reactiveInductivePowerEUI,
                                          double reactiveCapaciticePowerEUC,
                                          String tariffType,
                                          String integrationPeriodRef,
                                          long currentTime
                                          )
        {
            XmlSerializer    ser        = new XmlSerializer(typeof(InsertObservation));
            Utf8StringWriter textWriter = new Utf8StringWriter();

            InsertObservation io = new InsertObservation();

            io.assignedSensorId                     = "load:" + sensorId;
            io.observation                          = new Observation();
            io.observation.samplingTime             = new SamplingTime();
            io.observation.samplingTime.timeInstant = new TimeInstant();
            io.observation.samplingTime.timeInstant.timePosition       = new TimePosition();
            io.observation.samplingTime.timeInstant.timePosition.frame = "urn:x-ogc:def:trs:IDAS:1.0:ISO8601";
            var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

            io.observation.samplingTime.timeInstant.timePosition.dateTime = epoch.AddSeconds(currentTime);//ho messo il currentTime. รจ giusto?
            io.observation.procedure      = new Procedure();
            io.observation.procedure.href = "load:" + sensorId;

            //sampleNumber
            io.observation.observedProperty      = new ObservedProperty();
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:sampleNumber";
            io.observation.featureOfInterest     = new FeatureOfInterest();
            io.observation.parameter             = new Parameter();
            io.observation.result      = new Result();
            io.observation.result.text = new Text(sampleNumber);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //loadTime
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:loadTime";
            io.observation.result      = new Result();
            io.observation.result.text = new Text(loadTime.ToString());

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //downstreamActivePowerEEA
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:downstreamActivePowerEEA";
            io.observation.result                = new Result();
            io.observation.result.quantity       = new Quantity("urn:x-ogc:def:phenomenon:IDAS:1.0:power");
            io.observation.result.quantity.uom   = new Uom("kW");
            io.observation.result.quantity.value = downstreamActivePowerEEA.ToString("G", CultureInfo.InvariantCulture);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //reactiveInductivePowerEEI
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:reactiveInductivePowerEEI";
            io.observation.result                = new Result();
            io.observation.result.quantity       = new Quantity("urn:x-ogc:def:phenomenon:IDAS:1.0:reactivePower");
            io.observation.result.quantity.uom   = new Uom("kVAr");
            io.observation.result.quantity.value = reactiveInductivePowerEEI.ToString("G", CultureInfo.InvariantCulture);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //reactiveCapacitivePowerEEC
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:reactiveCapacitivePowerEEC";
            io.observation.result                = new Result();
            io.observation.result.quantity       = new Quantity("urn:x-ogc:def:phenomenon:IDAS:1.0:reactivePower");
            io.observation.result.quantity.uom   = new Uom("kVAr");
            io.observation.result.quantity.value = reactiveCapacitivePowerEEC.ToString("G", CultureInfo.InvariantCulture);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //upstreamActivePowerEUA
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:upstreamActivePowerEUA";
            io.observation.result                = new Result();
            io.observation.result.quantity       = new Quantity("urn:x-ogc:def:phenomenon:IDAS:1.0:power");
            io.observation.result.quantity.uom   = new Uom("kW");
            io.observation.result.quantity.value = upstreamActivePowerEUA.ToString("G", CultureInfo.InvariantCulture);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //reactiveInductivePowerEUI
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:reactiveInductivePowerEUI";
            io.observation.result                = new Result();
            io.observation.result.quantity       = new Quantity("urn:x-ogc:def:phenomenon:IDAS:1.0:reactivePower");
            io.observation.result.quantity.uom   = new Uom("kVAr");
            io.observation.result.quantity.value = reactiveInductivePowerEUI.ToString("G", CultureInfo.InvariantCulture);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //reactiveCapaciticePowerEUC
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:reactiveCapaciticePowerEUC";
            io.observation.result                = new Result();
            io.observation.result.quantity       = new Quantity("urn:x-ogc:def:phenomenon:IDAS:1.0:reactivePower");
            io.observation.result.quantity.uom   = new Uom("kVAr");
            io.observation.result.quantity.value = reactiveCapaciticePowerEUC.ToString("G", CultureInfo.InvariantCulture);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //tariffType
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:tariffType";
            io.observation.result      = new Result();
            io.observation.result.text = new Text(tariffType);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //integrationPeriodRef
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:integrationPeriodRef";
            io.observation.result      = new Result();
            io.observation.result.text = new Text(integrationPeriodRef);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //currentTime
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:currentTime";
            io.observation.result      = new Result();
            io.observation.result.text = new Text(currentTime.ToString());

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //meterID
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:meterID";
            io.observation.result      = new Result();
            io.observation.result.text = new Text(sensorId);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //meterType
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:meterType";
            io.observation.result      = new Result();
            io.observation.result.text = new Text("LOAD");

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //isConcentrator
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:isConcentrator";
            io.observation.result      = new Result();
            io.observation.result.text = new Text("false");

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());
        }
        public void insertMeterObservation(string sensorId,
                                           long samplingTime,
                                           double upstreamActivePower,
                                           double downstreamActivePower,
                                           double reactivePowerQ1,
                                           double reactivePowerQ2,
                                           double reactivePowerQ3,
                                           double reactivePowerQ4)
        {
            XmlSerializer    ser        = new XmlSerializer(typeof(InsertObservation));
            Utf8StringWriter textWriter = new Utf8StringWriter();

            InsertObservation io = new InsertObservation();

            io.assignedSensorId                     = "meter:" + sensorId;
            io.observation                          = new Observation();
            io.observation.samplingTime             = new SamplingTime();
            io.observation.samplingTime.timeInstant = new TimeInstant();
            io.observation.samplingTime.timeInstant.timePosition       = new TimePosition();
            io.observation.samplingTime.timeInstant.timePosition.frame = "urn:x-ogc:def:trs:IDAS:1.0:ISO8601";
            var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

            io.observation.samplingTime.timeInstant.timePosition.dateTime = epoch.AddSeconds(samplingTime);
            io.observation.procedure             = new Procedure();
            io.observation.procedure.href        = "meter:" + sensorId;
            io.observation.observedProperty      = new ObservedProperty();
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:upstreamActivePower";
            io.observation.featureOfInterest     = new FeatureOfInterest();
            io.observation.parameter             = new Parameter();
            io.observation.result                = new Result();
            io.observation.result.quantity       = new Quantity("urn:x-ogc:def:phenomenon:IDAS:1.0:power");
            io.observation.result.quantity.uom   = new Uom("kW");
            io.observation.result.quantity.value = upstreamActivePower.ToString("G", CultureInfo.InvariantCulture);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //downstreamActivePower
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:downstreamActivePower";
            io.observation.result.quantity.value = downstreamActivePower.ToString("G", CultureInfo.InvariantCulture);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //reactivePowerQ1
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:RP_Q1";
            io.observation.result                = new Result();
            io.observation.result.quantity       = new Quantity("urn:x-ogc:def:phenomenon:IDAS:1.0:reactivePower");
            io.observation.result.quantity.uom   = new Uom("kVAr");
            io.observation.result.quantity.value = reactivePowerQ1.ToString("G", CultureInfo.InvariantCulture);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //reactivePowerQ2
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:RP_Q2";
            io.observation.result                = new Result();
            io.observation.result.quantity       = new Quantity("urn:x-ogc:def:phenomenon:IDAS:1.0:reactivePower");
            io.observation.result.quantity.uom   = new Uom("kVAr");
            io.observation.result.quantity.value = reactivePowerQ2.ToString("G", CultureInfo.InvariantCulture);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //reactivePowerQ3
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:RP_Q3";
            io.observation.result                = new Result();
            io.observation.result.quantity       = new Quantity("urn:x-ogc:def:phenomenon:IDAS:1.0:reactivePower");
            io.observation.result.quantity.uom   = new Uom("kVAr");
            io.observation.result.quantity.value = reactivePowerQ3.ToString("G", CultureInfo.InvariantCulture);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //reactivePowerQ4
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:RP_Q4";
            io.observation.result                = new Result();
            io.observation.result.quantity       = new Quantity("urn:x-ogc:def:phenomenon:IDAS:1.0:reactivePower");
            io.observation.result.quantity.uom   = new Uom("kVAr");
            io.observation.result.quantity.value = reactivePowerQ4.ToString("G", CultureInfo.InvariantCulture);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //isConcentrator
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:isConcentrator";
            io.observation.result      = new Result();
            io.observation.result.text = new Text("false");

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //meterID
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:meterID";
            io.observation.result      = new Result();
            io.observation.result.text = new Text(sensorId);

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());

            //meterType
            io.observation.observedProperty.href = "urn:x-ogc:def:phenomenon:FINESCE:1.0:meterType";
            io.observation.result      = new Result();
            io.observation.result.text = new Text("METER");

            textWriter = new Utf8StringWriter();
            ser.Serialize(textWriter, io);
            sendMessage(textWriter.ToString());
        }