1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | PROGRAM Edge1 VAR Init : BOOL := TRUE; EoNConnectionState : Sparkplug.SparkplugSessionStateType; MyDevice1 : Sparkplug.FB_Device; MyDevice2 : Sparkplug.FB_Device; MyDevice3 : Sparkplug.FB_Device; PluggedIntoEoN : BOOL; MyDevice2State : Sparkplug.SparkplugSessionStateType; PlugIt : BOOL := TRUE; ServerUrl : STRING; KeepAlive : UINT; Username : WSTRING := ""; UseTLS : BOOL := FALSE; hCert : SysTypes.RTS_IEC_HANDLE := SysTypes.RTS_INVALID_HANDLE; // Handle to the client certificate (optional) only used if UseTLS is TRUE NodeName : WSTRING := "EdgeOfNetworkNode1"; publishPeriod : UINT := 500; // milliseconds interval so 1000 = 1s //Encapsulates all the data neccessaray to handle/check encrypted tcp connections //Static initialization, as shown in the following code snippet; //VAR // myTLSContext : NBS.TLSContext := ( // sUseCaseName:='NBSTest', // ciCertInfo:=ciCertInfo, // ); commonName : STRING := 'MyRasPi'; ciCertInfo : Sparkplug.MQTT.NBS.CERT_INFO := (psInfo := ADR( commonName ), udiSize := TO_UDINT(LEN( commonName ))); sHostname : Sparkplug.MQTT.NBS.HOSTNAME; myTLS: Sparkplug.MQTT.NBS.TLSContext := (sUseCaseName := sUseCaseName, ePurpose := ePurpose, sHostname := sHostname, udiVerificationMode := udiVerificationMode); GenerateDataPeriod : TIME; GenerateDataTimer : TON; Str : ChangingString; //These are specific for registering certificates at test.mqtt.org RegisterCSR : Web_Client.WebClient; httpPost : WSTRING(2048); wsCSRorClientCertOut : WSTRING(2048); TON_DelayStartup : TON := (PT := T#5S); Scenario(); GenerateDataTimer( IN := NOT GenerateDataTimer.Q, PT := GenerateDataPeriod, ET => GenerateDataElapsed ); IF GenerateDataTimer.Q THEN GenerateEoNData(); GenerateDeviceData(); END_IF TON_DelayStartup(IN:= TRUE); PrimaryHostID := "CODESYSPrimaryHost", //"Sparky", , // Please change this to your own PrimaryHostID! KeepAlive := KeepAlive, CleanSession := CleanSession, Username := Username, Password := Password, UseTLS := UseTLS, hCert := hCert, GroupId := GroupId, NodeName := NodeName, publishPeriod := publishPeriod, // ITLSContextProvider := ItfTLSContext, // We provide a reference to an instance of TLSContext IASyncPropertyProvider := , arSparkplugDateTime := SparkPlugBSimpleTypes.arSparkplugDateTime_EoN, arSparkplugDouble := SparkPlugBSimpleTypes.arSparkplugDouble_EoN, arSparkplugInt16 := SparkPlugBSimpleTypes.arSparkplugInt16_EoN, arSparkplugInt64 := SparkPlugBSimpleTypes.arSparkplugInt64_EoN, arSparkplugUInt16 := SparkPlugBSimpleTypes.arSparkplugUInt16_EoN, arSparkplugUInt64 := SparkPlugBSimpleTypes.arSparkplugUInt64_EoN, arSparkplugText := SparkPlugBSimpleTypes.arSparkplugText_EoN, //It generates a CSR and sends it to test.mosquitto.org to be signed arSparkplugBoolean := SparkPlugBSimpleTypes.arSparkplugBoolean_D1, arSparkplugFloat := SparkPlugBSimpleTypes.arSparkplugFloat_D1, arSparkplugInt8 := SparkPlugBSimpleTypes.arSparkplugInt8_D1, arSparkplugInt32 := SparkPlugBSimpleTypes.arSparkplugInt32_D1, arSparkplugUInt8 := SparkPlugBSimpleTypes.arSparkplugUInt8_D1, arSparkplugUInt32 := SparkPlugBSimpleTypes.arSparkplugUInt32_D1, arSparkplugUUID := SparkPlugBSimpleTypes.arSparkplugUUID_D1, arSparkplugString := SparkPlugBSimpleTypes.arSparkplugString_D1 ); MyDevice2( DeviceName := "SomeDevice002", DeviceHealthy := Device2Healthy, SessionState => MyDevice2State, arSparkplugDateTime := SparkPlugBSimpleTypes.arSparkplugDateTime_D2, arSparkplugDouble := SparkPlugBSimpleTypes.arSparkplugDouble_D2, arSparkplugInt16 := SparkPlugBSimpleTypes.arSparkplugInt16_D2, arSparkplugInt64 := SparkPlugBSimpleTypes.arSparkplugInt64_D2, arSparkplugUInt16 := SparkPlugBSimpleTypes.arSparkplugUInt16_D2, arSparkplugUInt64 := SparkPlugBSimpleTypes.arSparkplugUInt64_D2, arSparkplugText := SparkPlugBSimpleTypes.arSparkplugText_D2, arSparkplugBoolean := SparkPlugBSimpleTypes.arSparkplugBoolean_D3, arSparkplugFloat := SparkPlugBSimpleTypes.arSparkplugFloat_D3, arSparkplugInt8 := SparkPlugBSimpleTypes.arSparkplugInt8_D3, arSparkplugInt32 := SparkPlugBSimpleTypes.arSparkplugInt32_D3, arSparkplugUInt8 := SparkPlugBSimpleTypes.arSparkplugUInt8_D3, arSparkplugUInt32 := SparkPlugBSimpleTypes.arSparkplugUInt32_D3, arSparkplugUUID := SparkPlugBSimpleTypes.arSparkplugUUID_D3, arSparkplugString := SparkPlugBSimpleTypes.arSparkplugString_D3 ); |