2using System.Collections.Generic;
4using System.Text.RegularExpressions;
5using System.Threading.Tasks;
23 public const string RegExString =
@"^\s*(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?\s*$";
28 public static readonly Regex
RegEx =
new Regex(
RegExString, RegexOptions.Compiled | RegexOptions.Singleline);
31 private bool firstReport =
true;
66 this.value = Convert.FromBase64String(s);
69 this.firstReport =
false;
77 this.Timestamp = DateTime.UtcNow;
108 List<Field> Data =
new List<Field>()
114 if (!(this.value is
null) && this.value.Length <= 256)
117 Convert.ToBase64String(
this.value),
FieldType.Momentary,
FieldQoS.AutomaticReadout));
122 return Task.CompletedTask;
138 (n) => Task.FromResult<
string>(Convert.ToBase64String(
this.value)),
141 this.value = Convert.FromBase64String(v);
142 this.Topic.MqttClient.PUBLISH(this.Topic.FullTopic, this.QoS, this.Retain, Encoding.UTF8.GetBytes(v));
143 return Task.CompletedTask;
153 if (this.value is
null)
155 else if (this.value.Length == 1)
158 this.
Information(Output, this.value.Length.ToString() +
" bytes.");
Information about content received from the MQTT server.
string DataString
String representation of UTF-8 encoded binary data.
MqttHeader Header
MQTT Header
Contains information about a language.
Task< string > GetStringAsync(Type Type, int Id, string Default)
Gets the string value of a string ID. If no such string exists, a string is created with the default ...
Abstract base class for control parameters.
String control parameter.
Represents an MQTT topic with base64-encoded binary data.
Base64Data()
Represents an MQTT topic with base64-encoded binary data.
override IMqttData CreateNew(MqttTopic Topic, MqttContent Content)
Creates a new instance of the data.
override Grade DefaultSupport
Default support.
override void SnifferOutput(ICommunicationLayer Output)
Outputs the parsed data to the sniffer.
override bool IsControllable
TODO
override Task StartReadout(ThingReference ThingReference, ISensorReadout Request, string Prefix, bool Last)
Starts a readout of the data.
static readonly Regex RegEx
Parsed regular expression for BASE64-encoded data.
const string RegExString
Regular expression for BASE64-encoded data.
override Task< string > GetTypeName(Language Language)
Type name representing data.
override Task< DataProcessingResult > DataReported(MqttTopic Topic, MqttContent Content)
Called when new data has been published.
Base64Data(MqttTopic Topic, byte[] Value)
Represents an MQTT topic with base64-encoded binary data.
override ControlParameter[] GetControlParameters()
TODO
Abstract base class for MQTT data encapsulations.
void Information(ICommunicationLayer Output, string Info)
Outputs information to sniffer.
MqttTopic Topic
Topic used
DateTime Timestamp
Timestamp of data reception.
string Append(string Prefix, string Name)
Appends a name to a topic name.
IMqttData FindDataType(MqttContent Content)
FInds best implementation to process binary data.
A Metering node representing an MQTT topic
Represents a 32-bit integer value.
Represents a string value.
Contains a reference to a thing
Interface for observable classes implementing communication protocols.
Interface for classes managing sensor data readouts.
Task ReportFields(bool Done, params Field[] Fields)
Report read fields to the client.
Interface for MQTT Data encapsulations
Task< DataProcessingResult > DataReported(MqttTopic Topic, MqttContent Content)
Called when new data has been published.
DataProcessingResult
Results from processing an incoming message.
FieldQoS
Field Quality of Service flags
FieldType
Field Type flags