From 8670c8116faeca66dee161546d7b1b100684c2ab Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Mon, 29 Oct 2018 22:35:18 +0000 Subject: [PATCH] Update for Lorabot --- Lora-Bot/Lora-Bot.csproj.user | 6 ++ Lora-Bot/Moduls/Mqtt.cs | 18 ++--- Lora-Bot/Moduls/Scral.cs | 38 ++++----- Lora-Bot/Moduls/Txtout.cs | 9 +-- Lora-Bot/Program.cs | 59 +++++++++----- Lora-Bot/Properties/AssemblyInfo.cs | 85 +++++++++++---------- Lora-Bot/bin/Release/Bot-Utils.dll | Bin 23040 -> 23040 bytes Lora-Bot/bin/Release/ConnectorDataMqtt.dll | Bin 6656 -> 6656 bytes Lora-Bot/bin/Release/Iot-Interfaces.dll | Bin 6144 -> 6144 bytes Lora-Bot/bin/Release/Lora-Bot.exe | Bin 18944 -> 19968 bytes Lora-Bot/bin/Release/Lora.dll | Bin 24064 -> 27648 bytes Lora-Bot/bin/Release/M2Mqtt.dll | Bin 50688 -> 50688 bytes Lora-Bot/bin/Release/Utils-IoT.dll | Bin 13824 -> 13824 bytes Lora-Bot/bin/Release/Utils.dll | Bin 29184 -> 29696 bytes Lora-Bot/bin/Release/litjson.dll | Bin 51200 -> 51200 bytes Lora-Bot/dpkg/control | 2 +- 16 files changed, 122 insertions(+), 95 deletions(-) create mode 100644 Lora-Bot/Lora-Bot.csproj.user diff --git a/Lora-Bot/Lora-Bot.csproj.user b/Lora-Bot/Lora-Bot.csproj.user new file mode 100644 index 0000000..b6809fe --- /dev/null +++ b/Lora-Bot/Lora-Bot.csproj.user @@ -0,0 +1,6 @@ + + + + -freq 868100000 -sp 8 -bw 62500 -cr 6 + + \ No newline at end of file diff --git a/Lora-Bot/Moduls/Mqtt.cs b/Lora-Bot/Moduls/Mqtt.cs index 35ca207..8b4bc16 100644 --- a/Lora-Bot/Moduls/Mqtt.cs +++ b/Lora-Bot/Moduls/Mqtt.cs @@ -32,23 +32,17 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { } public override void EventLibSetter() { - this.library.Update += this.HandleLibUpdate; + this.library.DataUpdate += this.HandleLibUpdate; + this.library.StatusUpdate += this.HandleLibUpdate; } protected override void LibUpadteThread(Object state) { try { if (this.mqttconnect) { - DeviceUpdateEvent e = state as DeviceUpdateEvent; - String topic = ""; - String data = ""; - if (e.Parent.GetType().HasInterface(typeof(IMqtt))) { - IMqtt sensor = (IMqtt)e.Parent; - topic = "lora/" + sensor.MqttTopic(); - data = sensor.ToJson(); - } - if (topic != "" && data != "") { - ((ADataBackend)this.mqtt).Send(topic, data); - this.Update?.Invoke(this, new MqttEvent(topic, data)); + if(state.GetType().HasInterface(typeof(IMqtt))) { + IMqtt sensor = state as IMqtt; + ((ADataBackend)this.mqtt).Send("lora/" + sensor.MqttTopic(), sensor.ToJson()); + this.Update?.Invoke(this, new MqttEvent("lora/" + sensor.MqttTopic(), sensor.ToJson())); } } } catch (Exception e) { diff --git a/Lora-Bot/Moduls/Scral.cs b/Lora-Bot/Moduls/Scral.cs index c61e69d..d59f687 100644 --- a/Lora-Bot/Moduls/Scral.cs +++ b/Lora-Bot/Moduls/Scral.cs @@ -7,7 +7,7 @@ using BlubbFish.Utils; using BlubbFish.Utils.IoT.Bots; using BlubbFish.Utils.IoT.Bots.Moduls; using Fraunhofer.Fit.Iot.Lora; -using Fraunhofer.Fit.Iot.Lora.Devices; +using Fraunhofer.Fit.Iot.Lora.Trackers; using Fraunhofer.Fit.Iot.Lora.Events; using LitJson; @@ -44,34 +44,34 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { } public override void EventLibSetter() { - this.library.Update += this.HandleLibUpdate; + this.library.DataUpdate += this.HandleLibUpdate; } protected override void LibUpadteThread(Object state) { try { - DeviceUpdateEvent e = state as DeviceUpdateEvent; - LoraClient l = (LoraClient)e.Parent; - if (!this.nodes.Contains(l.Name)) { - this.SendRegister(l); - this.nodes.Add(l.Name); + if (state is DataUpdateEvent data) { + if (!this.nodes.Contains(data.Name)) { + this.SendRegister(data); + this.nodes.Add(data.Name); + } + this.SendUpdate(data); } - this.SendUpdate(l); } catch (Exception e) { Helper.WriteError("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral.LibUpadteThread: " + e.Message); } } - private void SendUpdate(LoraClient l) { - if (l.Gps.Fix) { + private void SendUpdate(DataUpdateEvent data) { + if (data.Gps.Fix) { Dictionary d = new Dictionary { { "type", "uwb" }, - { "tagId", l.Name }, + { "tagId", data.Name }, { "timestamp", DateTime.Now.ToString("o") }, - { "lat", l.Gps.Latitude }, - { "lon", l.Gps.Longitude }, - { "bearing", l.Rssi }, - { "herr", l.Gps.Hdop }, - { "battery_level", l.Snr } + { "lat", data.Gps.Latitude }, + { "lon", data.Gps.Longitude }, + { "bearing", data.Rssi }, + { "herr", data.Gps.Hdop }, + { "battery_level", data.Snr } }; try { String addr = this.config["update"]["addr"]; @@ -81,17 +81,17 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { } } catch (Exception e) { Helper.WriteError("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral.SendUpdate: " + e.Message); - this.SendRegister(l); + this.SendRegister(data); } } } - private void SendRegister(LoraClient l) { + private void SendRegister(DataUpdateEvent data) { Dictionary d = new Dictionary { { "device", "wearable" }, { "sensor", "tag" }, { "type", "uwb" }, - { "tagId", l.Name }, + { "tagId", data.Name }, { "timestamp", DateTime.Now.ToString("o") }, { "unitOfMeasurements", "meters" }, { "observationType", "propietary" }, diff --git a/Lora-Bot/Moduls/Txtout.cs b/Lora-Bot/Moduls/Txtout.cs index d412182..b1aad76 100644 --- a/Lora-Bot/Moduls/Txtout.cs +++ b/Lora-Bot/Moduls/Txtout.cs @@ -4,7 +4,7 @@ using BlubbFish.Utils; using BlubbFish.Utils.IoT.Bots.Events; using BlubbFish.Utils.IoT.Bots.Moduls; using Fraunhofer.Fit.Iot.Lora; -using Fraunhofer.Fit.Iot.Lora.Devices; +using Fraunhofer.Fit.Iot.Lora.Trackers; using Fraunhofer.Fit.Iot.Lora.Events; namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { @@ -25,14 +25,13 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { } public override void EventLibSetter() { - this.library.Update += this.HandleLibUpdate; + this.library.DataUpdate += this.HandleLibUpdate; } protected override void LibUpadteThread(Object state) { try { - DeviceUpdateEvent e = state as DeviceUpdateEvent; - if (e.Parent is LoraClient l) { - String s = l.Name + "," + l.Receivedtime.ToString("o") + "," + l.Gps.Latitude + "," + l.Gps.Longitude + ",https://www.google.de/maps?q=" + l.Gps.Latitude + "%2C" + l.Gps.Longitude + "," + l.Rssi + "," + l.PacketRssi + "," + l.Snr; + if(state is DataUpdateEvent data) { + String s = data.Name + "," + data.Receivedtime.ToString("o") + "," + data.Gps.Latitude + "," + data.Gps.Longitude + "," + data.Rssi + "," + data.PacketRssi + "," + data.Snr + ",https://www.google.de/maps?q=" + data.Gps.Latitude + "%2C" + data.Gps.Longitude; this.file.WriteLine(s); this.file.Flush(); this.Update?.Invoke(this, new ModulEventArgs(this.filename, "Line", s, "TXTOUT")); diff --git a/Lora-Bot/Program.cs b/Lora-Bot/Program.cs index 14f34b0..8a19fbb 100644 --- a/Lora-Bot/Program.cs +++ b/Lora-Bot/Program.cs @@ -3,33 +3,56 @@ using System.Collections.Generic; using BlubbFish.Utils; using BlubbFish.Utils.IoT.Bots; using Fraunhofer.Fit.Iot.Lora; +using Fraunhofer.Fit.Iot.Lora.Events; namespace Fraunhofer.Fit.IoT.Bots.LoraBot { class Program : Bot { static void Main(String[] args) => new Program(args); public Program(String[] args) { InIReader.SetSearchPath(new List() { "/etc/lorabot", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\lorabot" }); - if (!InIReader.ConfigExist("settings")) { - Helper.WriteError("No settings.ini found. Abord!"); - return; + CmdArgs.Instance.SetArguments(new Dictionary() { + { "-freq", new CmdArgs.VaildArguments(CmdArgs.ArgLength.Touple) }, + { "-bw", new CmdArgs.VaildArguments(CmdArgs.ArgLength.Touple) }, + { "-sp", new CmdArgs.VaildArguments(CmdArgs.ArgLength.Touple) }, + { "-cr", new CmdArgs.VaildArguments(CmdArgs.ArgLength.Touple) }, + }, args); + if (!CmdArgs.Instance.HasArgumentType("-freq") && !CmdArgs.Instance.HasArgumentType("-bw") && !CmdArgs.Instance.HasArgumentType("-sp") && !CmdArgs.Instance.HasArgumentType("-cr")) { + if (!InIReader.ConfigExist("settings")) { + Helper.WriteError("No settings.ini found. Abord!"); + return; + } + InIReader settings = InIReader.GetInstance("settings"); + this.logger.SetPath(settings.GetValue("logging", "path")); + LoraController lora = new LoraController(settings.GetSection("lora")); + this.ModulLoader("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls", lora); + this.ModulInterconnect(); + this.ModulEvents(); + lora.DataUpdate += this.LoraDataUpdate; + lora.StatusUpdate += this.LoraStatusUpdate; + this.WaitForShutdown(); + Console.WriteLine("after wait"); + this.ModulDispose(); + Console.WriteLine("after dispose"); + lora.Dispose(); + Console.WriteLine("after loradisp"); + } else if(CmdArgs.Instance.HasArgumentType("-freq") && CmdArgs.Instance.HasArgumentType("-bw") && CmdArgs.Instance.HasArgumentType("-sp") && CmdArgs.Instance.HasArgumentType("-cr")) { + LoraController lora = new LoraController(new Dictionary() { + { "frequency", CmdArgs.Instance.GetArgumentData("-freq") }, + { "signalbandwith", CmdArgs.Instance.GetArgumentData("-bw") }, + { "spreadingfactor", CmdArgs.Instance.GetArgumentData("-sp") }, + { "codingrate", CmdArgs.Instance.GetArgumentData("-cr") } + }, false); + } else { + Helper.WriteError("Usage for Debug:\n" + CmdArgs.Instance.GetUsageList("Lora-Bot")); } - InIReader settings = InIReader.GetInstance("settings"); - this.logger.SetPath(settings.GetValue("logging", "path")); - LoraController lora = new LoraController(settings.GetSection("lora")); - this.ModulLoader("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls", lora); - this.ModulInterconnect(); - this.ModulEvents(); - lora.Update += this.LoraDataUpdate; - this.WaitForShutdown(); - Console.WriteLine("after wait"); - this.ModulDispose(); - Console.WriteLine("after dispose"); - lora.Dispose(); - Console.WriteLine("after loradisp"); } - private void LoraDataUpdate(Object sender, Iot.Lora.Events.DeviceUpdateEvent e) { - Console.WriteLine("-> Lora " + e.Parent.ToString()); + private void LoraStatusUpdate(Object sender, StatusUpdateEvent e) { + Console.WriteLine("-> Lora-Status: " + e.ToString()); + } + + private void LoraDataUpdate(Object sender, DataUpdateEvent e) { + Console.WriteLine("-> Lora-Data: " + e.ToString()); } } diff --git a/Lora-Bot/Properties/AssemblyInfo.cs b/Lora-Bot/Properties/AssemblyInfo.cs index 3a9a3eb..6684b2e 100644 --- a/Lora-Bot/Properties/AssemblyInfo.cs +++ b/Lora-Bot/Properties/AssemblyInfo.cs @@ -1,41 +1,46 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// Allgemeine Informationen über eine Assembly werden über die folgenden -// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, -// die einer Assembly zugeordnet sind. -[assembly: AssemblyTitle("LoraDisplay")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("LoraDisplay")] -[assembly: AssemblyCopyright("Copyright © 2018")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly -// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von -// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. -[assembly: ComVisible(false)] - -// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird -[assembly: Guid("fb11b997-af4d-427f-96fd-4c84143057cf")] - -// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: -// -// Hauptversion -// Nebenversion -// Buildnummer -// Revision -// -// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, -// übernehmen, indem Sie "*" eingeben: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.0")] -[assembly: AssemblyFileVersion("1.3.0")] -/* - * 1.1.0 Update Scral addresses - * 1.2.0 Run Module Events in threads so that one Module can not block others, TXTOut now appends to the logfile - * 1.3.0 Scral now get its config from configfile, lora now want to get battery as [0-9].[0-9]{2} value +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("LoraDisplay")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("LoraDisplay")] +[assembly: AssemblyCopyright("Copyright © 2018 - 10.10.2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("fb11b997-af4d-427f-96fd-4c84143057cf")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +// übernehmen, indem Sie "*" eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.6.0")] +[assembly: AssemblyFileVersion("1.6.0")] +/* + * 1.1.0 Update Scral addresses + * 1.2.0 Run Module Events in threads so that one Module can not block others, TXTOut now appends to the logfile + * 1.3.0 Scral now get its config from configfile, lora now want to get battery as [0-9].[0-9]{2} value + * 1.4.0 Adding Debugmode for finetuning Lora-Trackers + * 1.4.1 Remove old Wirelesscode and Rename some Classes + * 1.5.0 Send over Mqtt the new status items and refactoring + * 1.5.1 Dependencies in debian Packet cleaned + * 1.6.0 Implement Height in LoraBot */ diff --git a/Lora-Bot/bin/Release/Bot-Utils.dll b/Lora-Bot/bin/Release/Bot-Utils.dll index eb7fd4b26c2f231e199082037bda5e6bd8d5442f..aea097e35fd0dbedc29e8340e35d7be7004b8545 100644 GIT binary patch delta 5103 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 W!`s%nZCsIS$EkJv+-4TRKO6vY_8~L? delta 66 zcmZoLX)u}4!8~v8tc~4~d;&*z$Q@bnXRb@nsfiljoV8Oof8l$=2$G$ATR>9akg(3j Ww=WHRyB7a_qY<=b+GZBPKO6ul6(9rv diff --git a/Lora-Bot/bin/Release/Iot-Interfaces.dll b/Lora-Bot/bin/Release/Iot-Interfaces.dll index 54db89b0eee2de4db9d6340dd7dac20770409447..59664a09bf25345ed7b5b71d24f1ba0d05e1a661 100644 GIT binary patch delta 66 zcmZoLXfT-2!92h7`o`{q+yZtUs<|E;0v#44O(^ABwnu(*3=aAlb>;e3AmMyKhOd Vzb$fEe<#Yfchv-~%~SYtI03#j98>@R diff --git a/Lora-Bot/bin/Release/Lora-Bot.exe b/Lora-Bot/bin/Release/Lora-Bot.exe index 2331adcc8638b6a2fd949836ed02ae92189ecdfa..c8c0ffac105c37e949996d25c6b6c0bf81f649fd 100644 GIT binary patch delta 7086 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 delta 6012 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 IJ$3rO03?MP{r~^~ diff --git a/Lora-Bot/bin/Release/Lora.dll b/Lora-Bot/bin/Release/Lora.dll index c03e52661d4b96e5020f2e2771f0f9ffefd68e4b..c1ea11cc6a7b5e0329d1964074ec166ffd1dd304 100644 GIT binary patch literal 27648 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 literal 24064 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 diff --git a/Lora-Bot/bin/Release/M2Mqtt.dll b/Lora-Bot/bin/Release/M2Mqtt.dll index 3f67f8c206ecab1e178ec360da2ef888b5a8da4e..3dac2a8cb8a0f52867ed60a9674b49e0493f8076 100644 GIT binary patch delta 88 zcmZqZVQ%PQp3uQOzw`RW?w=b4dXv&k3=BcRF2T7E)}ETv9^*9aV&{l#ONp0wy4q pVPs&axDCX685n|sU4mP8I;UM+pXI#W=GM}49N&*_?%7+y0RT7nBjx}A diff --git a/Lora-Bot/bin/Release/Utils-IoT.dll b/Lora-Bot/bin/Release/Utils-IoT.dll index 2cd403e79335f3a4bfb7f6bb2df9cef06a98ace3..d3ceff19b5fee08dc7843e488cd6c6d92fa95062 100644 GIT binary patch delta 86 zcmZq3X~>z-!92h7`o?ZcErE`Q?w>EVnE5QXxOi{kx%YgVuV~F-)&a^!GXMb-5X&$! mFm(6;u^t0MP_Rqz^f1Hsud1D$8rQJ-?o+Q5**r%tg&hDEksy}< delta 86 zcmZq3X~>z-!8~v8tc~54S^{iVA3pjd2s+HW$no;?yM6mNU(uSwtOJydW&i>vAeLcd mVCe7xVm$_ipkSBakFjiy{Ez3mw&^=4tCgY`_fyuqA25}iagIy8*v&qIlracq8( zF;1FT^bR3Xa}lo(0@;e2eimW@n!d7j*)_ahHf!-zzc=;3u&8`)4a=_iZ?U~>y> z2A$Tx-H~$B=E*y4)~3Spa&GsQ;i92No{}&!4Gd>a5HovX!~;o3@AgajCaydnfsz4= zj?JOwDzQ-_vP@8N-!-k+L}bQhrB`GOvMh(E-ORO9EQw3BZflXby{Mcqep%QHD1Jp4 z4A}fO(_*0=ByKVM1oYg_-Utuk^6cTwpy$}a1~=0Sf-Wc%4n+>YBl&u)=@B^R?dGQF zjd3ta4L^q|cCihx(Zrs+!yVPHc6BGWPy?yco!i*|?9KqwANNgv{>dG!t2<}lj;6;M zU)gk~8-BG2?I<+`?R+&7$%4~fChJ%8^%V~C1&qLo!k`=uV2DLcG z&dj(_0lJmZ*x%XzzAB0ztU?eZaiVhlf+9(BEw+>z>I;rZ3H8H}?~g#fOxw{%?0hGN ze}s?1>rj6Pcu60CE>wg@__AssMo#RWV)T+ot(PR>Ur>`8u(g$(D9Q3uz*U?kn$RH3 ziK`5ipzESX=j#<4Ofp4px1eVkKicCWgTa^eyUG+x-C#HHJl+bu+fT#}&tA}qBSRq^8ivLx zsjKcmUyH)w6w4!rM(`mDq;nNQRx)$rdaXhVlFn=nJH$392vP|xsK70;OjI7{U%f|CXSK* z3qUJpn689MjW-=JabrQXRE+B!W*gr)x<@!Kdyo_tLb_E+AJ1XoDpXuW3f;#6uVo5t zL;4&@pWuWhfZ@yu!Tv;yTz0YCyvTHJ8#5*)E~;bB9qjNN9sob-kSQ1SHL9cZPN9Xj z30X3{22aAY-1TOqa+;OuEoa||aA@ESIQi2)$s*~dPeG}xEt9vh8xPqo*WM2cD`NmY zeUERME}_X?e1}^DOAfXzORt~^y@PK# z-H~J^Y0y8e-?(vmo?!pHRL`T#^~vF7JiTIWyiw?G&0?qv?wmX|Gy`&OEtsK+;~ZO% zsKv&GW`Y=Q;Zu4W|LaaF=h6Y(w><3u+dy7lQ1AI(2&g_a{3Imf^eVv6Tr|OaM`#}J zlYEL*F^wxx0b@Z_bPU%d>O-)!li3v2>n>hJ0-D2T_i3SOjG>>e{h$YMp(8BY^;mQH zK|B9b>KC#>#tct7OEK1X?oIg+9))Tlo9henu@*kZqv0pft%aX7E_sR|nHfDHi*w~p zt|+s?B&j}t#EGdlna1wuq#tk3gp|U9vc-$+b4D*N@6Bv2k%e%Reu!F%viC4 zdotrhamCXqoFHM3lw4Kgp@6nHd;*6GJS8}yE zlI&E}&=8|XV(+nhoBXSap^T?gQuQ)pYhpcK72c%DY>4r2Qc&Rx<8)F|+e=9wGfx(G z8+F?mbcM4dV_T12ky4Q2YY%V-Rr7K23dSyb=v8#)6D;%xF`Nv^&>y=}6?be@PMzl1 zi;G6Wxer%!Aya-~r+giT*uF1fVM0fRhR03HVOJ+_!!MrLuJB%n z-h9mWLH?R@UEvRIqhSpdkfLPcVoHU|yFhQ#4>ZQ2wc%wM2h}9ZP(hm0HX^gG?5bB(2 zc$W+-Jk4tONayf_&f$+@XpHNb7U`=X53-I8qK3y~+lcbtcI6B!1U$j*@s`*;-$9&8{D|uGmm8%De1{kJi&Nce~bypRz>V8m6C)+#-$bFrPL=eX5W)i^e1Xrsc?P~Prf2r>KLM?K zG7}|z7i9KiCWS8ix4(`K*u2!8)>_O1w$*APwF+dWG?_jX zs1YVqN~SLadP@77yg^0D!GoP^=?^W*RAZr?>JI8bhXiV*zbGouWsCQb;Pue)A&uxb zt5myzIRKF8Z$K)g&^-b@Mc+G`)D)U%q5gpcmP&3sPvc|h)DaBd{XU4GcEK1P=9*H zLf^Shssre>g?6FHNRci}!8Rb#)5$7-SWjYf*}Q z3iY;_-`iaFO6p@xw5eX8fhG@8Tv8vPNw-j}eOi~8X3zq`dmFBKX$C!Gp;lCanRLRO zr|t8n*k=)yn8ikG1Ds6*OH9A(f#%R+3pD{%(F+zj=gYRwrOzz%HPAeY$2TQB-d9<^ z{UI7>p?08$=`n%KB2`Vl5{Ms{0rqNo4hZqDqc?rssG3fj6X`>DiG4nuxJxLd$DAs@ zM;?r?V0iN1iQ?$9Qj_*E{?bkY>no?<&FOdndjy{sEhhslG|tE`s3y@kB=2wk`4ow8N3 zM@hX~IHP@xUXm6s4!vxY2k*%uZUl& zuR>nMr@_}fZ%`02?^8c&*1kY{D$ooHm*kr5Y(IMtbK8l_b4q|6W2L?X*3OiOvj@6S zwjS(^Ae~`3G3jg;J51T^0w(06>NFAdl|FBzCXao z1mx!!`$(ORuZ&M<$Jl79P~Jn!^EpxEbE3%4HE6pU&k`iA^cscO|FEed(y2UBWA|MN zku>RP;r&cUo-|r4PMXBk*9e!hq!W%3sa)#7E4D@~T9wGre)gR<+?6aNcTAvxkBOzu8^K^I^-ImdaF?VtWf=|(79FUqm%JX5I82=!?xly`Lc@5)Z+7bD@Sd5Dz6BmUm=S6nU3k|zjMc}Huo2~co zc9rKE+Va3Pxf~n9t+ZghV$hy)B`R0gE?pU_ev+PV`((uSm{E+nmE(?h2zS9knoEmlDGj1jqQ0rX z)l`dr)u28ES}pi(5I{N?(0%xRF0= zx?3T}uuQTCKStB6ojvWO@Ucg>GmniVj36TM#sfL#Z@6SkoZTnoikwOwNtKmU=FwCx zm+awV%prfnHDk~0Ul{+GUCg44K6A>|1dqqpm~1>c=QU3zq?ps5Dmk6L#w??}s)Q97 zE2~Cl6ywv66TEKzMn2T+vVSK3=OW49c$fL#xKy>8Wg3g;u0;Fo+|}%gv1DF%cBO68 zylavzzc8;L-`H4P%=#L~t0x9;{xw-by-i|7t?ThSpXj~`!zK**-N28cx8FZ%*Z1{T z`!D%yUE8qv8uMS=z-zPlbDfV7X1fkxuL#jXN7((c?Y%m7JtWD^6mc*a`5v= delta 7548 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 diff --git a/Lora-Bot/bin/Release/litjson.dll b/Lora-Bot/bin/Release/litjson.dll index 693061f3bacb4b16f044b4e67be29eb1abe93901..3ceb162a7f708c297f5ed65ac75616d550733351 100644 GIT binary patch delta 68 zcmZpez}zr_c|r&C{Lbqey9GB26v^ax&6{EEvB}}Y+Mp{hoi?x8*uVplovgo4Qouo8 YsiR{}y!X-ro_q)NT+VHd*tdcc02Ck|XaE2J delta 68 zcmZpez}zr_c|r&C+`Y3lb_;G4aDCN~8RvJ=v(;+vE)VC2iksJLY~TUOPS)QiDX>Uv YyZo(=2cCPwZ;Ia*V5{65v2O(@04n|;A^-pY diff --git a/Lora-Bot/dpkg/control b/Lora-Bot/dpkg/control index 701aac3..51c9246 100644 --- a/Lora-Bot/dpkg/control +++ b/Lora-Bot/dpkg/control @@ -3,7 +3,7 @@ Version: x.x-x Section: base Priority: optional Architecture: any -Depends: mono-complete (>= 5.4.1.6) +Depends: mono-runtime (>= 5.16.0) Maintainer: BlubbFish Description: Lora-Bot Lora-Bot is a Lora gateway