/// <summary> /// <see cref="Field.ExportAsXmppSensorData"/> /// </summary> public override void ExportAsXmppSensorData(System.Xml.XmlWriter w) { w.WriteStartElement("dateTime"); this.ExportAsXmppSensorDataCommonAttributes(w); w.WriteAttributeString("value", XmlUtilities.DateTimeToString(this.value)); w.WriteEndElement(); }
/// <summary> /// <see cref="Field.ExportAsTurtleSensorData"/> /// </summary> public override void ExportAsTurtleSensorData(TurtleWriter w) { w.WritePredicateUri("cl", "field"); w.StartBlankNode(); this.ExportAsTurtleSensorDataCommonAttributes(w); w.WritePredicateUri("cl", "dateTime"); w.WriteObjectLiteralTyped(XmlUtilities.DateTimeToString(this.value), "xsd", "dateTime"); w.EndBlankNode(); }
/// <summary> /// Sets a date & time-valued control parameter /// </summary> /// <param name="Jid">JID of controller</param> /// <param name="ParameterName">Parameter name.</param> /// <param name="Value">Value to set.</param> /// <param name="OnlyDatePart">If only the date part should be set (true) or if both date and time parts should be set (false).</param> /// <param name="Nodes">Node references.</param> /// <param name="ServiceToken">Service token.</param> /// <param name="DeviceToken">Device token.</param> /// <param name="UserToken">User token.</param> public void Set(string Jid, string ParameterName, DateTime Value, bool OnlyDatePart, NodeReference[] Nodes, string ServiceToken, string DeviceToken, string UserToken) { StringBuilder sb = new StringBuilder(); XmlWriter w = XmlWriter.Create(sb, XmlUtilities.GetXmlWriterSettings(false, true, true)); w.WriteStartElement("set", "urn:xmpp:iot:control"); if (!string.IsNullOrEmpty(ServiceToken)) { w.WriteAttributeString("serviceToken", ServiceToken); } if (!string.IsNullOrEmpty(DeviceToken)) { w.WriteAttributeString("deviceToken", DeviceToken); } if (!string.IsNullOrEmpty(UserToken)) { w.WriteAttributeString("userToken", UserToken); } ProvisioningServer.WriteNodes(w, Nodes); if (OnlyDatePart) { w.WriteStartElement("date"); w.WriteAttributeString("name", ParameterName); w.WriteAttributeString("value", XmlUtilities.DateToString(Value)); w.WriteEndElement(); } else { w.WriteStartElement("dateTime"); w.WriteAttributeString("name", ParameterName); w.WriteAttributeString("value", XmlUtilities.DateTimeToString(Value)); w.WriteEndElement(); } w.WriteEndElement(); w.Flush(); client.SendMessage(Jid, string.Empty, MessageType.Normal, sb.ToString()); }
/// <summary> /// Requests sensor data /// </summary> /// <param name="Jid">JID of device.</param> /// <param name="Types">Types.</param> /// <param name="Nodes">Nodes.</param> /// <param name="FieldNames">Field names.</param> /// <param name="From">From what point in time to read.</param> /// <param name="To">To what point in time to read.</param> /// <param name="When">When to read the data.</param> /// <param name="ServiceToken">Service token.</param> /// <param name="DeviceToken">Device token.</param> /// <param name="UserToken">User token.</param> /// <param name="Callback">Callback method. May be called multiple times for each request.</param> /// <param name="State">State object to pass on to the callback method.</param> /// <param name="Timeout">Timeout, in seconds.</param> /// <returns>Sequence number of the request.</returns> public int RequestData(string Jid, ReadoutType Types, NodeReference[] Nodes, string[] FieldNames, DateTime?From, DateTime?To, DateTime?When, string ServiceToken, string DeviceToken, string UserToken, SensorDataCallback Callback, object State, int Timeout) { StringBuilder sb = new StringBuilder(); XmlWriter w = XmlWriter.Create(sb, XmlUtilities.GetXmlWriterSettings(false, true, true)); SensorDataEventArgs e = new SensorDataEventArgs(State, Callback, false, Timeout); DateTime TimeoutTP = DateTime.Now.AddSeconds(Timeout); int SeqNr; lock (this.synchObj) { do { SeqNr = this.seqNr++; } while (this.receiving.ContainsKey(SeqNr)); while (this.byTimeout.ContainsKey(TimeoutTP)) { TimeoutTP = TimeoutTP.AddTicks(gen.Next(1, 10)); } this.byTimeout [TimeoutTP] = e; e.Timeout = TimeoutTP; e.SeqNr = SeqNr; if (this.timer == null) { this.timer = new Timer(this.TimerCallback, null, 1000, 1000); } } w.WriteStartElement("req", "urn:xmpp:iot:sensordata"); w.WriteAttributeString("seqnr", SeqNr.ToString()); if (!string.IsNullOrEmpty(ServiceToken)) { w.WriteAttributeString("serviceToken", ServiceToken); } if (!string.IsNullOrEmpty(DeviceToken)) { w.WriteAttributeString("deviceToken", DeviceToken); } if (!string.IsNullOrEmpty(UserToken)) { w.WriteAttributeString("userToken", UserToken); } if (From.HasValue) { w.WriteAttributeString("from", XmlUtilities.DateTimeToString(From.Value)); } if (To.HasValue) { w.WriteAttributeString("to", XmlUtilities.DateTimeToString(To.Value)); } if (When.HasValue) { w.WriteAttributeString("when", XmlUtilities.DateTimeToString(When.Value)); } ProvisioningServer.WriteReadoutTypes(w, Types); ProvisioningServer.WriteNodes(w, Nodes); ProvisioningServer.WriteFields(w, FieldNames); w.WriteEndElement(); w.Flush(); client.IqGet(sb.ToString(), Jid, this.ReqResponse, e, "Sensor Data Request"); return(SeqNr); }
/// <summary> /// <see cref="Field.ExportContent"/> /// </summary> protected override void ExportContent(System.Xml.XmlWriter w) { w.WriteAttributeString("value", XmlUtilities.DateTimeToString(this.value)); }
/// <summary> /// Converts a value to a string suitable for use in an XMPP data form. /// </summary> /// <param name="Value">Value to export.</param> protected override string ValueToString(DateTime Value) { return(XmlUtilities.DateTimeToString(Value)); }