From 9c7d7928e96cee04d634ce311c4f039de4040cb2 Mon Sep 17 00:00:00 2001 From: Michal Date: Sat, 17 Aug 2024 04:00:06 +0100 Subject: [PATCH] . --- EdenicExporter/Program.cs | 131 ++++++++++++++++-- .../bin/Debug/net8.0/DotNet.Docker.dll | Bin 10240 -> 16896 bytes .../bin/Debug/net8.0/DotNet.Docker.pdb | Bin 21100 -> 22260 bytes .../net8.0/DotNet.Docker.AssemblyInfo.cs | 2 +- .../DotNet.Docker.AssemblyInfoInputs.cache | 2 +- .../obj/Debug/net8.0/DotNet.Docker.dll | Bin 10240 -> 16896 bytes .../obj/Debug/net8.0/DotNet.Docker.pdb | Bin 21100 -> 22260 bytes .../obj/Debug/net8.0/ref/DotNet.Docker.dll | Bin 7168 -> 8192 bytes .../obj/Debug/net8.0/refint/DotNet.Docker.dll | Bin 7168 -> 8192 bytes 9 files changed, 123 insertions(+), 12 deletions(-) diff --git a/EdenicExporter/Program.cs b/EdenicExporter/Program.cs index 3c36670..3a84a6d 100644 --- a/EdenicExporter/Program.cs +++ b/EdenicExporter/Program.cs @@ -6,9 +6,74 @@ using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Prometheus; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Text.Json; +using System.Linq; namespace PrometheusExporterEdenic { + public class ApiClient + { + private readonly HttpClient _client; + private readonly string _authToken; + + public ApiClient(string authToken) + { + _client = new HttpClient(); + _authToken = authToken; + _client.DefaultRequestHeaders.Authorization = + new AuthenticationHeaderValue(_authToken); + } + + public async Task MakeApiRequest(string url, string jsonPath) + { + try + { + HttpResponseMessage response = await _client.GetAsync(url); + + if (response.IsSuccessStatusCode) + { + string content = await response.Content.ReadAsStringAsync(); + using JsonDocument doc = JsonDocument.Parse(content); + JsonElement root = doc.RootElement; + + // Navigate the JSON path + string[] pathSegments = jsonPath.Split('.'); + JsonElement current = root; + foreach (var segment in pathSegments) + { + if (current.TryGetProperty(segment, out JsonElement next)) + { + current = next; + } + else + { + throw new JsonException($"JSON path '{jsonPath}' not found in the response."); + } + } + + // Convert the JsonElement to the desired type + return JsonSerializer.Deserialize(current.GetRawText()); + } + else + { + throw new HttpRequestException($"Error: {response.StatusCode}"); + } + } + catch (HttpRequestException e) + { + Console.WriteLine($"Request exception: {e.Message}"); + throw; + } + catch (JsonException e) + { + Console.WriteLine($"JSON parsing exception: {e.Message}"); + throw; + } + } + } + public class Program { public static void Main(string[] args) @@ -36,11 +101,7 @@ namespace PrometheusExporterEdenic { app.UseDeveloperExceptionPage(); } - - string EDENIC_ORGID = Environment.GetEnvironmentVariable("EDENIC_ORGID") ?? "9ffb9b70-461c-11ef-92e1-85f1b2168e5a"; - string EDENIC_API = Environment.GetEnvironmentVariable("EDENIC_API") ?? "ed_tjf14py97vz1cf4ugxljiiqwckxkhzim0coqogqmk1x99rfjlgi1q2vxesav4z55"; - - // Enable prometheus metrics + app.UseMetricServer(); app.UseHttpMetrics(); @@ -54,18 +115,68 @@ namespace PrometheusExporterEdenic }); }); - // Define custom metrics var ph = Metrics.CreateGauge("edenic_ph", "Edenic ph"); var temperature = Metrics.CreateGauge("edenic_temperature", "Edenic temperature"); var ec = Metrics.CreateGauge("edenic_ec", "Edenic EC"); + Task.Run(async () => { + string orgID = Environment.GetEnvironmentVariable("EDENIC_ORGID") ?? "9ffb9b70-461c-11ef-92e1-85f1b2168e5a"; + string authToken = Environment.GetEnvironmentVariable("EDENIC_API") ?? "ed_tjf14py97vz1cf4ugxljiiqwckxkhzim0coqogqmk1x99rfjlgi1q2vxesav4z55"; + string DeviceName = Environment.GetEnvironmentVariable("EDENIC_API") ?? "The First One"; + + var client = new ApiClient(authToken); + while (true) { - ph.Set(1); - temperature.Set(1); - ec.Set(1); - await Task.Delay(1000); + try + { + // Get devices + var devices = await client.MakeApiRequest($"https://api.edenic.io/api/v1/device/{orgID}", ""); + var targetDevice = devices.EnumerateArray() + .FirstOrDefault(d => d.GetProperty("label").GetString() == DeviceName); + + if (targetDevice.ValueKind != JsonValueKind.Undefined) + { + string deviceId = targetDevice.GetProperty("id").GetString(); + + // Get telemetry + var telemetry = await client.MakeApiRequest($"https://api.edenic.io/api/v1/telemetry/{deviceId}", ""); + + if (telemetry.TryGetProperty("temperature", out var tempArray) && tempArray.GetArrayLength() > 0) + { + var tempValue = tempArray[0].GetProperty("value").GetString(); + if (double.TryParse(tempValue, out double tempDouble)) + { + temperature.Set(tempDouble); + } + } + + if (telemetry.TryGetProperty("electrical_conductivity", out var ecArray) && ecArray.GetArrayLength() > 0) + { + var ecValue = ecArray[0].GetProperty("value").GetString(); + if (double.TryParse(ecValue, out double ecDouble)) + { + ec.Set(ecDouble); + } + } + + if (telemetry.TryGetProperty("ph", out var phArray) && phArray.GetArrayLength() > 0) + { + var phValue = phArray[0].GetProperty("value").GetString(); + if (double.TryParse(phValue, out double phDouble)) + { + ph.Set(phDouble); + } + } + } + } + catch (Exception ex) + { + Console.WriteLine($"Error updating metrics: {ex.Message}"); + } + + await Task.Delay(15000); // Wait for 15 seconds before the next update } }); } diff --git a/EdenicExporter/bin/Debug/net8.0/DotNet.Docker.dll b/EdenicExporter/bin/Debug/net8.0/DotNet.Docker.dll index eb1b2d9c4fdc233c9002fb9de488e7459ac22af1..7f2cca43a3824802f1c2981edde81dbcabc49300 100644 GIT binary patch literal 16896 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 o?e8%#VS&&tgWmiz`$hBI= zImu=qb*-Eth&E*8gDzXj&GHDA8cMZAQ2tP+f%a+TwoIc?&W1-$6ZYvuY%&pag-44- zfVj{Y#lnh5x)34alVM6A8Ao4K9vK$WpUg-dQhHuUFB6$qQyOE>RDO-m7opK7%_tK= zXUg+NVZr0bU7Zn@qbNu!%a?egsX{ICn^8YOw#Zd1G=ZH?G%}HYnpmU)@yp_-P#K0? zE2CPWm2$7h9ZiRg#*M|$jBBvr$~ekaxosQ^sXS{OyP@(uLZy?~!O8?1rf6u zF|n{anlURT3KcO;tRtdfw-8MT5e>$OCYY~9L!d>~Hu^1QqYpaMx3(i zYs5jD(U{W7^B!7mG{FCQT@opvNp3OCQxcoRbj3h|Xwn*GOlZ&~G0kd{aGP!tEl6u# z_tjTlC0Zo|$~f+Y)4dXXnQqI4OX!M~HNSF240V)D5WR)jz*#HliA6$#+oPi56dm^y zPJc;n4`t$LiJq3M?OlHZ=2Gx?*sO{93ru*?|5zO*FP;|RiGgG(3qz=JdI`l-IR=W7 z7b6-XFDh{Z3Yi#0-&L_79!~ez{=qq2mUxr$G+x|PLp8OOno^+V(z8%!(*;z6ok1Ph^oXNXc6m~^n4$d)n|f3| zPRk`NxLfQAP9xdQY}is8PEw=Pag$tQ-CFi0Hm>r@KmW?3a zWP;uYIzsnJ$w9^`t{wqiVFHhmz*6OhzzY5#P}Lp=7CQDZMz_<6uW1V%KVxP>vC)GS z=?C}jUbF5DGF2}@2RlAFv4 z^XIYfzB#)4CAXjQOu7i=1G7vWbbOYngH9z)HM+zc^lFkDqsuIXO7Ll$UeHNZlG{%k z=mT=n&>Ydo8uFx9u(X z{bYvtTIyssJG+pXFj~(pJAJg3)vz7pW4Ev{h1gaeqfvGUhxGs(R(DV)EZ2hG;XF)} zYy$&ag@6MRKz=e8n0dA1;9x^v5ois+PY^%vnT|g1~Mu|R&eku1$ zdauO&6s4=map`qJ(&wf8kCL8}G-D!;PvTyQ$Jl;4r5t1T!}l%br;mX9>E9+MA!3Sf z=ul38J|^)tdKtU-B`wFPFQzhFBBfM;17v_s!RM%gI_LoXoYc5DUbCNie0Rk+WcsnA3_~p z4|w)Eb_Ft^idWE%3rbv44p1qey68FTr7IZ!As;PcKH4JvseMIDUtdjMHCgujRTj^8 zSx56zR<0Qy^xs`Wo&H!TJP0CbRZH!w!-M^y?Zc7aifzIVk`*n~-W3iE4+K|$@l()G zmZvd?(=CxuENJPTUeBuG&_IATM#8&-u^qwTsJA;9>xuaW1HMRrdZR(>VI$irEGkXw z8I8t*yS$r+2VLx%vA!+7=uWyJ977oI4PpPz zV8k037!V6=kN9>`B8s)DtkN>ey0xBQ?8a~SgF~^9m0Dh=VLhxJi46}~zb?(T#>-!@ z1}ZA7vlVB~jT#M#RbAOudh@n>g8mqF`G(d8V}t;Nd2=v2JRmtqSszz6xMd_-zb+hw zb$BG$ZN;jJGggNO2H+o#Yz}S@MPrdsBI}YjySQYC2GD-=h;~pIbO2NYk|A7VJ3)_H zFIAmZY|E@JZvlQ8(JPw@5A}Int4>`qzW32*g?CsNste3~yWPW>9+Wt0_mCccfD&V-0NYb)v4mkS?bLA&($lTLVm z)Z^z9fqWta1TusVKh$h`e9{HWKRdGY_=`;6or*xale8lpsdVXGs>XDD31IuW?sMsP zst%^-;hW%&A8=GN#?lM$S%64I0lS6LBUn$G!=B04BqU_e=Q!a?r zbsln$+dQOb)rumbq!%!*DeiGSkBh#uvZGq_s>EAJfr(>twJeN(75DRk8)g(7x$->om5_}AaQ$XK)BBbNLpfQY?F(4NVn zY$dJz+?A$O#d5VqS;x73t$$Fu8mNgHW8idmO;=# ta1F4kgU*i;0N)J1I%=^FE$?8f&%Lm`PH|Qz{*6)He$L(TF`KM*{2vHl&)fh2 diff --git a/EdenicExporter/bin/Debug/net8.0/DotNet.Docker.pdb b/EdenicExporter/bin/Debug/net8.0/DotNet.Docker.pdb index a020c806a278825f7d819c0711d09446bd4bc801..386c1d84653c641b6f1b50ce0798143ec4b93a13 100644 GIT binary patch delta 2241 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 o?e8%#VS&&tgWmiz`$hBI= zImu=qb*-Eth&E*8gDzXj&GHDA8cMZAQ2tP+f%a+TwoIc?&W1-$6ZYvuY%&pag-44- zfVj{Y#lnh5x)34alVM6A8Ao4K9vK$WpUg-dQhHuUFB6$qQyOE>RDO-m7opK7%_tK= zXUg+NVZr0bU7Zn@qbNu!%a?egsX{ICn^8YOw#Zd1G=ZH?G%}HYnpmU)@yp_-P#K0? zE2CPWm2$7h9ZiRg#*M|$jBBvr$~ekaxosQ^sXS{OyP@(uLZy?~!O8?1rf6u zF|n{anlURT3KcO;tRtdfw-8MT5e>$OCYY~9L!d>~Hu^1QqYpaMx3(i zYs5jD(U{W7^B!7mG{FCQT@opvNp3OCQxcoRbj3h|Xwn*GOlZ&~G0kd{aGP!tEl6u# z_tjTlC0Zo|$~f+Y)4dXXnQqI4OX!M~HNSF240V)D5WR)jz*#HliA6$#+oPi56dm^y zPJc;n4`t$LiJq3M?OlHZ=2Gx?*sO{93ru*?|5zO*FP;|RiGgG(3qz=JdI`l-IR=W7 z7b6-XFDh{Z3Yi#0-&L_79!~ez{=qq2mUxr$G+x|PLp8OOno^+V(z8%!(*;z6ok1Ph^oXNXc6m~^n4$d)n|f3| zPRk`NxLfQAP9xdQY}is8PEw=Pag$tQ-CFi0Hm>r@KmW?3a zWP;uYIzsnJ$w9^`t{wqiVFHhmz*6OhzzY5#P}Lp=7CQDZMz_<6uW1V%KVxP>vC)GS z=?C}jUbF5DGF2}@2RlAFv4 z^XIYfzB#)4CAXjQOu7i=1G7vWbbOYngH9z)HM+zc^lFkDqsuIXO7Ll$UeHNZlG{%k z=mT=n&>Ydo8uFx9u(X z{bYvtTIyssJG+pXFj~(pJAJg3)vz7pW4Ev{h1gaeqfvGUhxGs(R(DV)EZ2hG;XF)} zYy$&ag@6MRKz=e8n0dA1;9x^v5ois+PY^%vnT|g1~Mu|R&eku1$ zdauO&6s4=map`qJ(&wf8kCL8}G-D!;PvTyQ$Jl;4r5t1T!}l%br;mX9>E9+MA!3Sf z=ul38J|^)tdKtU-B`wFPFQzhFBBfM;17v_s!RM%gI_LoXoYc5DUbCNie0Rk+WcsnA3_~p z4|w)Eb_Ft^idWE%3rbv44p1qey68FTr7IZ!As;PcKH4JvseMIDUtdjMHCgujRTj^8 zSx56zR<0Qy^xs`Wo&H!TJP0CbRZH!w!-M^y?Zc7aifzIVk`*n~-W3iE4+K|$@l()G zmZvd?(=CxuENJPTUeBuG&_IATM#8&-u^qwTsJA;9>xuaW1HMRrdZR(>VI$irEGkXw z8I8t*yS$r+2VLx%vA!+7=uWyJ977oI4PpPz zV8k037!V6=kN9>`B8s)DtkN>ey0xBQ?8a~SgF~^9m0Dh=VLhxJi46}~zb?(T#>-!@ z1}ZA7vlVB~jT#M#RbAOudh@n>g8mqF`G(d8V}t;Nd2=v2JRmtqSszz6xMd_-zb+hw zb$BG$ZN;jJGggNO2H+o#Yz}S@MPrdsBI}YjySQYC2GD-=h;~pIbO2NYk|A7VJ3)_H zFIAmZY|E@JZvlQ8(JPw@5A}Int4>`qzW32*g?CsNste3~yWPW>9+Wt0_mCccfD&V-0NYb)v4mkS?bLA&($lTLVm z)Z^z9fqWta1TusVKh$h`e9{HWKRdGY_=`;6or*xale8lpsdVXGs>XDD31IuW?sMsP zst%^-;hW%&A8=GN#?lM$S%64I0lS6LBUn$G!=B04BqU_e=Q!a?r zbsln$+dQOb)rumbq!%!*DeiGSkBh#uvZGq_s>EAJfr(>twJeN(75DRk8)g(7x$->om5_}AaQ$XK)BBbNLpfQY?F(4NVn zY$dJz+?A$O#d5VqS;x73t$$Fu8mNgHW8idmO;=# ta1F4kgU*i;0N)J1I%=^FE$?8f&%Lm`PH|Qz{*6)He$L(TF`KM*{2vHl&)fh2 diff --git a/EdenicExporter/obj/Debug/net8.0/DotNet.Docker.pdb b/EdenicExporter/obj/Debug/net8.0/DotNet.Docker.pdb index a020c806a278825f7d819c0711d09446bd4bc801..386c1d84653c641b6f1b50ce0798143ec4b93a13 100644 GIT binary patch delta 2241 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 delta 1914 zcmZ`)U2IfE6#i!K-Mib;Zg;n3DWz0Op+GRD%Wk*35wSlsl$cFR+DcFmw);ajwB6E{ zCg9JO)Ko|`y19uDf<`4`^hLrxDDr}U!T4Z81jB<-N@AjkiSbE8jPaY(7E6Rl&Ntt8 z&Y3fF=gyrw-8LP4^W@rd$?;dQ(C%O@mZ@gILr3Ynb2eW1SJ07?9s-Du<%IRvOdF%^nv#PRxR2x)H(Q@2V-s|sO`sTPQ&k8t7NN`Vu5TJv!j^?ISESQVEPN@X) z+?4rAbfOM$4Qx$@)_{e85Y z?-%}$(sg=dREO|)o!v&h6piK|EKw=0$Ixwf5HfE%{CLCYHv;gRU(@rU^QI$!zi`f| z!QY05(_DZq_p@=@4B(3M96hgaadmhHwmd$}8ujoljdL>WE~P(5qw5iz-JsA_%fVfHk^=$H_Nhw|E9Pdb6>g_!~5K z2)b2*e89}7*nR69BHlLR#KnO2-!_NQ+s0Y&7J7^+mS0qz=8JrT^J=zwj5}d0Dx5NB zmZ-Zp#WS=t(^{(XoaT|iN5tmTMW=N?HmAPAn)_;gF|LK0^O^rCovF{5!goAF8uPll zB;o@@pUUs~_7rYO(k&)u`69C1{xMU*N3^h#Sc*-;gG4W4g6)F41a}MW6-)?bi3&%E z%W+JwK(z8AYH$PknQlO@@K+r`Jti=Q^@1Ca#8K6RWhkJDpUvCERk%oOz!ly9JSl=i&R7vFmg%Es9y`O&$a%53xShE;2VPJ5;`|u01)K z&5a%mV%zrEfdjzRr06<3vA>GOMf$8(3q6C>z5 zHZhqVvD!Ero-t>OC*#^ zrc#+`A{1-2O9QoqMvom0c>Vhpel~gwr!;RX)CU|xaeF*)zUZmmYQ$U6%KIsaH1De* zQb DFo`a$ diff --git a/EdenicExporter/obj/Debug/net8.0/refint/DotNet.Docker.dll b/EdenicExporter/obj/Debug/net8.0/refint/DotNet.Docker.dll index 8a6b5412cd30c23ea05b552e8a8a2e566b1fceb0..0a652d1fa4cc64c588a82c022583bd80af796bf1 100644 GIT binary patch delta 2722 zcma)8ZERE58Gg?FN@54waUgt@W`xiNMry@`#EBL~HY6>f3xp=Dix>pQzDc|!cCfEe zqPDXU>q^_9HoNUc(fYyQPm4rLqU}dDO=Z)hsw&#lNo~~+G}cM`GgOU9lc1Z}bB<$3 zHGb?^=eh6mocDdtx#!Eb*ino=e_~@&`}WVURQ`;O@QM~7NWoJQPY=w$@g3i;0bs8b z4g>F)^9{AtMWC9znGNgR2Cdm07JEIf1t>*XgYJUZD%QAHM3bmrw6vQdP`}&$;l3xq`!2mWUXLjB9>2esma#2wQ@fX!-jsT^QvBK>-9nSz zVOTh>NsKBysPGeo?+B^?Lgo3V!V5xXD;%?KFt|@h{76aH*@1v1au;Bt_O(hj)zydR{cf%{shiWsQ2= zz){P>6O7%6pA@Wva)$Ao1kQo{1#rSTgV=5M552^6)%Ihf#4P9{fbEQuo>kBr0ywQ0 z=VckI#0uppcU+9i;8W}yiuq9RD|%Vc0K1k+-&SlTYB|M@7$7#7gT!n40pbS=&zXnN zj%P8-RTUUhcAB<>tWu8B^Sh!zd<7E!pi8_3nc;{0EoCk+^>ZX2S}zdKndx%Fl77y7 z2?J4%2R~ZVWd_*Q62pRZmiwf{ehQEACbw#t`ORN)v)_rcn6(_Y-~9D5R@ftc%PqIu zwd$_ys<^~eE4N)0&0@oCCWmJ6NH5Rwf3m`|z)~0Gz)}}wR_emL)J4hj4wHkC2aM;1 zyGd}NdGT zqKd$UE3eWNse8r*5;r>q9S8*Pni7%8b zgw%B*eHxVAsO*@KK8Fk9EF0pg;h4fR3NI^SR#HnM~Gk|Kr_L z)ngw`CG0)%X}7OBrVq`{xF@Qg4XF+Xow#H7#}gB&v>kK!Uptz2Z1mWp`SEc(JLuRm zLlfCdetcrFYQ<&I_5EBXJrH*$(35fY*iNV?lbE!#q2$yQ^4Tfb`*=1!jlsE`V^1TV zcP551lXe>Y@l@LVJg~*x*W>_`FC#Co_-8S&*Vez&IZB=lesE5yIf?fJ7h@gG1 zPmSV8#Rg3n!F+Je-4c8~)Y%qpZ%>4i;f|I>TgzBvY^*cVnFuGsZJndrBk_dY-VqLO z?}&gm3Oe0u-Zc%O+Y_|)?)%QY8C-90ESg(aTOXWR`XG}-dq&#P`Gz{}@d5Wx?OSe( z_V-2K%58doC)yC^UurvVzc7-l9cZE5MjS(gb&MBqgjKf7+D3bnUjq@u$!$hjh%cdzg1 delta 1914 zcmZ`)U2IfE6#i!K-Mib;Zg;n3DWz0Op+GRD%Wk*35wSlsl$cFR+DcFmw);ajwB6E{ zCg9JO)Ko|`y19uDf<`4`^hLrxDDr}U!T4Z81jB<-N@AjkiSbE8jPaY(7E6Rl&Ntt8 z&Y3fF=gyrw-8LP4^W@rd$?;dQ(C%O@mZ@gILr3Ynb2eW1SJ07?9s-Du<%IRvOdF%^nv#PRxR2x)H(Q@2V-s|sO`sTPQ&k8t7NN`Vu5TJv!j^?ISESQVEPN@X) z+?4rAbfOM$4Qx$@)_{e85Y z?-%}$(sg=dREO|)o!v&h6piK|EKw=0$Ixwf5HfE%{CLCYHv;gRU(@rU^QI$!zi`f| z!QY05(_DZq_p@=@4B(3M96hgaadmhHwmd$}8ujoljdL>WE~P(5qw5iz-JsA_%fVfHk^=$H_Nhw|E9Pdb6>g_!~5K z2)b2*e89}7*nR69BHlLR#KnO2-!_NQ+s0Y&7J7^+mS0qz=8JrT^J=zwj5}d0Dx5NB zmZ-Zp#WS=t(^{(XoaT|iN5tmTMW=N?HmAPAn)_;gF|LK0^O^rCovF{5!goAF8uPll zB;o@@pUUs~_7rYO(k&)u`69C1{xMU*N3^h#Sc*-;gG4W4g6)F41a}MW6-)?bi3&%E z%W+JwK(z8AYH$PknQlO@@K+r`Jti=Q^@1Ca#8K6RWhkJDpUvCERk%oOz!ly9JSl=i&R7vFmg%Es9y`O&$a%53xShE;2VPJ5;`|u01)K z&5a%mV%zrEfdjzRr06<3vA>GOMf$8(3q6C>z5 zHZhqVvD!Ero-t>OC*#^ zrc#+`A{1-2O9QoqMvom0c>Vhpel~gwr!;RX)CU|xaeF*)zUZmmYQ$U6%KIsaH1De* zQb DFo`a$