From 64cbe250bc0432b7ea6129779e8c1e59a50766df Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Thu, 13 Sep 2018 22:02:07 +0000 Subject: [PATCH] Lora-Bot 1.3.0 Scral now get its config from configfile, make the GW more stable Lora 1.1.0 Now awaiing Battery as Double and fix the sending twise issue --- Lora-Bot/Lora-Bot.csproj | 3 - Lora-Bot/Moduls/Mqtt.cs | 10 +-- Lora-Bot/Moduls/Scral.cs | 67 ++++++++++++++---- Lora-Bot/Moduls/Txtout.cs | 67 +++++++++--------- Lora-Bot/Program.cs | 2 +- Lora-Bot/Properties/AssemblyInfo.cs | 7 +- Lora-Bot/bin/Release/Bot-Utils.dll | Bin 21504 -> 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 16384 -> 18944 bytes Lora-Bot/bin/Release/Lora.dll | Bin 24064 -> 24064 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 -> 29184 bytes .../Release/config-example/mqtt.conf.example | 2 +- .../Release/config-example/scral.conf.example | 15 ++-- .../config-example/settings.conf.example | 4 +- .../config-example/txtout.conf.example | 4 +- Lora-Bot/bin/Release/litjson.dll | Bin 51200 -> 51200 bytes Lora-Bot/bin/Release/lora.sh | 5 -- Lora-Bot/config-example/mqtt.conf.example | 2 +- Lora-Bot/config-example/scral.conf.example | 13 +++- Lora-Bot/config-example/settings.conf.example | 4 +- Lora-Bot/config-example/txtout.conf.example | 4 +- Lora-Bot/lora.sh | 5 -- 25 files changed, 130 insertions(+), 84 deletions(-) delete mode 100644 Lora-Bot/bin/Release/lora.sh delete mode 100644 Lora-Bot/lora.sh diff --git a/Lora-Bot/Lora-Bot.csproj b/Lora-Bot/Lora-Bot.csproj index 1575b1b..7221bfe 100644 --- a/Lora-Bot/Lora-Bot.csproj +++ b/Lora-Bot/Lora-Bot.csproj @@ -111,9 +111,6 @@ PreserveNewest - - PreserveNewest - \ No newline at end of file diff --git a/Lora-Bot/Moduls/Mqtt.cs b/Lora-Bot/Moduls/Mqtt.cs index aa2883e..35ca207 100644 --- a/Lora-Bot/Moduls/Mqtt.cs +++ b/Lora-Bot/Moduls/Mqtt.cs @@ -18,7 +18,7 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { protected override void Connect() { this.mqtt = ABackend.GetInstance(this.config["settings"], ABackend.BackendType.Data); - Console.WriteLine("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Mqtt.Connect()"); + Console.WriteLine("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Mqtt.Connect"); this.mqttconnect = true; } @@ -28,7 +28,7 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { this.mqtt.Dispose(); } this.mqtt = null; - Console.WriteLine("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Mqtt.Disconnect()"); + Console.WriteLine("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Mqtt.Disconnect"); } public override void EventLibSetter() { @@ -46,14 +46,14 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { topic = "lora/" + sensor.MqttTopic(); data = sensor.ToJson(); } - Console.WriteLine(topic); - Console.WriteLine(data); if (topic != "" && data != "") { ((ADataBackend)this.mqtt).Send(topic, data); this.Update?.Invoke(this, new MqttEvent(topic, data)); } } - } catch { } + } catch (Exception e) { + Helper.WriteError("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Mqtt.LibUpadteThread: " + e.Message); + } } } } diff --git a/Lora-Bot/Moduls/Scral.cs b/Lora-Bot/Moduls/Scral.cs index 7c8fbbc..c61e69d 100644 --- a/Lora-Bot/Moduls/Scral.cs +++ b/Lora-Bot/Moduls/Scral.cs @@ -16,8 +16,32 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { private readonly List nodes = new List(); public override event ModulEvent Update; private readonly Object getLock = new Object(); - private readonly String server = "https://portal.monica-cloud.eu/"; - public Scral(LoraController lib, InIReader settings) : base(lib, settings) { } + public Scral(LoraController lib, InIReader settings) : base(lib, settings) { + if(!this.config.ContainsKey("general")) { + throw new ArgumentException("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral: Config section [general] not exist"); + } + if(!this.config["general"].ContainsKey("server")) { + throw new ArgumentException("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral: In config section [general] value server not exist"); + } + if (!this.config.ContainsKey("update")) { + throw new ArgumentException("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral: Config section [update] not exist"); + } + if (!this.config["update"].ContainsKey("addr")) { + throw new ArgumentException("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral: In config section [update] value addr not exist"); + } + if (!this.config["update"].ContainsKey("method")) { + throw new ArgumentException("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral: In config section [update] value method not exist"); + } + if (!this.config.ContainsKey("register")) { + throw new ArgumentException("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral: Config section [register] not exist"); + } + if (!this.config["register"].ContainsKey("addr")) { + throw new ArgumentException("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral: In config section [register] value addr not exist"); + } + if (!this.config["register"].ContainsKey("method")) { + throw new ArgumentException("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral: In config section [register] value method not exist"); + } + } public override void EventLibSetter() { this.library.Update += this.HandleLibUpdate; @@ -28,11 +52,13 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { DeviceUpdateEvent e = state as DeviceUpdateEvent; LoraClient l = (LoraClient)e.Parent; if (!this.nodes.Contains(l.Name)) { - this.Register(l); + this.SendRegister(l); this.nodes.Add(l.Name); } this.SendUpdate(l); - } catch { } + } catch (Exception e) { + Helper.WriteError("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral.LibUpadteThread: " + e.Message); + } } private void SendUpdate(LoraClient l) { @@ -47,14 +73,20 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { { "herr", l.Gps.Hdop }, { "battery_level", l.Snr } }; - if(this.RequestString("scral/puetz/dexels/wearable/localization", JsonMapper.ToJson(d), false, RequestMethod.PUT) == null) { - this.Register(l); + try { + String addr = this.config["update"]["addr"]; + if (Enum.TryParse(this.config["update"]["method"], true, out RequestMethod meth)) { + this.RequestString(addr, JsonMapper.ToJson(d), false, meth); + this.Update?.Invoke(this, new BlubbFish.Utils.IoT.Bots.Events.ModulEventArgs(addr, meth.ToString(), JsonMapper.ToJson(d), "SCRAL")); + } + } catch (Exception e) { + Helper.WriteError("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral.SendUpdate: " + e.Message); + this.SendRegister(l); } - this.Update?.Invoke(this, new BlubbFish.Utils.IoT.Bots.Events.ModulEventArgs("scral/puetz/dexels/wearable/localization", "PUT", JsonMapper.ToJson(d), "SCRAL")); } } - private void Register(LoraClient l) { + private void SendRegister(LoraClient l) { Dictionary d = new Dictionary { { "device", "wearable" }, { "sensor", "tag" }, @@ -65,8 +97,15 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { { "observationType", "propietary" }, { "state", "active" } }; - this.RequestString("scral/puetz/dexels/wearable", JsonMapper.ToJson(d), false, RequestMethod.POST); - this.Update?.Invoke(this, new BlubbFish.Utils.IoT.Bots.Events.ModulEventArgs("scral/puetz/dexels/wearable", "POST", JsonMapper.ToJson(d), "SCRAL")); + try { + String addr = this.config["register"]["addr"]; + if (Enum.TryParse(this.config["register"]["method"], true, out RequestMethod meth)) { + this.RequestString(addr, JsonMapper.ToJson(d), false, meth); + this.Update?.Invoke(this, new BlubbFish.Utils.IoT.Bots.Events.ModulEventArgs(addr, meth.ToString(), JsonMapper.ToJson(d), "SCRAL")); + } + } catch (Exception e) { + Helper.WriteError("Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls.Scral.SendRegister: " + e.Message); + } } public override void Dispose() { } @@ -77,8 +116,8 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { private String RequestString(String address, String json = "", Boolean withoutput = true, RequestMethod method = RequestMethod.GET) { String ret = null; lock (this.getLock) { - HttpWebRequest request = WebRequest.CreateHttp(this.server + address); - request.Timeout = 5000; + HttpWebRequest request = WebRequest.CreateHttp(this.config["general"]["server"] + address); + request.Timeout = 2000; if (method == RequestMethod.POST || method == RequestMethod.PUT) { Byte[] requestdata = Encoding.ASCII.GetBytes(json); request.ContentLength = requestdata.Length; @@ -100,9 +139,7 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { } } } catch (Exception e) { - Helper.WriteError("Konnte keine Verbindung zum Razzbery Server herstellen. Resource: \"" + this.server + address + "\" Fehler: " + e.Message); - return null; - //throw new Exceptions.ConnectionException("Konnte keine Verbindung zum Razzbery Server herstellen: " + e.Message); + throw new WebException("Error while uploading to Scal. Resource: \"" + this.config["general"]["server"] + address + "\" Method: " + method + " Data: " + json + " Fehler: " + e.Message); } } return ret; diff --git a/Lora-Bot/Moduls/Txtout.cs b/Lora-Bot/Moduls/Txtout.cs index ee8490d..d412182 100644 --- a/Lora-Bot/Moduls/Txtout.cs +++ b/Lora-Bot/Moduls/Txtout.cs @@ -1,26 +1,29 @@ -using System; -using System.IO; -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.Events; - -namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { - public class Txtout : AModul { - public override event ModulEvent Update; - - private readonly String filename; - private readonly StreamWriter file; - - public Txtout(LoraController lib, InIReader settings) : base(lib, settings) { - if (this.config.ContainsKey("general") && this.config["general"].ContainsKey("path")) { - this.filename = this.config["general"]["path"]; - this.file = new StreamWriter(this.filename, true); - } - } - +using System; +using System.IO; +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.Events; + +namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { + public class Txtout : AModul { + public override event ModulEvent Update; + + private readonly String filename; + private readonly StreamWriter file; + + public Txtout(LoraController lib, InIReader settings) : base(lib, settings) { + if (this.config.ContainsKey("general") && this.config["general"].ContainsKey("path")) { + this.filename = this.config["general"]["path"]; + this.file = new StreamWriter(this.filename, true); + } else { + throw new ArgumentException("Setting section [general] is missing or its value path"); + } + + } + public override void EventLibSetter() { this.library.Update += this.HandleLibUpdate; } @@ -35,13 +38,13 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot.Moduls { this.Update?.Invoke(this, new ModulEventArgs(this.filename, "Line", s, "TXTOUT")); } } catch { } - } - - public override void Dispose() { - this.file.Flush(); - this.file.Close(); - } - - protected override void UpdateConfig() {} - } + } + + public override void Dispose() { + this.file.Flush(); + this.file.Close(); + } + + protected override void UpdateConfig() {} + } } \ No newline at end of file diff --git a/Lora-Bot/Program.cs b/Lora-Bot/Program.cs index 64724c8..14f34b0 100644 --- a/Lora-Bot/Program.cs +++ b/Lora-Bot/Program.cs @@ -29,7 +29,7 @@ namespace Fraunhofer.Fit.IoT.Bots.LoraBot { } private void LoraDataUpdate(Object sender, Iot.Lora.Events.DeviceUpdateEvent e) { - Console.WriteLine("-> Lora [" + e.UpdateTime + "]: " + e.Parent.ToString()); + Console.WriteLine("-> Lora " + e.Parent.ToString()); } } diff --git a/Lora-Bot/Properties/AssemblyInfo.cs b/Lora-Bot/Properties/AssemblyInfo.cs index 61d396e..3a9a3eb 100644 --- a/Lora-Bot/Properties/AssemblyInfo.cs +++ b/Lora-Bot/Properties/AssemblyInfo.cs @@ -32,9 +32,10 @@ using System.Runtime.InteropServices; // 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.2.0")] -[assembly: AssemblyFileVersion("1.2.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 - */ \ No newline at end of file + * 1.3.0 Scral now get its config from configfile, lora now want to get battery as [0-9].[0-9]{2} value + */ diff --git a/Lora-Bot/bin/Release/Bot-Utils.dll b/Lora-Bot/bin/Release/Bot-Utils.dll index caf4664148f6f54e96a9806fd6edc7287497adbe..eb7fd4b26c2f231e199082037bda5e6bd8d5442f 100644 GIT binary patch literal 23040 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 V{`-8g>UX)Txv>A|^Z#80{sZ%G(p3Ne delta 9933 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 JQXBjG{s)aDMf(5% diff --git a/Lora-Bot/bin/Release/ConnectorDataMqtt.dll b/Lora-Bot/bin/Release/ConnectorDataMqtt.dll index 03c5d80cd934edf915392f39a4cbc061cd027f8f..cceb8e32b0602471ec1a68b18ccad22930a484bf 100644 GIT binary patch delta 66 zcmZoLX)u}4!8~v8tc~4~d;&*z$Q@bnXRb@nsfiljoV8Oof8l$=2$G$ATR>9akg(3j Ww=WHRyB7a_qY<=b+GZBPKO6ul6(9rv delta 66 zcmZoLX)u}4!Q8!n`o``^J^}W#uUAxg^Ec1tbOH8sBPb VyR>*MlAlb>;e3AmMyKhOd Vzb$fEe<#Yfchv-~%~SYtI03#j98>@R delta 66 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 E1DtK&DF6Tf delta 5439 zcmbVQdvF!i8UN1N-LrRZlAHU0yhCn60+&32L?nnv`egutKB>MJKy7c z-}%08_k6p1<2zYA&US1oxa-(`%PDdEnF=V0jU_6EV3;f1SKGUPv2S55(bZDWNc0bX zZ+<8_PLvEjXBJK;pO-pI*=X;92t;9=#m=3qgq1qavC(XbbCwl^x50xvEB+H(JA=y;ndlZ_=W#lqxJkc}%0G@4Bo>LR#BNYsw9P*o{q~Q zv!?*gYNO7o+kyEJGLC}>Nt4&dX*4D~4{Bbg&5$LoF>+%2c}D;yn~i&}40$hzGLvhGVxhXYrhHVfJ1^QWG&#B)WCwP%dzEG7WToE5 zC@YnyOfx1$y8wxNwn~22dH&+c#fqZ;Tj?H>?p{9c?xf_uJkOgt_z*xXk7V;fCz4H9 zxsKvJ=W`sR^wFh5lYW?_K$>zhPIhWgt@%iv_sF|aQ+p^<4?&6*-iEu|UI5ysre!ZPx+yo&J5cUdi;a=RGm06K%K}WYpf7cCC9VK-^ zZ3Nk|3Sh4WNY4VEh3oiiZOF{NdlcNFlfDce=%jACXrfwQQ7kh$$B@#jfN8IReP5&r z7)b{V3wh2adrE~FSqtv8C=PgvYoJAspj&XtR zJO(>SqMxruD)#l5T{`bV$yi9DKb5_{S?b0QwtqGKyz&MpH+irs^m0h=z%t%V7D%}> zvavH}B2vWVyRchzWjo_ihR13!7sZW6RXH<+eIo?PL4Lkf^c7_$v{}OKK|`IQuP8gA z%1NlMg0*TQeMPy^o0QKHKeo!VqKB0(FXsKRVO~ z6E=!m?>y*>Tuz`z-bU1l@jXd5bVgg+nmgp>osLcTHagMBMGcgJN1nXnM$TGPHyvXH z{5FTBjvkK66Sg0v;KY-IprG~6<*6kxTrC{e>Fy}#m)bH@P?0Y2GyX@BO5KQF&@gSI zA?N{x8xA?Y_I^)e%^)vF(hn{ShjQ}m^3~My9Xrc9%M^LRX zg|cWem-IbGBf@G{xKK>N%+EcIhC>$ehflrH@Y0o{+Y_V_;+PqmMcc5+pny9;{aoU4 zis>WhG#wVtQ-;#+Go}1erM(|BN6^R6dMV$UhtT($^N`swLk8z4Khv;G0o92|VD*-W z=~;A*3Ur6Q8*yw^p-)A)SuvW#WYnuvq#q*>L0K?>E;!BQE^KY_bT<^ez2%L zp?ivUaEqpolr!BWytFaF$t9BLpyJ#WlIcP(K8l@I%2!Cb@zL}`>1H!M#&_{lYAtfP zsMy8*GzX6eEJ16ypg@9qh1Thko3C`6>4^RS572j`)l8M|aH@*9oD3$7S{3I8lTJ%w z7vz*lA1S39OeQUqEj6)V)!pOzZ9>1T{e#7tA=x)pJ*YVBsV;2{Cu&7@!)T1AlC==+VF+e|!Q&_FAMq!=8 z`j{G)DqIB|PA!Vwpzv0O$AJQmN{OWjJWA6jpPkj~XdH7q^Kl!#sV@euu~t$wdrUNe z&SNdGDit>9TD_BM*k`&Q^ai6FJEC9Q4sGmv;~or8;s#5mHeem=7dxR|$M1*aY3$#6 zCU_I*>u}w-tE<14K4E)lFP-!3qdhdB?^i+e(^BT=CukLGXYYVsqMyL0VZZnr71AyG z*HlGIjAYir@>qxsqb{oe^qLr)7Sc=BXjVuLFJXJAkWXft*#UMXt7btqo1MT5#C|$K zyA8R_@2o|vm%U5N*&YPCoaIoQt%8-TO`%%s6ur*&qfTj_Hg<~gJTdkpJ78^LlhvHb zbd+|mPw8=MH*i3YJp}a<)(5Nuo+4rF1N~b=(!HXO9cNgW?ZskGvlFaUyv9zlH;t3P zZi~?=Rz>f!Q|w;z3?%>5{{s994e2B+#f~}2rWk)^=jbT^oPEILzB$R}@NXEy7w@;M zp6wAV#?PU=ezLHDpFU-!Fkrl2nB3xjK;9N>LN@Xmr|=W(j3>ma=&;qsrYBIAG!wRY z{1knIi*kxmk-$0j8n)#*b`6&FpcWIjhsM%nz$%)GZCL(ifwDBig*J#Wm3LC#ew{2YDdhn^apKc$cMJ%L6c zADlWZr4MN!BjfK(Th!j<{5$iufz4SXHRpxgkDR?DGW3qM(VGUI8?jZ-4VB@=HcWHK zrYNlfwH%+-*U}_Vw9YwRIL~=_WQK^KXV8WO>vjBv!y1%`QBrHd68}tGaRYVY*N#$8 zq6+-lm97(hTdADZgKI-CSp&WdC@s6F37WMSEAUlbS+cRIz5^;5N~?0v1!X67gKh$K z3(i)!ub`Vjty1$=L$VeU=}x+C#S+~ZJ2A=y$(&D%2%kSm4QNmcsD|b^Wu-@^Ui$wn zMAm%#nbbfFot0&)WAUxC)godMFC{xqO`_IDNoIt3CRs=M%2A-sm+kc7*rXZ zqvcKhic9L>=t)^N_ufZ#F8fL5a|fKNimACR%x8od3*nAozCe7JLEPu_d5E#$!4{{t zq9A#L6j+!uJh;I*R*@Fc!xZS!!jyy4XTU5s$2n6mZ3ZS{3T7v%!KFnQZ8d~`Pk z>xu&L7jywm6CpCgoaF@LM?IzhsbMkWt9`?GQt#$zk@}& za7EHML?MO^73k8#%;$qL1*d`6FJF!s)**sZ)AHr;;H|kva8oe8IT+vK6NF{`c{gw}*{)HjZCXI{0@b$1crbL=$J>#LimKFufsv<*=Pi zN9yXfCSAYtkn`2SLzNyD+*m6&w0rzq(&66xG`_8NV0_gM=J+NYvef^NQ1F2h6J{|s iejqS$IRua diff --git a/Lora-Bot/bin/Release/Lora.dll b/Lora-Bot/bin/Release/Lora.dll index 4ed71a78c4bc68ce04f75f705cfc1f8793fc877a..c03e52661d4b96e5020f2e2771f0f9ffefd68e4b 100644 GIT binary patch delta 9092 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 diff --git a/Lora-Bot/bin/Release/M2Mqtt.dll b/Lora-Bot/bin/Release/M2Mqtt.dll index d1a6c32bd22387b24114de66eb96c3140f6ba301..3f67f8c206ecab1e178ec360da2ef888b5a8da4e 100644 GIT binary patch delta 88 zcmZqZVQ%PQp3uQOZ||&)-9I-9$W9Si!mzr`ap?=c9_Fl~Pn)M~I>V&{l#ONp0wy4q pVPs&axDCX685n|sU4mP8I;UM+pXI#W=GM}49N&*_?%7+y0RT7nBjx}A delta 88 zcmZqZVQ%PQp3uSEwSW4??w=b4Bx^L+O{w5^Uei$~b|UB!!{#ZQ&T#1fWuqB@fC-3Y o7#SEUZUgaN28N(um*9E(e+ey5HuCSxW?UAfv!`!!&)yOa0RDp^asU7T diff --git a/Lora-Bot/bin/Release/Utils-IoT.dll b/Lora-Bot/bin/Release/Utils-IoT.dll index 454c6c66995e607fd1428d8ab5ce91e441ff17ff..2cd403e79335f3a4bfb7f6bb2df9cef06a98ace3 100644 GIT binary patch delta 86 zcmZq3X~>z-!8~v8tc~54S^{iVA3pjd2s+HW$no;?yM6mNU(uSwtOJydW&i>vAeLcd mVCe7xVm$_ipkSBakFjiy{Ez3mw&z-!Q8!n`o?ZcErG>xY@c}89=I&t=oob`Q}E~JD_V1yb%3(b3_!pH#4?Nw m3>`i|tjE9*6zmdws%DAEy1##X)}3)~zh86Ta`PO$6m|fn(;*-L diff --git a/Lora-Bot/bin/Release/Utils.dll b/Lora-Bot/bin/Release/Utils.dll index 39a51a9472f0cc1a6a11b9a797929fd036cad80b..f8b51d324ec095753c67561383fe8d786ff42bbb 100644 GIT binary patch delta 68 zcmZp8!r1VHaY6_4+`Y3lc27+Z5IS@^cl|PT@1=rXhhkk9+ix~Ve8B;doh+RtDKN*u Y%d$#A+-c*f>s~${vvfDRWbI)G02+H84FCWD delta 68 zcmZp8!r1VHaY6@k*Z%1nyQd}yoSp0*I*;{;_sU}3Pv^gzHE%XZe8B;doh+RtDZn-H Ys8mDEWw!=Ki;mv?@h3LBWbI)G08temE&u=k diff --git a/Lora-Bot/bin/Release/config-example/mqtt.conf.example b/Lora-Bot/bin/Release/config-example/mqtt.conf.example index 5477ead..7fdb045 100644 --- a/Lora-Bot/bin/Release/config-example/mqtt.conf.example +++ b/Lora-Bot/bin/Release/config-example/mqtt.conf.example @@ -1,4 +1,4 @@ -[modul] +[modul] config=private [settings] diff --git a/Lora-Bot/bin/Release/config-example/scral.conf.example b/Lora-Bot/bin/Release/config-example/scral.conf.example index 5477ead..63d4d9c 100644 --- a/Lora-Bot/bin/Release/config-example/scral.conf.example +++ b/Lora-Bot/bin/Release/config-example/scral.conf.example @@ -1,6 +1,13 @@ -[modul] +[modul] config=private -[settings] -type=mqtt -server=localhost +[general] +server=https://portal.monica-cloud.eu/ + +[update] +addr=scral/puetz/dexels/wearable/localization +method=put + +[register] +addr=scral/puetz/dexels/wearable +method=post diff --git a/Lora-Bot/bin/Release/config-example/settings.conf.example b/Lora-Bot/bin/Release/config-example/settings.conf.example index 9ee7bb3..e90da3f 100644 --- a/Lora-Bot/bin/Release/config-example/settings.conf.example +++ b/Lora-Bot/bin/Release/config-example/settings.conf.example @@ -1,8 +1,8 @@ -[logging] +[logging] path=/var/log/lorabot.log [lora] frequency=868100000 spreadingfactor=8 signalbandwith=125000 -codingrate=6 \ No newline at end of file +codingrate=6 diff --git a/Lora-Bot/bin/Release/config-example/txtout.conf.example b/Lora-Bot/bin/Release/config-example/txtout.conf.example index 5a41aad..89df7bf 100644 --- a/Lora-Bot/bin/Release/config-example/txtout.conf.example +++ b/Lora-Bot/bin/Release/config-example/txtout.conf.example @@ -1,2 +1,2 @@ -[general] -path=/home/pi/coords.txt \ No newline at end of file +[general] +path=/home/pi/coords.txt diff --git a/Lora-Bot/bin/Release/litjson.dll b/Lora-Bot/bin/Release/litjson.dll index 6fbbc7678bd8bd3787afdc5b23c5fbccfb3741a8..693061f3bacb4b16f044b4e67be29eb1abe93901 100644 GIT binary patch delta 68 zcmZpez}zr_c|r&C+`Y3lb_;G4aDCN~8RvJ=v(;+vE)VC2iksJLY~TUOPS)QiDX>Uv YyZo(=2cCPwZ;Ia*V5{65v2O(@04n|;A^-pY delta 68 zcmZpez}zr_c|r$s*Z%1ny9GB2WLtzieKCEm`$_@JO^33+Y~Q?QV*?LJcC!9HNdXs` Yqs#5`WZhQ8{62Irb$;RIhs5U;qFB diff --git a/Lora-Bot/bin/Release/lora.sh b/Lora-Bot/bin/Release/lora.sh deleted file mode 100644 index 394f67e..0000000 --- a/Lora-Bot/bin/Release/lora.sh +++ /dev/null @@ -1,5 +0,0 @@ -for(( ; ; )) -do - sudo mono --debug Lora-Bot.exe -done - \ No newline at end of file diff --git a/Lora-Bot/config-example/mqtt.conf.example b/Lora-Bot/config-example/mqtt.conf.example index 5477ead..7fdb045 100644 --- a/Lora-Bot/config-example/mqtt.conf.example +++ b/Lora-Bot/config-example/mqtt.conf.example @@ -1,4 +1,4 @@ -[modul] +[modul] config=private [settings] diff --git a/Lora-Bot/config-example/scral.conf.example b/Lora-Bot/config-example/scral.conf.example index 358a3ae..63d4d9c 100644 --- a/Lora-Bot/config-example/scral.conf.example +++ b/Lora-Bot/config-example/scral.conf.example @@ -1,2 +1,13 @@ -[modul] +[modul] config=private + +[general] +server=https://portal.monica-cloud.eu/ + +[update] +addr=scral/puetz/dexels/wearable/localization +method=put + +[register] +addr=scral/puetz/dexels/wearable +method=post diff --git a/Lora-Bot/config-example/settings.conf.example b/Lora-Bot/config-example/settings.conf.example index 9ee7bb3..e90da3f 100644 --- a/Lora-Bot/config-example/settings.conf.example +++ b/Lora-Bot/config-example/settings.conf.example @@ -1,8 +1,8 @@ -[logging] +[logging] path=/var/log/lorabot.log [lora] frequency=868100000 spreadingfactor=8 signalbandwith=125000 -codingrate=6 \ No newline at end of file +codingrate=6 diff --git a/Lora-Bot/config-example/txtout.conf.example b/Lora-Bot/config-example/txtout.conf.example index 5a41aad..89df7bf 100644 --- a/Lora-Bot/config-example/txtout.conf.example +++ b/Lora-Bot/config-example/txtout.conf.example @@ -1,2 +1,2 @@ -[general] -path=/home/pi/coords.txt \ No newline at end of file +[general] +path=/home/pi/coords.txt diff --git a/Lora-Bot/lora.sh b/Lora-Bot/lora.sh deleted file mode 100644 index 394f67e..0000000 --- a/Lora-Bot/lora.sh +++ /dev/null @@ -1,5 +0,0 @@ -for(( ; ; )) -do - sudo mono --debug Lora-Bot.exe -done - \ No newline at end of file