diff --git a/README.md b/README.md index d109b89..de221c6 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,11 @@ Learning MQTT with Golang by doing. This repo is a simple example of using a Gol 1883, Eclipse Mosquitto unsecured (opening the port on the internet is not recommended). + +## Architecture + +![mqtt-arch](./img/mqtt-architecture.svg) + ## Development For local development we use [Mosquitto](https://mosquitto.org/) as our MQTT broker, with TLS enabled. diff --git a/img/mqtt-architecture.svg b/img/mqtt-architecture.svg new file mode 100644 index 0000000..31b8772 --- /dev/null +++ b/img/mqtt-architecture.svg @@ -0,0 +1,13 @@ + + + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2dV3PqypaA3++vcO15mam66HRcdTAwMGXzhnPCOc+Zclx1MDAxMVxyNskk20zd/z6r8TYotIRcdTAwMDRcdTAwMDLjfeFUufaxsdxIvdb6Vuz/+8fGxq/eR7v86783fpXfi/l6rdTJv/36p/n+oNzp1lpN+Fx1MDAxMVx1MDAxOf1/t9XvXHUwMDE0R++s9nrt7n//9dfkN5xiq/H5W+V6uVFu9rrwvv+B/9/Y+L/RV/hJrWR+9zjztL3Z37pui8Ze6eZ1W5bwvVx1MDAxYf3q6E3jxdTrtXa3PPnBO3yXUe0oOnmx8U8/zCopcThyvcT4x2+1Uq9cbm/BWI6/Vy3Xnqq90TeZw8ffzjef6mZcdTAwMDVo/J1ur9N6KW+16q2OWdl/4LL5b7KyQr748tRp9Zul8Xt6nXyz28534EZM3lep1euXvY/R1eFmwo375ftcdTAwMWK3v5dJfN9cdTAwMGb7LfijT9VmuWtuNlx1MDAxZX+31c5cdTAwMTdrPXNHMJp8XG6zwvZBafRcXP53sqZOvlE+MFx1MDAwZqbZr9fH3641S2Vzw3/lkeevNUu//9rXQ508MfL7O/+arL1cXDZcdTAwMTeWQlHMuZoscLKxXHUwMDE4Yf7vnrSao01GkOBSw0Oe/F6tu1xyu6s3umolX++WJ4/ALG3Hv/Pcu8+zuXrl98lzce1NKlx1MDAwNts13X5cdTAwMWJskkK7dbB1w3JccvZr/L5//dN+2c9frrP7i2ancbR/Vn3QfPe2/nr6fOb9K19/P9/ptN5cXNf9/a/JY+m3S/nPz4klkVopLLDmevzzeq354n9m9VbxZXJr/uFasE9cdTAwMDLtnzIggZ6b9Cl+kjtKSIEow4orRb3iJ5hcdTAwMDPPXHUwMDFhUyGlRFx1MDAxMpGA9DHuYK21XHUwMDEwjFwi+OKSz7EscrRcdTAwMTZEuyBiuyB63v0lcVx1MDAxOCOqOOFcdTAwMTaJo0qESVx1MDAxYzw3RmGn0Vx1MDAxOVx1MDAwNM6zjPl372Qzmk1cYlx1MDAxZv+2XFzY+Lt53S13XFyPsdXsXdaGn8rC893dfKNWN/edey6UrdeezD34VYRVu69cdTAwMDQ3oldcdTAwMDNTNn5Do1Yq1V07q1xiXHUwMDE3zdea5c5BXHUwMDFjXHUwMDFi1urUnmrNfP3KtXjv0vP9Xuui3P1cXHyv0y+77015f2yZXHUwMDFjwq2CXHUwMDFjaiXdXHUwMDBmmoQ9aHhcdTAwMWOcXHUwMDEwpqW27DP6K8bj/1QktVpnmHtcdTAwMTl2hrVcdTAwMTN9eMxy/H5Hq1VcdTAwMTGzoPp4XHUwMDFmbVx1MDAxNMJcdTAwMWONxddrglx1MDAwM19cdTAwMDShqeBIjr4ql4ZKS/ckIJHf0oxBUzIuMZr8QlwiXHUwMDE1ktRsp2RLT1x1MDAxZa9cdTAwMWJIdJ9cdTAwMGJb5HirQlx1MDAxZrPv/Oopri1tvvPt48vBxdtL4/E5d95+L8hyLZ4tjbxuXHUwMDBid0W2To6HlVxcsZl/kZuVc1lO4bqD4e7h06l6vr1cdTAwMWGct1x1MDAxZkrXuW5NP6Rl+4kkmnK3hpjF9tvNuktfuFx1MDAxNLRPX4DNlkBq3EViY3XB4qtcdTAwMGL7jlhxdcGUQ1x1MDAxNNKcKoal4JPH8Ik83IG3XGLGJKZcXCr/wtJTXHUwMDE3XHUwMDEyOZxqTVx04UjDOqLR6UtzMI2khIVPnuzMmsPzg4CKXGLfvVxcgvJCalx1MDAxNtuf2L6bu7hdXHUwMDFl1IrlXHUwMDAwK6Rq/qfYPb/5/72kdFx04FOkXHUwMDFlunu3z8f3j6Jd3eRcdTAwMDcl/pI9e9xcdTAwMGKifKdcXOx9bnDP7saEXCK3MfRbQ4JcdTAwMWOsJtZcdTAwMTCrwLZcdTAwMWO53Fx1MDAxNjtcdTAwMDZ+uuuyQuhcYjn7t6Z6XHUwMDFl172mXHUwMDAxOz1cdTAwMTZyzpmUnFD3fv5S6q5n5lPqXHUwMDE0XFw1hpBLNyzcvc6dvGX74ixfP21cdTAwMGXbNP/x2r05volrYttcdTAwMTfDbqVUK4tW/7qSlTtSVFx1MDAwZVspmO7y3fnztj5lg3qW1Z5cdTAwMGLV86uXi2pcdTAwMWHXvX+tVTKZ6ls9d9CvXHUwMDFmlTQtfdylcN3H3aftwsGh0i+N62tavr94J9lcXFxu133v7N5lri6ZbDdburd/d1tuXHUwMDE1+ilcXPdOl7ZcdTAwMGaa+/nnYuFRZkg5Vzs5zqdw3Vxc9a2RyZ30P1x1MDAwZfTDdvlcIqt1K/+RwnVvn3E1VzraLu7i1i0+6m9vvfR1XG7XxVW0e12iZ+qiUMj3XHUwMDE4Lp71b5opIVwiXHUwMDAwXHUwMDFh1iSl8JBdSlx1MDAwMzYlXHUwMDE4XHUwMDFlwkQgR2ohXHUwMDE5MFx1MDAwN1x1MDAwNWCcQMokPqRcdTAwMDFHyOiri6XGTpEkjqRaUSlcdTAwMDCq4FwiXHUwMDEz7bWOXHUwMDEwTbUlXCJ+hFxiI7BcdTAwMTdcdTAwMDRcdTAwMGJtM1x1MDAxYSRcInKgJOVcdTAwMDChLPVcdTAwMThcdTAwMTFwouKcJtjCXHUwMDAx9Mu1uq/9Wq/X2sidX1393dw0z2Ml4kVTMM1cdTAwMGaM0z5IOuz4cV0/lXeD3Nb5KWk2mlx1MDAxZiWuLorx2Vx1MDAxMSTUkV53XGJcdTAwMTPpXGI3MFx1MDAwNkPAWCjHlcChxOLIaLlOx4TJuJyfXHUwMDE3OaVaMGpcdTAwMGJcdTAwMGVjXHUwMDEySNKMJVx1MDAxZiHCXHUwMDE5J3LiIyycXHUwMDE3r1pPZ4fNzFn/9W33XHUwMDAza/V6sdm8+lN5cY6Q11Q+UIRwpYVbTczOXHUwMDA39qdcdTAwMTKHXHUwMDBmJKJcdTAwMGVIvFx1MDAwMEWvJFx1MDAxNz7lIagn9mpRXHUwMDFlnDtYai1cYuaKIIqJxfUka9VcdTAwMTGiOlR8POBYcVx1MDAwNlrCpiOk/3tcdTAwMTM2MJFqjNksXHUwMDFlZTRcdTAwMWJcYmqyivOwwWbrfVx1MDAwM69cdTAwMDJcbkyxun5cdTAwMTTwrTutvJHFqLv4z4XYgcyRllx1MDAxNFx1MDAwYu7OXHUwMDExjjfYxEuaXHUwMDFhXG7W/e5weERfdrKPve7zZjXzevB6tCryZVx1MDAwZlx1MDAwNY+AXHUwMDA3uapPfKFgRlx1MDAxY+L2blJXOjMj1Jfhp4ohpbBraSnmkYK8kVx1MDAxMlx1MDAwNGw+7JXeXHUwMDFm+9Wjh5Ziw49NLcXF5Z9cdTAwMWGEmSM/XHUwMDE1XHUwMDAzXHUwMDAyXHUwMDA0k2JuXGKYlkfCNDTkXGLoaaw7bEGL9sjG11x1MDAxZfYtseLaQ2vAXHUwMDFihDBcdTAwMDflXHT8PblJI+0hlcPxMrSHQFx1MDAwZfx9LZSSXHUwMDA0XHUwMDAxkE0+jlxyob5UXHUwMDA3VlxiaUxZXG4p6JlcdTAwMTNJQkhNZoKAmVx1MDAxMknG8pJcdTAwMDUlkKaYP1x1MDAxYlx1MDAwNJAlQ1x1MDAwMFxywt9YjFx1MDAxOUVMUMVt5SPb8cW4fbZ30UPl282t+1cy2Hm437mUXHUwMDBmqy7GkVx1MDAxMEC58Powq1x1MDAwN1x1MDAwMSD0XFyYeqxcdTAwMWZcdTAwMDVcdTAwMDFcdTAwMTe9XHUwMDA3dn7zekLF413z+lx1MDAwMVVcdTAwMDYnW6d/ambjXHUwMDBmKCYhPFx1MDAxMFh2XHUwMDE1n2lgXHUwMDAwKW1cdTAwMTCwXHUwMDEzX3vYt8Rqa1x1MDAwZomQw0IhgGrqzbcvTHtwPVx1MDAwM1x1MDAwNEiGMcWIf2cxiZCEqOVcdTAwMTWTXHUwMDE4w3uyIFx1MDAwNphi/WxcZnCSXHUwMDFlXHUwMDAz/C7gvG03Xlx1MDAwNptDJa7uT99PXHUwMDBli+j6yMXhU1JcdTAwMDCKYH9cdTAwMDaAXHUwMDEw7tnCrvL+cclcYlx1MDAxNo67NESy4ObDXHUwMDE0OcjeybFcdTAwMGXqeVx1MDAxNObu3PlcdTAwMDCFMFx1MDAwM7pcdTAwMTe29lxmXHUwMDFjXiyOuck5g0+5xPpcdTAwMTGqyOZtmXba5Pw2d/hyd4W6vYc/tV5gjnaSyOt2dp92XHUwMDFhe+X84c3VRfZcYtNiSVxcZ1O47jXp5Vx1MDAxZt7Ajym9Xlx1MDAxNrG8XHUwMDE4ZOX+eVx1MDAxYdctnvbv9rdcdTAwMDb3NdXewdf6467WzaRWNyGZu1x1MDAwMmq+tlx1MDAxYevuXGYo02BeRJm8XHUwMDA2o1xmSdNVI4mvq016k6pcdTAwMTOwXHUwMDFh+1x1MDAwMkw7ylhHQjTTXHUwMDA0K0vVxDotXHUwMDEypkH37Fx1MDAxYdSWXHUwMDE2XHUwMDAxv0lwpmQgXHUwMDA1MjJZoalTwlx1MDAxOLjLmCygr0ZzhebKi5jWlGy7XVx1MDAwN3LpmVx1MDAwZjI7L6VXXVx1MDAxYlxyJbbmXHUwMDFh6ydIXHUwMDA3kaLTyD7V46V9JphDfHxEp1dISC9cdTAwMWbxyVvG0qyYt7x2srPWwu1cdTAwMTHug7h4XHUwMDE02r2KqcZEXHUwMDEzRFx1MDAwMt1cdTAwMTHwQ1x1MDAxNi7zXHUwMDA0vCXC9Fx1MDAxMunonOTF7v7j4dbZVa3Xeqv3XHUwMDBmtvpcdTAwMDfJmkyJ0mwmddJu1fxr/1x1MDAxZtdcbpF7uWj87//9p/Xd4Vx1MDAxMmBemcDmn1xcL/BcdTAwMTHr+W5vq9Vo1HrwQc/MXCJcdTAwMDOqvZfv9DZhx9SaT96d8buRPU5cdTAwMDXXSDNcdTAwMTb75lx1MDAwNoDjQkArUyph03BMyaRVw2zjfNu92Udi9e5dWWAjlpul6euLTit71lx1MDAwN8jDXHQ2mVxcLlxiXHUwMDExKrA87umxpzLZckc3NGvUYbWcXHUwMDBmiCZ8XHUwMDE498/8erNcXC+03mLRln23x6AtzClcdTAwMWaFTpniXHUwMDAwS4R4u5ixolx1MDAwZUZcdTAwMTRLJkZfgz1cdTAwMGaUOcx0MWtcdTAwMDbuLdCWXFxXoSTRyDfxeUtcbsmZhu1qUb3hSUYqXHUwMDExbFr3b6WGWyZ4OrlcdTAwMDMz4NZlv7Bcbog1XHUwMDA1avyI5Vl1OlhcdTAwMTVdRVx1MDAxN4lVo8JTI4G/X94gKpbYUTxKfrHCU1x1MDAwMUvzdfxpI444XHUwMDFmzlx1MDAwZlhcZlx1MDAwMItjcMVtUlx1MDAxZVx1MDAwZVhAV1xiaY2WWI9cblt08/ghlzkjO63bLlx1MDAxZXSf9j5KXHRcdIuJRCVcdTAwMTiLIaxMuFxmmFdg9y+DsFx1MDAxMlx1MDAxMFxmJ1QpXHUwMDA0XHUwMDEwyJRpYaSuNy1cZrBcdTAwMTJcdTAwMDAg0Vx1MDAxMmuMQbrA1UPasjzvvZ9Ue6xcdTAwMTJg2Td7PMCSXHUwMDBlM+VcdTAwMWFcdTAwMDYzuVK+eFx1MDAxNlx1MDAxMl5cdTAwMDVcdTAwMWRMXHUwMDExUOFoUFxiimiMMEDqXHUwMDFhsJJo5Fx1MDAwNIBlpvEwXHUwMDE00lx1MDAwNlx1MDAxND5cdTAwMGVAaUSQpFx1MDAwYohnXHUwMDExyvRM6b0vwDpbXHLAmoI3fsA6W1x1MDAwMGBFVj4mjlspX9zKQlVet9xGVV7HknC5XHUwMDE24lx1MDAxMCE+mlx1MDAxYquElISxkLBVaGlcdTAwMTfHSlx1MDAwYkHVXHUwMDEyoeq510GD62JFt157d92n6vtWc5ckgypcdTAwMTNsmUlrpFx1MDAxYrZcbpVcdTAwMDDzylx1MDAwNDf/MqgqUdyKYEWwJkxxxZhEbixZXHUwMDE4V0WXQnq5iihcdTAwMDFoZdSP5qCK5l3fkkDKvsHjgZRcdTAwMWVcdTAwMTVcdTAwMWLaI1VEhnVcdTAwMWOsI1Wp6OBcdTAwMDQgxbhcdTAwMTRcdTAwMDC61sxgeFx1MDAxZK1gSCrmqrxIjaMoyPJcXHnBXHUwMDE1XHRUTaGYJVx1MDAwNKqiOz2mXHUwMDA0qrhnuo6vVlx1MDAxOE9HqumBKrJulVx1MDAwZZPf41x1MDAxNEJTSDEqXHUwMDE0t9VG0fAmOVxmRlxufJllJv+GXHUwMDA3x8Vh4fD1rHN3e0zJ4cmWqr0mpCih6PdT1JTQVFx1MDAwNjb8MrgpNpZkkMOB5cSokEiAPqdLwaZcdTAwMDRcXFx1MDAwN/zAXGInXHUwMDAyXHUwMDAzQSjNJnZhtbHJvqPjYZNwXHUwMDA0oWZIsVSEu6R3pHdcdTAwMTFccunRWIef0tC6ScJPjHFcZlwiI2xOalx1MDAwNDZxwlx1MDAwNFx1MDAxME7qfeagXHUwMDAzYbfMXHUwMDE0nl+x+NNcdTAwMTRqWUL8KbrpJmn8XHRUmEPdQWPLaH8pbaNcYul6mEyorObmJiSKXHUwMDE40sLOR+GjZLhmnCHEZ3F8ZuSjXHUwMDFi8V5vPbZPeUde91x1MDAxZbc6/dPNUjlcdTAwMTlcdTAwMWaBgVczzadKuTjKtaHNy2zwZVx1MDAxMFFcdTAwMTLiwFx1MDAxMjFcIlx1MDAwNZHgXHUwMDExq3l5I1x1MDAxNlx1MDAwZkV303hWh6TE2sxcdTAwMWGDrYuV1kFeY57Wylx1MDAxNS2Asu/oeHzEXHUwMDFkyU1cdTAwMTdcdTAwMWHhQEhcdTAwMTMz+tnCilx1MDAxY4FcIjXtOqz0uVdmVLpcdFx1MDAwMMnU9GsupS09XHUwMDE33pmjXHUwMDE1XHUwMDE22nP8Q3p8pFx1MDAwNJvcy59cdTAwMWJXmkInS4grRTdcdTAwMGZHx5VogI9cdTAwMThcbptcdTAwMWZcdTAwMTGWn7O13THlU3xrXHUwMDE5tsvwydzgRFx1MDAxMFx1MDAxNZpcIqxcdTAwMDNujlx1MDAxMftQ34fBbzGG2Vx1MDAxMvNzpV5nb/e4UMy8t9h9RdRcdTAwMWW3SV8nJCfB9PeXlWfCRWD048DuX1x1MDAwNlXF5pZcZmCV5oJcdTAwMGIz7ptSRih3Lf9cdTAwMGKs8FxcpdtpR55gnWZoi8YmgVx1MDAwNcz/Q1x1MDAxMnb2XHUwMDFkXHUwMDFmi6xcYnUkXG6rfKJTS1PXkaeNOZRyXHUwMDAysOJgXCJcdTAwMTno30SBJ2BmeGxyXHUwMDAxZU+MavwnlD1NgZolhJ2iu7wjsVxuUe2w8MMwXHUwMDA0cYRcIphgU4KgubIhlnK06yUtJzwhR42arKhQjCDtzrisxdkjzqdzM1x1MDAxNqVEUsqtU0wjOvdcdTAwMTAz09HdjdZcdTAwMGJnrP1X1D6sbm5d4uMncvYkUfb6NWFh+cydwCnXQIWJgHllgrt/XHUwMDE5jFx1MDAxNd1Q7GUscKAk01xuMUFgXHUwMDBiXGK5lOBVXHUwMDEypEJcXFwiPTpQXHUwMDExKVft9Hh53iNwXHRxQ+7qIJZ9w8dBLHNEnlx1MDAwZS8uZ9p7xsRcdTAwMWGxUtXJXHRcdTAwMTBcdTAwMGKcW3g+LFlpuVx1MDAxMEpqJPEs/u1cdTAwMTTGQto9WePnMtZcdTAwMTTCWVx1MDAwMmNFT7yJZCzQR1x1MDAwZXe7qF7p1b7WXHUwMDEwS5ZPWVx1MDAwNFx1MDAxNvm93onIrFx1MDAwNdgjwGdzQ1x1MDAxNTan8yiKre164YXlSlx1MDAxM3imcpmHeb/yTl6+ZfhcdTAwMDU9abDy1sX2XHUwMDEz31TJoWolSqI8XHUwMDE5v0xwvy9cdTAwMDOjYlNcbqxcdTAwMGYjJeHuYaqI5PDYXTVcXL85hXqCbcz9XHTTwqrY3IdcdTAwMWNkmlxihNBcdTAwMDKB9dHE0lLoq+1fzZ49+5aPh1VytKlCSs2Vt2YqOLVmnVx1MDAxM/zcKzOq5SSl5lx1MDAxYStkXHUwMDFhNSz6NzxvXHUwMDAwYIxNyCt9rsLU3Vx1MDAxZf9zU4JTqGZcdCnB6Il/UVxcxYVcdTAwMDLPkFHwrZFcdTAwMDYh9jfvKUchgrA2h+5pbJnJyUC9Sfhtqlx0XHUwMDA150hapklcdTAwMTOHwFuIOVx1MDAxOYaAiynXI1x1MDAxMUKE+XxuxmJUXG5jNS1cdTAwMTKOUUTen3N4frOdzTcjY7WKT912o3nefrs/ebu5uXk9yGdcdTAwMTMmXHUwMDA3V4OxwiVg9FP/3l9cdTAwMDZvXHUwMDFkZ562N/tb123R2CvdvG7LXHUwMDEyvlchvIWIXHUwMDE0klx1MDAxMSElXHUwMDA26Wfanlx1MDAxYuRSSkQ0Yphxl9L+XHUwMDA24lx1MDAxYS1ZKVx1MDAwNLrKOHsm4iaCoTbtS9eSRCtcdTAwMGUwV4Cr0sIuu1x1MDAxNMTALsGUXHUwMDAz90Aj0N1cdTAwMTTwy1uKZSZ/MlxmXG5cdTAwMWRRRiRcdTAwMTbBYJZio2DWmreSquhcdTAwMDRDP8EzQFq4J/m5tHFoIFx1MDAwYoNWQ5LLXHUwMDA19PZJJFxcvUczXHUwMDAw10X59S+glVWArinI44euwMrTXHUwMDAxr/zb/nbxLKtcdTAwMWHNfnmwO1Sq0lWWUsrQMeg84khcdTAwMTDQb57KdVx1MDAxOZRigr1cdTAwMWRPzEJfXHUwMDE4e5Whq2ViLdtcdTAwMWXZvoqLX+FcdTAwMTPRwVlcIiHNvCS87Vx1MDAwZlx1MDAxZbAy51LOUnY5I35cdTAwMWT07nbLR1x1MDAwN1fkXCJXyVx1MDAxZt6ebpHsM//uQeBcdTAwMWZ73ef8/XCHbb5cdTAwMTXfMlxy9nSWUdvxrjtcclx1MDAxN8FQYkllkjB+hNjb715cZrOtlHBcdTAwMThcdTAwMTVcdTAwMTJppFx1MDAwNGxZb7CEXHUwMDEzbH5cdTAwMWHRYGaSpGZ8PsdcdTAwMDLcZ+J6x9p2T5Xv61x1MDAwNOXT2lx1MDAxNFhiZD3agIaeUDPq59RcdTAwMGI4x1SZ2lx1MDAwMp5k3HzAdp+1ur2nzmpcdTAwMTjvKWYzkIlcbiw9XHUwMDFk61x1MDAxZK3HosImmuhAo1x1MDAxOdfeRrOgtTYn+EjwtcGPQoTaTi/B1JFmXHUwMDA0KSZcXGHQXHUwMDEw6zrqXHUwMDEwWVx1MDAwZVx0eyaqo1x1MDAxNkhSxawtaO5kYfAgW624nLFHP+p8LYzFXG7EMzJh29S8glx1MDAxYnRyuYBcdP6WMlx1MDAxY2SWzkxcdTAwMDGXOVx1MDAxM1x1MDAwM1M+NSHD6Fx1MDAwMjJI0Vx1MDAxYc63ZI6oVphcdTAwMDC+U4lcXNZjvGLQY0KYliuGwamUXHRTXstcdTAwMGJnRJ9EXHUwMDFmpVBcdLJcdTAwMWNcdCVQyKlm45y+9idcdTAwMDODOlWteShEh97NrUNNeb5cdTAwMDRcdTAwMTSVyWbFmZyhNk90iVx1MDAwZU+Z7L/vvrfq1zen6vK40C1tXWcryc4/XHUwMDA0406/v403XHUwMDEzvulHP1ZL6emt1TrD3MuwM6yd6MNjluP3O9pcdTAwMWFiXHUwMDA29Vx1MDAwNkCEQcFcdMRcdTAwMDXlktqONUBcdTAwMGUlXHUwMDE4XHTGXHUwMDA1UybfmL5Cjj0k2IxlMeMlTFxyp6nmdU2LmKyX/oQ+X/uWj+GlYiWJo8HOXHUwMDBiSlx1MDAxOFx1MDAwMlx1MDAxMPBcdTAwMWQ5jbxH9dmOokHMIXg0XCJWcc7E+mCpJIr5Pr6jOrq9pv4k4SBcdTAwMDUhQWt7z1NPy1PlplxuZFx1MDAxZU917/pg46DZ7rtcdTAwMWbjt7mqU5DG76pa1p7Wods+PeByVlj4QDGJzYBB7Cpnnmwz11x1MDAxMXPTjsxt4a7I1snxsJIrNvMvcrNyLsurXCJl9iNzXHRcdTAwMDKrYmq9XHUwMDE5YYSYXHUwMDEyXHUwMDA3r1x1MDAxMlx1MDAxYlxyXHUwMDBik1xcSm7KXHUwMDFiXHUwMDE0XHUwMDE1vpWleOK2ts6X8Vx1MDAxZEbkXHUwMDFhSjQ+cVtcdEKR+3y4XHUwMDE0T9xcdTAwMGVCXUqkVdk9uetp/VbInTaHV736S4lm68lIS1xi6pptmUCFpE8vWHJOlUbg8SPTvGWBXHUwMDE35lxi8Dkp1lxuSfDivnPUrfEmYTGw7U1q13xlwVOaki0wJjLOijNps7Fvxk1AyFwi4DhcdTAwMGVZTTu+nIY7PVx1MDAxYXx86q2kXHUwMDFiq+J8fFVsXHUwMDE3r5VWxVgp7lCkXHUwMDE0NUNzNPX1R1x1MDAxMtM+XHUwMDBmWpphoYTLUqWuh5NB6ZdcdTAwMTbGYFx1MDAxYrRkZLLqpZ9eXHUwMDBlXHUwMDFhXHUwMDEx8dlcdTAwMDaVz3R6uYViUoWqKTixXG5QRVwiJJlcdTAwMTJzoDyRNqgqxJfkwXD38OlUPd9eXHLO21x1MDAwZqXrXFy3plx1MDAxZlZbksFcdTAwMWTmgE2mKNhcZn1HaPKnPydkhlxyXHUwMDE2T1uWXHTytjLYXCJ/XHUwMDE4uWdcdTAwMWN/ZfZcYiFg0F3P7icwVf9cdTAwMTVVW3dn3ez7xf0rPJrBztMuTcZUkrpTTt/KVLA5KFx1MDAwN3PIXHUwMDAwllx1MDAxMObIUnKYPkMlmPPGsaDS5Fx1MDAwZZhp/rNcdTAwMWTDZNp9J0KAVKLl/iiiXG5cdTAwMTc081x1MDAxYYnYopEqvFROaXOcn1x1MDAxZKmK8Vx1MDAxNbFdulZaXHUwMDExY9BjgFRAJUpcdTAwMTNNXYex/vZuRcjAmNWAKs6JYFLQXHUwMDE0tPBcdTAwMWNMJZWcKZ6/kkw1hSaWwFS/iyqyw5v399Pbju7T7GbhZnC6f2HJXHUwMDAxhpZEkog231xmdcDJxlx1MDAxY56b+cqFpSFcdTAwMDX7a78tYFx1MDAxMIjfR0jbXGZcdTAwMDLzXHUwMDFmlUpRXHUwMDE39apokFx1MDAxOaPQlV9WeUtQXHUwMDBlSUw0XHUwMDA0MfspXGLYxY6BQSpcdTAwMTIzhNxB7YXnXHUwMDA3s929g2P5osWWPm41rlx1MDAwZirll+uPuIWL16SXf3g7eD0qvV5cdTAwMTaxvFx1MDAxOGTl/rn3r8xUXHUwMDEwifVcdTAwMTFtvlx1MDAwZTPZm23cvGhcdTAwMTXvWafeT+G6pPxyXGLyLOht9+Dj+Lzd3EftXFxcbtfdzMl72nknR/pOXHJ7mNZcdTAwMGX69914151KsCNklElcdTAwMDbVRCgp+9NcdTAwMGUoKUtcdTAwMDEnU45cdTAwMDKtQrVGSnHXMKDPvlx1MDAwYu/BLJbEmFx1MDAxMI5BX055yFxmXHUwMDExXHUwMDFlZfr/rdNilUTnUypcdTAwMGVPKORcdTAwMTS7iFx1MDAwMeOKXHRcdTAwMTPpTT8vXHUwMDA2+0KRuUa17bxcdTAwMDMggFx038jWXHJcdTAwMWI0n/5uXn50e+XGKuTJpph9P37E+CxphXjK9Xqt3S3/smxcdTAwMDSBQ0t5MVx1MDAwMZzVIKS2II/rQM5pvoU+KFx1MDAxZFxm0EnhTL+91ferPXLdfdpdXHUwMDE1QbT7XHUwMDE2XHUwMDEy8Ii4ZkF5dVxchjBTXHUwMDAzOKEwV1QhdedcdTAwMDJbXHUwMDA24Zk5Tlx1MDAwMYdCSpN3Rq5cdTAwMGXWn1x1MDAxMNYh8vAwR9XO4ONUXGY+eKa23djsLFx1MDAwMVx1MDAwZWJcdTAwMThbjFSigHOkXGKGufY86pR2XGbWXHUwMDFle/rgxvJXiy9/9lu82vLHtENcdTAwMTS49lximVns3qLIXGZYNkdcdTAwMGJTL6m5yan415We9DHumGOehWBcdTAwMTTBXHUwMDE3ZGvtXHUwMDBmpks0XHUwMDE3iHLkalZYumuffPfObkBH+N91W85UzepcdTAwMTTz4Ter3pWk49BHOzfRXVx1MDAxMpEzu7BwkHvyfLC/0YRcdTAwMWVhpyNcdTAwMDB/Krk5isxiXHUwMDBlXHUwMDEw9/RAulx1MDAxY/61Mz/WmM/z1/qCYDPKtLBccpdggY7H8VxcPoJcdTAwMDQ4S2KJpb7ds6ujXHUwMDFhf2Lk/rh2vHe3c8hbhZdk1s9UPX5/qW/49jevTHDnTy5cdTAwMTj4jN/TjEGM9EvKXHSFf8JHXGJmenzROpxs6GiszE+0a7LhzvyAv1xi9s6kdVxiuPhk7oOsl1Tpa9/xXHUwMDAxXHUwMDE1bVx0Z5g+NoaQXHUwMDA09Vx1MDAwYrTFvJVcdTAwMTl4+ok+o4JcdTAwMWLjbGOhXHUwMDE4l66G1oXV+f5cdTAwMTlcbvnFrpCtsVxmYVx1MDAwNqJSd1x1MDAwNUqcWIaiwkSZdOpcdTAwMTNRNbA5nW+QRLbd3riqdsrdaqte+oxcdTAwMDGsQlx1MDAxMGNcbur4aSvyU6RcdTAwMDNf0U5eXHUwMDE0fClOPUPpfW6EdChcdTAwMDZrbqyzmVx1MDAwYkeDoi3NW0B3YyW1XHSKWdBcdTAwMGI8ccmZJEyM/pJMeST9nyHp9fnRy2R7JZhP61xcr2Dp/ySPQk35MF8mfFx1MDAxZOV07rF1e8K3hC5W94b560Kh+lx1MDAxM+ErXHUwMDEztv9HP1xmbv1lsFdsklx1MDAwMfZcIlxcU0HM2Tlg24VcbjYxeXOghEs37KRVuFx1MDAxY+m+etCLc2ky8nAzlebK01x1MDAwMva5XnhcdTAwMWOIXCLNXHUwMDE5XHUwMDEyZkhcdTAwMDaec6bXYkjMvv3jkJg0jcBcdTAwMDDAoIuJUL4xqsD62FFamCbE0VfLKEZMPisxkDZHJ1x062CvtJNLf4aGbiRgMU6pwNo9jClW8TfoXHUwMDBiM45tplx0i1PySlxuXHUwMDE2M5O6/IKxk1avVlx1MDAwMUzqwYL/bu408rX6xl9cdTAwMWJXd1ergGRTXHUwMDAwyI9kMT5LOmCGSvqos3tZ65w0958ruVZzJ4NvY5e5YEKZJzTmdbwyXHUwMDA0zIty8ZlcZuJcdTAwMTmXXtd5XHUwMDEyb514XpJ7avfEXHUwMDBmmbxaalx1MDAxOUM5v1xumNiHenf7pNPb3j9/Ors7qDy0N88rld5cdTAwMTeVJNBcdTAwMTSvc9fEcIyAbzCy+XKW0cyTdCRcdTAwMWVcdTAwMTXMqVx1MDAxNEtifod3i6f9u/2twX1NtXfwtf64q3UzadSuVNHudYmeqYtCId9juHjWv2mmcN2FXHUwMDBlXHTDYHvF3Gmvz4Wen1bexeGufpZ758Xzu/Kw9bGzXHUwMDFiXHUwMDA3XHUwMDA1zEB5T1x1MDAwMtZbZJ/BSnuUg2WoujlNiUltJs9cIlx1MDAwNm+0OG//Zu3X6euCTlx1MDAwMmqQoOul4VtcdTAwMWI14NDgOWaml1x1MDAxYTOR9kCxXHUwMDE5dnpcdTAwMDBcdTAwMWJOXHUwMDBi3XJnkC/U6nDnNy57sCXSXHUwMDAwhnq50ovAhV6rXHUwMDFkxlxunsX7wSBytekgwfCqcLJ1+FKhhe3yOZWHV5fPXHUwMDE3x/GRgJm6ilxiqTfBWDbxXHUwMDAwUHDAXHUwMDE4lr5xoJZorPKW86N/r2mg6WuB7txEQJBJr2vJbcpBulx1MDAxZbNcdTAwMDVcdDCgxEzTXHUwMDA2Z4zunFfe5C3qPV9t32sucvdcdTAwMTg1XHUwMDFiT99nYa2riWNhmWYgKWBnuVBcdTAwMTj8Zb+3TblDXFwlTjzobVx1MDAwYrDBVGvKKVwikrqnXHUwMDBi/LtWcqYvW71cdTAwMDRcdTAwMTZWM9O0ZU1OS1x1MDAxYz5cdTAwMWbDeEXcdFx1MDAwNK6ggb3q5Ivl7t/N/zzMP5U7/7Vcbt74XHUwMDE0XHUwMDEz5ze6oZ8grdpOiy11RcYtc8kmhb5mulx1MDAwNlx1MDAxN8JWXuaKL0wrL8t2tsnNY1x1MDAxOemj87vHxulZ73lzu7Qq0lx1MDAxOdI6RrjyJt39oEGWVt8pPUFooiz1PcpcdTAwMTends1pXHUwMDE5d5mY8WJhY1LSUktJrXtKXHUwMDE29zJbuj0gmdzTXHUwMDFi7m/3+09496R88VxyXHUwMDE2d1opJybBYcmuhnmsKKLCVks9iC9s9nux4sImhENcdTAwMDFcdTAwMTCwgsdBXHUwMDEwYj5hXHUwMDAzV3/kxX9cdTAwMDX6XHUwMDE2J2t8dH6teVx1MDAwZYRcdTAwMTBQfZaYgItYvuwqPDopJFb26Vx1MDAxN4tcdTAwMTCuXHUwMDE5qz7nsbgzVX1cdTAwMWW3noxp2zHZvVrxr6NaId/Mu2xcXKqGd4qd8Vx1MDAxYt5pa1uK/ZU4YoRcdTAwMDbsK6y4snVuv8XXXGJHx632ZSk7rDxcdTAwMGWPXk9cdTAwMDa1QfWo3lxccY0gXGJ3/DXdnDpcXFgjeumbXFzvOd+WXHUwMDEzXHUwMDA0VLCoWzBGXHUwMDE5XHUwMDE32t5e8cNNbFvfPfPM3r4s4vr9cUblmlx1MDAxOV5bQVx1MDAxM+s6xiogT0hic4SmK480kaf3+PJkv1x1MDAxNSsuT0w4kiHElTK1aVxc+WTLZ2FcdTAwMTcpW1x1MDAxNI0q2lx1MDAxNTHtXHUwMDE5TDFL77nFxDIh4a3uVsW1if00Y7lyr1MrXHUwMDFhS3bWaTXKvWq5312UhZ1iSvxcdTAwMTZ2ytKW4+BcdTAwMTJcdTAwMTLRQ4+EXHUwMDE5yuFcbmyMXHUwMDE1wkd8hZDplyqD3Uq3dnF2qSXbrew0evlcdTAwMTVXXGKE66jcOsdcdTAwMGVcdTAwMGJcdTAwMTlcIrGS/i0gO1x1MDAwMyWH/0jbO8hcdTAwMWXR5877XHUwMDFlXHUwMDFmPJZO3q5vq8VqKXZcdTAwMDfkXHUwMDFjY1xmVsWmY7e9XG6ON1x1MDAwMqsm7TGqYXxcdTAwMTm23+NcdTAwMTWXYaVcdTAwMWNzQFx1MDAxNlx1MDAxM1SB++k93jJDvdUx2lV4lX5cdTAwMGIyd0b7QX46zdFFdWOvmWlcdTAwMGX+jVibdL9J3853q4VWvlMypnOvk68s0GmeYrz8Jn3K0tJJXHUwMDEyR+usqIJ+UFx1MDAxNTLiuMhcZiZcdTAwMGWwrtSYYoUxWFxmy1x0VEh7nD9iSVx1MDAxMIPxVIRcdTAwMTJcciTNXHUwMDA0wCxZraIx7Pv+95WNXHUwMDE2XHUwMDEwmruyXHUwMDFmXFxcdTAwMTaiuGLWwn5cdTAwMTFqXHUwMDE5JFx1MDAxN+Bj0GXW9X98bIr87U39be+jSlx1MDAwZVx1MDAxZt9eNiunmcVcdTAwMWHU8bfTnmhcdTAwMTgmXHUwMDA05lx1MDAxNdz+k1x1MDAwYlx1MDAwNj5jaoX90Zpqw10nz7CiXFxcdTAwMTHJKaydYVx1MDAxNmyp9Fx1MDAwNngoS9aymHZLJaNcdTAwMDJ0lcZcXIJfrERwfrq3RjVxXHUwMDFmwpJcbvvt+z+gty21XHUwMDA2SCqHmlO6MWFcXFPsXHUwMDFkp1wiXHUwMDFjwrRcdTAwMTagXHUwMDA3XGKjTJJgXHUwMDEzPMbS0UaAmGnBRMxa6btaxXyrpKRx/FwiXHUwMDAy2IfceM22cXUkPJZcclxmKpikLO1GS1CZxJyXNIvK/MKtgybcoc/WxJU4+XNcbv74kcy+/IVcdTAwMGb/dlx1MDAwYql/noHQXHUwMDEyXHUwMDAxY1lcdTAwMTJcdTAwMTdcdTAwMDVE4jtl0aPyVtIp01x1MDAxYfhTmkZkgVx1MDAwNFx1MDAwYlx1MDAxNihcdTAwMTLHzIoxx0ZihJGYa+ZsoLFoXFx3ZUbsXHUwMDExgFtMXHUwMDEwp8Q69ltcdTAwMDEmK/Cc9aicXHUwMDEyXHUwMDA301x1MDAxOVpKij09XHUwMDEzP2Fa1LB3f9R+bTVlpbx7f3D0xDGi74tcdTAwMWShmJRjXHUwMDEycFx1MDAwMTgoiCmTXHUwMDAyhP2iiIVjlKOVXHUwMDAwyjHTfLg5XHUwMDFkdXaO8X7EXHUwMDFmNH87bLubVya40yNYdcGjuFx1MDAxOTWH4lwibNWLNL5etG/y1daLXHUwMDFjO1x1MDAxNIW2bppotJmCq1x1MDAxMLh6Ri/OddJUqGJM2P45Lp4yulrLXHUwMDE05ubNPq2LU4pnopyZXCJQMVpcdTAwMDRTRZ4plv5cdTAwMWI6XHUwMDE440zGdG1cdTAwMTWfqFNChWLMllkqIJEgLF17I3f9c8Jv6EO/evlaOlx1MDAxNbS12pJcdTAwMGW6SEZcctUgVHlKJ9lcIuPScUdjXG7FmVx1MDAwNElL4fyiJcJcdTAwMGVtXFx0d1x1MDAwZchhu3O0m7m+fetvv7ePk8GOXHUwMDA0sFx1MDAxMG7RWERcdTAwMDJH0FBBXHUwMDAxwuHIZFx1MDAwZWyCXCLjXHUwMDBiiv1WrLigXGKgNzAsXGZ8Y1x1MDAxM/nx9zcj4TDXXHUwMDEwS7owOeFslL4x0TKiibZcdTAwMDVPglZRMjPRyn3a8zdYRSmwa2WLtoqXXHUwMDFm3Y2/m9lSo9ZcXJBcdTAwMWScou/9dtAsyLeclOZZRjY8R2ZgXHUwMDEwizqdglx1MDAxMOJcdTAwMWT/bunQ04CKRiCwmf6u3Vx1MDAwNmKixLmvXCKARlxi21xuxfZK+W41ja79JME99csqdFx0MjBcdTAwMTRTeFTIloBxjUtcYoxWXHUwMDAz14soPEvX0Iz28KSRrVx1MDAxZty/V1x1MDAwN5k7PWzfXHUwMDBlXHUwMDA1e3hFPzH/XHUwMDEyLlx1MDAwMuaVXHTu/slcdTAwMDVcdTAwMDOfcflDLZGDlcSgmrWUXHUwMDFjbip1JY9+hy28R45ynCydXHUwMDExK/1cdTAwMTI9fMSzXFxcdTAwMDK3kFx0hVx1MDAxMFVmz1x1MDAwNlarPHdcdTAwMWLRRItdUu7FvvdcdTAwMDNcdTAwMWHbkntcdTAwMTmdT1x1MDAwNreAK3P2q88zXHUwMDA3+z6aXVx1MDAxOTGAmEtHmMOtzFAyRVx1MDAxMLVUS/+U1Mu3qOckJ3Zwzlx0QcFcdTAwMTNcdTAwMTmMJlx1MDAwZUVsJYnmaJahKNGZXHUwMDE3JJVmM9HXeDzC1Y5cdTAwMWLSv2+mZTTuXHUwMDA05iR4lr34s+uDg7QmPVwiXHUwMDE4Y4LdQ3FcXFtrop2n+k/Rk2i+W7ZCXHUwMDFjKDo6ZYMxXHUwMDBlWkdRRbzJXHUwMDE2uC2O4FxmKzOYXHUwMDE3UU1cdTAwMTbYN0ZcdTAwMWTEiSTAvlx1MDAxNDEzxcyCrMw7i8rVhj0+y56D1WTkh527+vHwkL07fj3YrGRcdTAwMDUv587va93NwpKoKya6PHT3bp+P71x1MDAxZkW7uslcdTAwMGZK/CV79rhnY1x1MDAwMTOPm1x1MDAxMmW6/7CGXHUwMDFkpVx1MDAwNVxyXHUwMDBlhcRcdTAwMGVcdTAwMDfkgjcgc5ajXHUwMDA2ePhWeuGYMExN7SWhXHUwMDAye85Z/cJcdTAwMTcmpJBcbmlcdTAwMDYuvuTJxof/pExQuFx1MDAxY5pXJiiCXHUwMDEx3Jyg7MUqXHUwMDAwcdCLKIBPiWEnYSywwt5QKSh3h0uT11x1MDAxM0DSiGvLaHFcIlx1MDAxZGBsxYG3ZciIjTV8hcNXNlx1MDAwMXyNyItcdTAwMGJcdTAwMTYwxiPlXHUwMDFlZqFhL2qipSDpj6dCSiPXrLtcdTAwMTn4y7TA/vW7S2dcdTAwMTU4bFxuhdg6eIPLTydcdTAwMDJcdTAwMTY9Qm+OXGJcdTAwMThIs+dIl1x0lUyEmnhnVFloXHUwMDAyNpXp2ENcdTAwMDKZXHUwMDBlXGJ3letaxje8Mr41d/xcdTAwMGKMieCmXHUwMDFlxlwi+VxchJZBXHUwMDE5goDnu9ThU+03WSixw36Rv1x1MDAxNEXhlF7tXHUwMDFmntZ/ZFxiXGZpb42ud7Z4oCNs6vVChWp0PSqA/Nwt39OuJ5XwXHUwMDFlLOO5XFxAPCNAI7VcdTAwMDBd/m1/u3iWVY1mvzzYXHUwMDFkKlXpqrKdXHUwMDE5wXYooFxcilx1MDAxNFx1MDAxM2DSZDDmNWfFcdqQi1x1MDAxNDJcdTAwMDNCKDdcdTAwMDPFhKfI54vKucP05MVcdTAwMTJS+ZLCdHb5jMGKxiFxJHBcdTAwMDR4icTUrniMXG5cYoAjXHSQXCKSWFDlOlhuTYopWZFcdTAwMDSkqDGVpu/OeqR3RCujMu1zrl6E9GqkQVxyzVbTuKqkOFx1MDAwNc9cdTAwMTZEiv/4rbd/5dvty1x1MDAxZdzjsXL7NaiV3zatpWjmZSzwSCGY7V9cdTAwMWXhx7/+8a//XHUwMDA3xE9l3yJ9 + + + + + Web UserDevice UserMosquitto MQTTBrokerBox 1Box 2Box NWeb ApplicationSubPubSubPubSubPubPubSubReq/ResPostgresGUI InputGUI InputGUI InputExternal AlertingSystemUserApp Threshold AlertNotificationEmail / TXTObservability StackTraces(Jager)Logs(Elastic/Kibana)Metrics(Prometheus)Dashboards(Grafana)Infra AlertsNotificationEmail / TXTSys AdminOTELLogs/MetricsLogs/Metrics \ No newline at end of file