//Send IoT Event-Messages into Azure EventHub public void SendIoTEvents(ConnectResponse ioTEvent) { var eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, eventHubName); try { MemoryStream ms = new MemoryStream(); EventDataStructure DeviceEvent = new EventDataStructure(); //DeviceEvent.event_type = ioTEvent.data.data.type; DeviceEvent.event_measurement_id = ioTEvent.data.data.id; DeviceEvent.event_source_id = ioTEvent.data.data.source.id; DeviceEvent.event_time = ioTEvent.data.data.time; DeviceEvent.event_measurement = new Dictionary<string, decimal>(); switch (ioTEvent.data.data.type) { case "certuss_Dampf": DeviceEvent.event_type = "SteamSensor01"; DeviceEvent.event_measurement.Add("Pressure_" + ioTEvent.data.data.certuss_Dampf.Dampfdruck.unit, ioTEvent.data.data.certuss_Dampf.Dampfdruck.value); DeviceEvent.event_measurement.Add("Power_" + ioTEvent.data.data.certuss_Dampf.Dampfleistung.unit, ioTEvent.data.data.certuss_Dampf.Dampfleistung.value); DeviceEvent.event_measurement.Add("Target_" + ioTEvent.data.data.certuss_Dampf.Sollwert_Dampfdruck.unit, ioTEvent.data.data.certuss_Dampf.Sollwert_Dampfdruck.value); DeviceEvent.event_measurement.Add("Temperature_" + ioTEvent.data.data.certuss_Dampf.Dampftemperatur.unit, ioTEvent.data.data.certuss_Dampf.Dampftemperatur.value); break; case "certuss_Dampfnetz": DeviceEvent.event_type = "SteamSensor02"; DeviceEvent.event_measurement.Add("Pressure_" + ioTEvent.data.data.certuss_Dampfnetz.Dampfdruck.unit, ioTEvent.data.data.certuss_Dampfnetz.Dampfdruck.value); break; case "certuss_Flammenstrom": DeviceEvent.event_type = "SteamSensor03"; DeviceEvent.event_measurement.Add("Status_" + ioTEvent.data.data.certuss_Flammenstrom.Flammenstrom.unit, ioTEvent.data.data.certuss_Flammenstrom.Flammenstrom.value); break; case "certuss_Gleitschieberventil": DeviceEvent.event_type = "SteamSensor04"; DeviceEvent.event_measurement.Add("Status_" + ioTEvent.data.data.certuss_Gleitschieberventil.Gleitschieberventil.unit, ioTEvent.data.data.certuss_Gleitschieberventil.Gleitschieberventil.value); break; case "certuss_Kamin": DeviceEvent.event_type = "SteamSensor05"; DeviceEvent.event_measurement.Add("Draught_" + ioTEvent.data.data.certuss_Kamin.Kaminzug.unit, ioTEvent.data.data.certuss_Kamin.Kaminzug.value); DeviceEvent.event_measurement.Add("Pressure_" + ioTEvent.data.data.certuss_Kamin.Luftdruck_Aufstellraum.unit, ioTEvent.data.data.certuss_Kamin.Luftdruck_Aufstellraum.value); DeviceEvent.event_measurement.Add("TemperatureIn_" + ioTEvent.data.data.certuss_Kamin.Lufteintrittstemperatur.unit, ioTEvent.data.data.certuss_Kamin.Lufteintrittstemperatur.value); DeviceEvent.event_measurement.Add("TemperatureOut_" + ioTEvent.data.data.certuss_Kamin.Rauchgastemperatur.unit, ioTEvent.data.data.certuss_Kamin.Rauchgastemperatur.value); break; case "certuss_Kesselgroesse": DeviceEvent.event_type = "SteamSensor06"; DeviceEvent.event_measurement.Add("Capacity_" + ioTEvent.data.data.certuss_Kesselgroesse.Kesselgroesse.unit, ioTEvent.data.data.certuss_Kesselgroesse.Kesselgroesse.value); break; case "certuss_LME7": DeviceEvent.event_type = "SteamSensor07"; DeviceEvent.event_measurement.Add("Power_" + ioTEvent.data.data.certuss_LME7.Leistungswert.unit, ioTEvent.data.data.certuss_LME7.Leistungswert.value); break; case "certuss_Netzspannung": DeviceEvent.event_type = "SteamSensor08"; DeviceEvent.event_measurement.Add("Voltage_" + ioTEvent.data.data.certuss_Netzspannung.Netzspannung_LME7.unit, ioTEvent.data.data.certuss_Netzspannung.Netzspannung_LME7.value); break; case "certuss_Schaltschrank": DeviceEvent.event_type = "SteamSensor09"; DeviceEvent.event_measurement.Add("Temperature_" + ioTEvent.data.data.certuss_Schaltschrank.Temperatur.unit, ioTEvent.data.data.certuss_Schaltschrank.Temperatur.value); break; case "certuss_Speisung": DeviceEvent.event_type = "SteamSensor10"; DeviceEvent.event_measurement.Add("Flow_" + ioTEvent.data.data.certuss_Speisung.Durchfluss.unit, ioTEvent.data.data.certuss_Speisung.Durchfluss.value); DeviceEvent.event_measurement.Add("Power_" + ioTEvent.data.data.certuss_Speisung.Speisepumpe.unit, ioTEvent.data.data.certuss_Speisung.Speisepumpe.value); DeviceEvent.event_measurement.Add("Target_" + ioTEvent.data.data.certuss_Speisung.Sollwert_Speisepumpe.unit, ioTEvent.data.data.certuss_Speisung.Sollwert_Speisepumpe.value); DeviceEvent.event_measurement.Add("Pressure_" + ioTEvent.data.data.certuss_Speisung.Vordruck.unit, ioTEvent.data.data.certuss_Speisung.Vordruck.value); DeviceEvent.event_measurement.Add("Temperature_" + ioTEvent.data.data.certuss_Speisung.Speisewassertemperatur_Behaelter_CVE.unit, ioTEvent.data.data.certuss_Speisung.Speisewassertemperatur_Behaelter_CVE.value); DeviceEvent.event_measurement.Add("TemperatureIn_" + ioTEvent.data.data.certuss_Speisung.Speisewassertemperatur_Kesseleintritt.unit, ioTEvent.data.data.certuss_Speisung.Speisewassertemperatur_Kesseleintritt.value); break; } if (DeviceEvent.event_type != null) { DataContractJsonSerializer ser = new DataContractJsonSerializer(DeviceEvent.GetType()); ser.WriteObject(ms, DeviceEvent); ServiceEventSource.Current.ServiceMessage(this, "Send to EventHub - {0} - {1}", DeviceEvent.event_type, DeviceEvent.event_time); DeviceEvent = null; ser = null; String jsonIoTEvent = Encoding.UTF8.GetString(ms.ToArray()); if (jsonIoTEvent.Length != 0) { jsonIoTEvent = jsonIoTEvent.Replace("{\"event_measurement\":[", "{"); jsonIoTEvent = jsonIoTEvent.Replace("{\"Key\":\"", "\""); jsonIoTEvent = jsonIoTEvent.Replace(",\"Value\":", ":"); jsonIoTEvent = jsonIoTEvent.Replace("},", ","); jsonIoTEvent = jsonIoTEvent.Replace("}],", ","); jsonIoTEvent = jsonIoTEvent.Replace("l\\/min", "l/min"); eventHubClient.Send(new EventData(Encoding.UTF8.GetBytes(jsonIoTEvent))); } jsonIoTEvent = null; } eventHubClient.Close(); ms.Close(); } catch (Exception e) { ServiceEventSource.Current.ServiceMessage(this, "Exception caught - {0} - unknown error during Send DeviceEvent to EventHub", System.Convert.ToString(e)); //System.Diagnostics.Trace.WriteLine("Exception caught" + System.Convert.ToString(e), "Error"); } return; }