-
Notifications
You must be signed in to change notification settings - Fork 319
/
Copy pathindex.html
2317 lines (2061 loc) · 167 KB
/
index.html
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html id="home" dir="ltr" lang="en-US" prefix="og: https://ogp.me/ns#">
<head>
<link rel="shortcut icon" type="image/png" href="https://img.thingsboard.io/favicon.png">
<link rel="preconnect" href="https://fonts.googleapis.com/">
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap" rel="stylesheet">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="profile" href="https://gmpg.org/xfn/11">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<title>Thingsboard's blog</title>
<!-- All in One SEO 4.6.5 - aioseo.com -->
<meta name="description" content="Thingsboard's blog">
<meta name="robots" content="max-image-preview:large">
<link rel="canonical" href="/blog/">
<link rel="next" href="/blog/page/2/">
<meta name="generator" content="All in One SEO (AIOSEO) 4.6.5">
<meta property="og:locale" content="en_US">
<meta property="og:site_name" content="Thingsboard's blog -">
<meta property="og:type" content="website">
<meta property="og:title" content="Thingsboard's blog">
<meta property="og:description" content="Thingsboard's blog">
<meta property="og:url" content="/blog/">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Thingsboard's blog">
<meta name="twitter:description" content="Thingsboard's blog">
<script type="application/ld+json" class="aioseo-schema">{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"\/blog\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"\/blog\/#listItem","position":1,"name":"Home"}]},{"@type":"CollectionPage","@id":"\/blog\/#collectionpage","url":"\/blog\/","name":"Thingsboard's blog","description":"Thingsboard's blog","inLanguage":"en-US","isPartOf":{"@id":"\/blog\/#website"},"breadcrumb":{"@id":"\/blog\/#breadcrumblist"},"about":{"@id":"\/blog\/#organization"}},{"@type":"Organization","@id":"\/blog\/#organization","name":"ThingsBoard","url":"\/blog\/","telephone":"+380953190586","logo":{"@type":"ImageObject","url":"https:\/\/wp.thingsboard.io\/wp-content\/uploads\/2024\/03\/thingsboard_logo_blue.svg","@id":"\/blog\/#organizationLogo"},"image":{"@id":"\/blog\/#organizationLogo"}},{"@type":"WebSite","@id":"\/blog\/#website","url":"\/blog\/","name":"ThingsBoard's blog","inLanguage":"en-US","publisher":{"@id":"\/blog\/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}}]}</script>
<!-- All in One SEO -->
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="dns-prefetch" href="//www.googletagmanager.com">
<link href="https://fonts.gstatic.com/" crossorigin rel="preconnect">
<!-- This site uses the Google Analytics by MonsterInsights plugin v9.4.1 - Using Analytics tracking - https://www.monsterinsights.com/ -->
<!-- Note: MonsterInsights is not currently configured on this site. The site owner needs to authenticate with Google Analytics in the MonsterInsights settings panel. -->
<!-- No tracking code set -->
<!-- / Google Analytics by MonsterInsights -->
<script>
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/","svgExt":".svg","source":{"concatemoji":"\/blog\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.4.5"}};
/*! This file is auto-generated */
!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"🏳️⚧️","🏳️⚧️")?!1:!n(e,"🇺🇳","🇺🇳")&&!n(e,"🏴","🏴");case"emoji":return!n(e,"🫱🏻🫲🏿","🫱🏻🫲🏿")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
</script>
<style id="wp-emoji-styles-inline-css">img.wp-smiley, img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 0.07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}</style>
<link rel="stylesheet" id="wp-block-library-css" href="/blog/wp-includes/css/dist/block-library/style.min.css?ver=6.4.5" media="all">
<style id="classic-theme-styles-inline-css">/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}</style>
<style id="global-styles-inline-css">body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #FFFFFF;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--blue: #59BACC;--wp--preset--color--green: #58AD69;--wp--preset--color--orange: #FFBC49;--wp--preset--color--red: #e32c26;--wp--preset--color--gray-50: #f8f9fa;--wp--preset--color--gray-100: #f8f9fb;--wp--preset--color--gray-200: #E0E0E0;--wp--preset--color--primary: #1D1D1F;--wp--preset--color--secondary: #616162;--wp--preset--color--layout: #f1f1f2;--wp--preset--color--border: #E4E4E4;--wp--preset--color--divider: #1D1D1F;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}</style>
<link rel="stylesheet" id="mkaz-code-syntax-prism-css-css" href="/blog/wp-content/plugins/code-syntax-block/assets/prism-a11y-dark.css?ver=1708529393" media="all">
<link rel="stylesheet" id="ub-extension-style-css-css" href="/blog/wp-content/plugins/ultimate-blocks/src/extensions/style.css?ver=6.4.5" media="all">
<link rel="stylesheet" id="csco-styles-css" href="/blog/wp-content/themes/swyft/style.css?ver=1.0.2" media="all">
<link rel="stylesheet" id="chld_thm_cfg_child-css" href="/blog/wp-content/themes/swyft-child/style.css?ver=6.4.5" media="all">
<link rel="stylesheet" id="9f9acad298c4b47002b81b4dd6912635-css" href="https://fonts.googleapis.com/css?family=Poppins%3A400%2C400i%2C500i%2C500%2C700%2C700i&subset=latin%2Clatin-ext%2Ccyrillic%2Ccyrillic-ext%2Cvietnamese&display=swap&ver=1.0.2" media="all">
<style id="cs-customizer-output-styles-inline-css">:root{--cs-light-site-background:#FFFFFF;--cs-dark-site-background:#1c1c1c;--cs-light-layout-background:#f1f1f2;--cs-dark-layout-background:#232323;--cs-light-primary-color:#1D1D1F;--cs-dark-primary-color:#FFFFFF;--cs-light-secondary-color:#616162;--cs-dark-secondary-color:#CDCBCA;--cs-light-accent-color:#305680;--cs-dark-accent-color:#634ffb;--cs-light-button-hover-background:#305680;--cs-dark-button-hover-background:#634ffb;--cs-light-button-hover-color:#FFFFFF;--cs-dark-button-hover-color:#FFFFFF;--cs-light-button-background:#1D1D1F;--cs-dark-button-background:#3e3e3e;--cs-light-button-color:#FFFFFF;--cs-dark-button-color:#FFFFFF;--cs-light-secondary-button-background:#EDEDED;--cs-dark-secondary-button-background:#3e3e3e;--cs-light-secondary-button-color:#1D1D1F;--cs-dark-secondary-button-color:#FFFFFF;--cs-light-border-color:#E4E4E4;--cs-dark-border-color:#343434;--cs-light-divider-color:#1D1D1F;--cs-dark-divider-color:#494949;--cs-layout-elements-border-radius:0px;--cs-thumbnail-border-radius:0px;--cs-button-border-radius:0px;--cs-heading-1-font-size:3.5rem;--cs-heading-2-font-size:3rem;--cs-heading-3-font-size:2.5rem;--cs-heading-4-font-size:2rem;--cs-heading-5-font-size:1.625rem;--cs-heading-6-font-size:1.5rem;--cs-header-initial-height:80px;--cs-header-height:80px;--cs-header-border-width:1px;}:root, [data-scheme="light"]{--cs-light-overlay-background-rgb:0,0,0;}:root, [data-scheme="dark"]{--cs-dark-overlay-background-rgb:0,0,0;}.cs-posts-area__home{--cs-posts-area-grid-row-gap:96px;--cs-entry-title-font-size:1.625rem;}.cs-posts-area__archive{--cs-posts-area-grid-row-gap:96px;--cs-entry-title-font-size:1.625rem;}.cs-read-next .cs-posts-area__read-next{--cs-posts-area-grid-row-gap:96px;}.cs-posts-area__read-next{--cs-entry-title-font-size:1.625rem;}@media (max-width: 1199.98px){.cs-posts-area__home{--cs-posts-area-grid-row-gap:48px;--cs-entry-title-font-size:1.625rem;}.cs-posts-area__archive{--cs-posts-area-grid-row-gap:48px;--cs-entry-title-font-size:1.625rem;}.cs-read-next .cs-posts-area__read-next{--cs-posts-area-grid-row-gap:48px;}.cs-posts-area__read-next{--cs-entry-title-font-size:1.625rem;}}@media (max-width: 991.98px){.cs-posts-area__home{--cs-posts-area-grid-row-gap:40px;--cs-entry-title-font-size:1.5rem;}.cs-posts-area__archive{--cs-posts-area-grid-row-gap:40px;--cs-entry-title-font-size:1.5rem;}.cs-posts-area__read-next{--cs-entry-title-font-size:1.5rem;}}@media (max-width: 575.98px){.cs-posts-area__home{--cs-posts-area-grid-row-gap:40px;--cs-entry-title-font-size:1.5rem;}.cs-posts-area__archive{--cs-posts-area-grid-row-gap:40px;--cs-entry-title-font-size:1.5rem;}.cs-read-next .cs-posts-area__read-next{--cs-posts-area-grid-row-gap:40px;}.cs-posts-area__read-next{--cs-entry-title-font-size:1.5rem;}}</style>
<meta name="generator" content="WordPress 6.4.5">
<meta name="cdp-version" content="1.4.6">
<meta name="generator" content="Site Kit by Google 1.122.0">
<style></style>
<style id="cs-theme-typography">:root {
/* Base Font */
--cs-font-base-family: Poppins;
--cs-font-base-size: 1rem;
--cs-font-base-weight: 400;
--cs-font-base-style: normal;
--cs-font-base-letter-spacing: normal;
--cs-font-base-line-height: 1.5;
/* Primary Font */
--cs-font-primary-family: Poppins;
--cs-font-primary-size: 0.8125rem;
--cs-font-primary-weight: 700;
--cs-font-primary-style: normal;
--cs-font-primary-letter-spacing: 0.08em;
--cs-font-primary-text-transform: uppercase;
--cs-font-primary-line-height: 1.2;
/* Secondary Font */
--cs-font-secondary-family: Poppins;
--cs-font-secondary-size: 0.8125rem;
--cs-font-secondary-weight: 400;
--cs-font-secondary-style: normal;
--cs-font-secondary-letter-spacing: -0.01em;
--cs-font-secondary-text-transform: none;
--cs-font-secondary-line-height: 1.2;
/* Post Title Font Size */
--cs-font-post-title-family: Epilogue;
--cs-font-post-title-weight: 600;
--cs-font-post-title-size: 3.5rem;
--cs-font-post-title-letter-spacing: -0.02em;
--cs-font-post-title-line-height: 1.12;
/* Post Subbtitle */
--cs-font-post-subtitle-family: Manrope;
--cs-font-post-subtitle-weight: 500;
--cs-font-post-subtitle-size: 1.25rem;
--cs-font-post-subtitle-letter-spacing: -0.01em;
--cs-font-post-subtitle-line-height: 1.4;
/* Post Category Font */
--cs-font-category-family: Manrope;
--cs-font-category-size: 0.9375rem;
--cs-font-category-weight: 600;
--cs-font-category-style: normal;
--cs-font-category-letter-spacing: -0.01em;
--cs-font-category-text-transform: none;
--cs-font-category-line-height: 1.2;
/* Post Meta Font */
--cs-font-post-meta-family: Manrope;
--cs-font-post-meta-size: 1rem;
--cs-font-post-meta-weight: 700;
--cs-font-post-meta-style: normal;
--cs-font-post-meta-letter-spacing: -0.01em;
--cs-font-post-meta-text-transform: none;
--cs-font-post-meta-line-height: 1.2;
/* Post Content */
--cs-font-post-content-family: Manrope;
--cs-font-post-content-weight: 500;
--cs-font-post-content-size: 1.25rem;
--cs-font-post-content-letter-spacing: -0.01em;
--cs-font-post-content-line-height: 1.5;
/* Input Font */
--cs-font-input-family: Manrope;
--cs-font-input-size: 1rem;
--cs-font-input-weight: 500;
--cs-font-input-style: normal;
--cs-font-input-line-height: 1.4rem;
--cs-font-input-letter-spacing: -0.025em;
--cs-font-input-text-transform: none;
/* Entry Title Font Size */
--cs-font-entry-title-family: Epilogue;
--cs-font-entry-title-weight: 600;
--cs-font-entry-title-letter-spacing: -0.01em;
--cs-font-entry-title-line-height: 1.2;
/* Entry Excerpt */
--cs-font-entry-excerpt-family: Manrope;
--cs-font-entry-excerpt-weight: 500;
--cs-font-entry-excerpt-size: 1.125rem;
--cs-font-entry-excerpt-letter-spacing: -0.01em;
--cs-font-entry-excerpt-line-height: 1.4;
/* Logos --------------- */
/* Main Logo */
--cs-font-main-logo-family: Inter;
--cs-font-main-logo-size: 1.375rem;
--cs-font-main-logo-weight: 700;
--cs-font-main-logo-style: normal;
--cs-font-main-logo-letter-spacing: -0.04em;
--cs-font-main-logo-text-transform: none;
/* Footer Logo */
--cs-font-footer-logo-family: Inter;
--cs-font-footer-logo-size: 1.375rem;
--cs-font-footer-logo-weight: 700;
--cs-font-footer-logo-style: normal;
--cs-font-footer-logo-letter-spacing: -0.04em;
--cs-font-footer-logo-text-transform: none;
/* Headings --------------- */
/* Headings */
--cs-font-headings-family: Poppins;
--cs-font-headings-weight: 400;
--cs-font-headings-style: normal;
--cs-font-headings-line-height: 1.12;
--cs-font-headings-letter-spacing: -0.02em;
--cs-font-headings-text-transform: none;
/* Menu Font --------------- */
/* Menu */
/* Used for main top level menu elements. */
--cs-font-menu-family: Poppins;
--cs-font-menu-size: 1rem;
--cs-font-menu-weight: 400;
--cs-font-menu-style: normal;
--cs-font-menu-letter-spacing: -0.03125em;
--cs-font-menu-text-transform: none;
--cs-font-menu-line-height: 1.2;
/* Submenu Font */
/* Used for submenu elements. */
--cs-font-submenu-family: Poppins;
--cs-font-submenu-size: 1rem;
--cs-font-submenu-weight: 400;
--cs-font-submenu-style: normal;
--cs-font-submenu-letter-spacing: -0.03125em;
--cs-font-submenu-text-transform: none;
--cs-font-submenu-line-height: 1.2;
/* Footer Menu */
--cs-font-footer-menu-family: Poppins;
--cs-font-footer-menu-size: 1rem;
--cs-font-footer-menu-weight: 400;
--cs-font-footer-menu-style: normal;
--cs-font-footer-menu-letter-spacing: -0.03125em;
--cs-font-footer-menu-text-transform: none;
--cs-font-footer-menu-line-height: 1.2;
/* Footer Submenu Font */
--cs-font-footer-submenu-family: Poppins;
--cs-font-footer-submenu-size: 1rem;
--cs-font-footer-submenu-weight: 400;
--cs-font-footer-submenu-style: normal;
--cs-font-footer-submenu-letter-spacing: -0.03125em;
--cs-font-footer-submenu-text-transform: none;
--cs-font-footer-submenu-line-height: 1.2;
}</style>
<meta name="generator" content="Elementor 3.19.2; features: e_optimized_assets_loading, e_optimized_css_loading, e_font_icon_svg, additional_custom_breakpoints, block_editor_assets_optimize, e_image_loading_optimization; settings: css_print_method-external, google_font-enabled, font_display-swap">
<!-- Google Tag Manager snippet added by Site Kit -->
<script>( function( w, d, s, l, i ) {
w[l] = w[l] || [];
w[l].push( {'gtm.start': new Date().getTime(), event: 'gtm.js'} );
var f = d.getElementsByTagName( s )[0],
j = d.createElement( s ), dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore( j, f );
} )( window, document, 'script', 'dataLayer', 'GTM-TGBNQXN' );</script>
<!-- End Google Tag Manager snippet added by Site Kit -->
<style id="wp-custom-css">.is-style-cs-tiles > li > a {
background: #F0F7FB;
border-radius: 6px;
color: #1F2020;
}
.cs-entry__post-meta .cs-meta-category .post-categories li a{
border-radius: 6px;
}
.is-style-cs-tiles > li > a:active{
background: #E2F0F8;
color: #0000008A;
}
.is-style-cs-about{
background: #F0F7FB;
border-radius: 12px;
}
.post-template-default > .cs-site > .cs-site-inner > .cs-site-primary >
.cs-site-content > .cs-container > .cs-main-content > .cs-widget-area > .cs-sidebar__inner{
display: none
}
.post-template-default > .cs-site > .cs-site-inner > .cs-site-primary >
.cs-site-content > .cs-container > .cs-main-content {
display: block;
}
.cs-overlay-ratio:not(.cs-ratio-original) .cs-overlay-background img {
border-radius: 12px;
}
.cs-hero-type-1__slider{
border-radius: 12px;
}
.wp-block-cover{
border-radius: 12px;
}
.cs-widget-area .widget_block > .wp-block-group > .wp-block-group__inner-container > .wp-block-heading{
font-size: 24px;
font-weight: 400;
line-height: 32px;
}
.cs-sidebar__area .widget:not(:last-child){
margin-bottom: 32px;
padding-bottom: 32px
}
.is-style-cs-promo .has-background-dim + img + .wp-block-cover__inner-container .wp-block-button a {
border-radius: 6px;
}
.is-style-cs-about p {
color: #393B3C;
}
.has-white-color {
color: #FFFFFF !important;
}
[data-scheme=dark] .cs-display-only-light {
display: block !important;
}
.cs-navbar-smart-enabled .cs-header{
top: 0px;
}
#secondary{
position: relative;
}
.cs-overlay-background{
border-radius: 12px;
}</style>
</head>
<body class="home blog wp-embed-responsive cs-page-layout-right cs-navbar-smart-enabled cs-sticky-sidebar-enabled cs-stick-last elementor-default elementor-kit-2732" data-scheme="light">
<!-- Google Tag Manager (noscript) snippet added by Site Kit -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TGBNQXN" height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) snippet added by Site Kit -->
<div class="cs-site-overlay"></div>
<div class="cs-offcanvas">
<div class="cs-offcanvas__header">
<div class="cs-logo">
<a class="cs-header__logo cs-logo-once " href="/blog/">
Thingsboard's blog </a>
</div>
<nav class="cs-offcanvas__nav">
<span class="cs-offcanvas__toggle" role="button" aria-label="Close mobile menu button"><i class="cs-icon cs-icon-x"></i></span>
</nav>
</div>
<aside class="cs-offcanvas__sidebar">
<div class="cs-offcanvas__inner cs-offcanvas__area cs-widget-area">
<div class="widget widget_nav_menu"></div>
<div class="cs-offcanvas__button">
<a class="cs-button cs-offcanvas__button" href="https://thingsboard.io/installations/" target="_blank">
Try it now </a>
</div>
<div class="widget block-5 widget_block"><div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container">
<h2 class="wp-block-heading">Archives</h2>
<ul class="wp-block-archives-list wp-block-archives"> <li><a href="/blog/2025/03/">March 2025</a></li>
<li><a href="/blog/2025/02/">February 2025</a></li>
<li><a href="/blog/2025/01/">January 2025</a></li>
<li><a href="/blog/2024/12/">December 2024</a></li>
<li><a href="/blog/2024/11/">November 2024</a></li>
<li><a href="/blog/2024/10/">October 2024</a></li>
<li><a href="/blog/2024/09/">September 2024</a></li>
<li><a href="/blog/2024/08/">August 2024</a></li>
<li><a href="/blog/2024/07/">July 2024</a></li>
<li><a href="/blog/2024/06/">June 2024</a></li>
<li><a href="/blog/2024/05/">May 2024</a></li>
<li><a href="/blog/2024/04/">April 2024</a></li>
<li><a href="/blog/2024/03/">March 2024</a></li>
<li><a href="/blog/2024/02/">February 2024</a></li>
<li><a href="/blog/2023/12/">December 2023</a></li>
</ul>
</div></div></div>
<div class="widget block-6 widget_block"><div class="wp-block-group is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-group__inner-container">
<h2 class="wp-block-heading">Categories</h2>
<ul class="wp-block-categories-list wp-block-categories"> <li class="cat-item cat-item-157">
<a href="/blog/category/business/">Business</a>
</li>
<li class="cat-item cat-item-142">
<a href="/blog/category/community/">Community</a>
</li>
<li class="cat-item cat-item-141">
<a href="/blog/category/company/">Company</a>
</li>
<li class="cat-item cat-item-156">
<a href="/blog/category/guides/">Guides</a>
</li>
<li class="cat-item cat-item-134">
<a href="/blog/category/solutions/">Solutions</a>
</li>
<li class="cat-item cat-item-140">
<a href="/blog/category/tech/">Tech</a>
</li>
<li class="cat-item cat-item-143">
<a href="/blog/category/updates/">Updates</a>
</li>
<li class="cat-item cat-item-154">
<a href="/blog/category/use-cases/">Use cases</a>
</li>
</ul>
</div></div></div>
<div class="cs-offcanvas__bottombar">
<div class="cs-social">
</div>
<span class="cs-site-scheme-toggle cs-offcanvas__scheme-toggle" role="button" aria-label="Scheme Toggle">
<span class="cs-header__scheme-toggle-icons">
<i class="cs-header__scheme-toggle-icon cs-icon cs-icon-light-mode"></i>
<i class="cs-header__scheme-toggle-icon cs-icon cs-icon-dark-mode"></i>
</span>
</span>
</div>
</div>
</aside>
</div>
<div id="page" class="cs-site">
<div class="cs-site-inner">
<div class="cs-header-before"></div>
<header class="cs-header cs-header-stretch">
<div class="logo-burger">
<a href="https://u24.gov.ua/" target="_blank" class="support-ukraine">
<img src="https://img.thingsboard.io/support-ukraine-banner.webp" alt="Stand with Ukraine flag" width="48" height="31">
</a>
<a href="https://thingsboard.io/" class="logo" aria-label="Link to homepage"></a>
<button onclick="Burger()" class="burger" aria-label="Burger menu"></button>
<div id="githubButtonContainer">
<a class="github-button" href="https://github.com/thingsboard/thingsboard" data-show-count="true" aria-label="Star thingsboard/thingsboard on GitHub">Star</a>
</div>
</div>
<nav class="head-menu">
<ul style="padding: 0">
<li class="nav-products" data-submenu-id="nav-products">
<span class="main-menu-link" onclick="listburg('nav-products')">Products</span>
</li>
<li class="nav-services" data-submenu-id="nav-services">
<span class="main-menu-link" onclick="listburg('nav-services')">Services</span>
</li>
<li class="nav-cases" data-submenu-id="nav-cases">
<a class="main-menu-link" id="use-cases-link" href="https://thingsboard.io/iot-use-cases/" style="cursor: pointer;">Use Cases</a>
</li>
<li class="nav-customers" data-submenu-id="nav-customers">
<span class="main-menu-link" onclick="listburg('nav-customers')">Customers</span>
</li>
<li class="nav-company" data-submenu-id="nav-company">
<span class="main-menu-link" onclick="listburg('nav-company')">Company</span>
</li>
<li class="nav-partners" data-submenu-id="nav-partners">
<span class="main-menu-link" onclick="listburg('nav-partners')">Partners</span>
</li>
<li class="nav-docs" data-submenu-id="nav-docs">
<span class="main-menu-link" onclick="listburg('nav-docs')">Docs</span>
</li>
<li class="blog">
<a href="https://thingsboard.io/blog/">Blog</a>
</li>
</ul>
<div class="indicator">
<div class="head-arrow"></div>
<div class="line"></div>
<div class="sub-background"></div>
</div>
<div class="sub-menu-container">
<div id="nav-products" class="centered-sub">
<ul class="sub-menu products">
<li class="sub-groups">
<div class="group">
<div class="column">
<p class="group-name">IoT platforms</p>
<a class="com-lnk" href="https://thingsboard.io/">
<img src="https://img.thingsboard.io/thingsboard-cm-icon.svg" alt="Community Edition icon" width="32" height="32" loading="lazy">
<div class="sub-text">
<span class="item-heading">Community Edition</span>
<p>Open-source platform</p>
</div>
</a>
</div>
<div class="column">
<p class="group-name"> </p>
<a class="prof-lnk" href="https://thingsboard.io/products/thingsboard-pe/">
<img src="https://img.thingsboard.io/thingsboard-p-icon.svg" alt="Professional Edition icon" width="32" height="32" loading="lazy">
<div class="sub-text">
<span class="item-heading">Professional Edition</span>
<p>Advanced IoT platform</p>
</div>
</a>
</div>
<div class="column">
<p class="group-name"> </p>
<a class="cloud-lnk" href="https://thingsboard.io/products/paas/">
<img src="https://img.thingsboard.io/thingsboard-c-icon.svg" alt="Cloud icon" width="32" height="32" loading="lazy">
<div class="sub-text">
<span class="item-heading">Cloud</span>
<p>Platform as a service</p>
</div>
</a>
</div>
</div>
<div class="group">
<div class="column">
<p class="group-name">Product ecosystem</p>
<a class="edge-lnk" href="https://thingsboard.io/products/thingsboard-edge/">
<img src="https://img.thingsboard.io/thingsboard-e-icon.svg" alt="Edge icon" width="32" height="32" loading="lazy">
<div class="sub-text">
<span class="item-heading">Edge</span>
<p>Edge computing</p>
</div>
</a>
<a class="gateway-lnk" href="https://thingsboard.io/docs/iot-gateway/what-is-iot-gateway/">
<img src="https://img.thingsboard.io/gateway-icon.svg" alt="IoT Gateway icon" width="32" height="32" loading="lazy">
<div class="sub-text">
<span class="item-heading">IoT Gateway</span>
<p>Connect legacy protocols</p>
</div>
</a>
</div>
<div class="column">
<p class="group-name"> </p>
<a class="mobile-lnk" href="https://thingsboard.io/products/mobile/">
<img src="https://img.thingsboard.io/tb-mobile-icon.svg" alt="Device icon" width="32" height="32" loading="lazy">
<div class="sub-text">
<span class="item-heading">Mobile Application</span>
<p>IoT mobile product</p>
</div>
</a>
<a class="mobile-pe-lnk" href="https://thingsboard.io/products/mobile-pe/">
<img src="https://img.thingsboard.io/tb-pe-mobile-icon.svg" alt="PE Mobile Application icon" width="32" height="32" loading="lazy">
<div class="sub-text">
<span class="item-heading">PE Mobile Application</span>
<p>Advanced IoT mobile product</p>
</div>
</a>
</div>
<div class="column">
<p class="group-name"> </p>
<a class="mqtt-broker-lnk" href="https://thingsboard.io/products/mqtt-broker/">
<img src="https://img.thingsboard.io/tbmq-icon.svg" alt="MQTT Broker icon" width="32" height="32" loading="lazy">
<div class="sub-text">
<span class="item-heading">TBMQ</span>
<p>Scalable MQTT broker</p>
</div>
</a>
<a class="trendz-lnk" href="https://thingsboard.io/products/trendz/">
<img src="https://img.thingsboard.io/trendz-icon.svg" alt="Trendz Analytics icon" width="32" height="32" loading="lazy">
<div class="sub-text">
<span class="item-heading">Trendz Analytics</span>
<p>Data analytics and Prediction</p>
</div>
</a>
</div>
</div>
</li>
</ul>
</div>
<div id="nav-services" class="centered-sub">
<ul class="sub-menu services">
<li class="sub-groups">
<div class="group">
<div class="column">
<a href="https://thingsboard.io/services/development-services/">
<img src="https://img.thingsboard.io/development-services.svg" alt="Development services icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Development services</span>
<p>IoT Solutions development</p>
</div>
</a>
<a href="https://thingsboard.io/services/support/">
<img src="https://img.thingsboard.io/support-icon.svg" alt="Support icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Support</span>
<p>Support packages</p>
</div>
</a>
<a href="https://thingsboard.io/services/trainings/">
<img src="https://img.thingsboard.io/train-icon.svg" alt="Trainings icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Trainings</span>
<p>ThingsBoard education courses</p>
</div>
</a>
</div>
</div>
</li>
</ul>
</div>
<div id="nav-cases" class="centered-sub">
<ul class="sub-menu cases">
<li class="sub-groups">
<div class="group">
<div class="column">
<a href="https://thingsboard.io/smart-energy/">
<img src="https://img.thingsboard.io/case-eng-icon.svg" alt="Smart Energy icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Smart energy</span>
<p>Energy monitoring and efficiency</p>
</div>
</a>
<a href="https://thingsboard.io/use-cases/environment-monitoring/">
<img src="https://img.thingsboard.io/case-env-icon.svg" alt="Environment Monitoring icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Environment monitoring</span>
<p>Indoor & outdoor environment analysis</p>
</div>
</a>
<a href="https://thingsboard.io/use-cases/smart-office/">
<img src="https://img.thingsboard.io/case-off-icon.svg" alt="Smart Office icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Smart office</span>
<p>Boost productivity & optimize resources</p>
</div>
</a>
<a href="https://thingsboard.io/use-cases/water-metering/">
<img src="https://img.thingsboard.io/case-wat-icon.svg" alt="Water Metering icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Water metering</span>
<p>Water use analysis & fraud detection</p>
</div>
</a>
<a href="https://thingsboard.io/use-cases/smart-retail/">
<img src="https://img.thingsboard.io/case-ret-icon.svg" alt="Smart Retail icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Smart retail</span>
<p>Food storage & safety monitoring</p>
</div>
</a>
</div>
<div class="column">
<a href="https://thingsboard.io/smart-farming/">
<img src="https://img.thingsboard.io/case-fam-icon.svg" alt="Smart Farming icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Smart farming</span>
<p>Remote soil & equipment monitoring</p>
</div>
</a>
<a href="https://thingsboard.io/fleet-tracking/">
<img src="https://img.thingsboard.io/case-trk-icon.svg" alt="Fleet Tracking icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Fleet tracking</span>
<p>Fleet tracking & management</p>
</div>
</a>
<a href="https://thingsboard.io/use-cases/health-care/">
<img src="https://img.thingsboard.io/case-health-care-icon.svg" alt="Health Care icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Health care</span>
<p>Smart assisted living solution</p>
</div>
</a>
<a href="https://thingsboard.io/smart-metering/">
<img src="https://img.thingsboard.io/case-met-icon.svg" alt="Smart Metering icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Smart metering</span>
<p>Meter data collection & analysis</p>
</div>
</a>
<a href="https://thingsboard.io/use-cases/air-quality-monitoring/">
<img src="https://img.thingsboard.io/case-aq-icon.svg" alt="Air Quality Monitoring icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Air quality monitoring</span>
<p>Monitor AQI using wide range of sensors</p>
</div>
</a>
</div>
<div class="column">
<a href="https://thingsboard.io/use-cases/smart-irrigation/">
<img src="https://img.thingsboard.io/smart-irrigation.svg" alt="Smart Irrigation icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Smart irrigation</span>
<p>Soil moisture & irrigation control</p>
</div>
</a>
<a href="https://thingsboard.io/use-cases/waste-management/">
<img src="https://img.thingsboard.io/case-waste-icon.svg" alt="Waste Management icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Waste management</span>
<p>Real-time waste management</p>
</div>
</a>
<a href="https://thingsboard.io/use-cases/tank-level-monitoring/">
<img src="https://img.thingsboard.io/case-level-icon.svg" alt="Tank Level Monitoring icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Tank level monitoring</span>
<p>Fuel tank location & level monitoring</p>
</div>
</a>
</div>
</div>
<div class="group">
<div class="column">
<p class="group-name">SCADA</p>
<a href="https://thingsboard.io/use-cases/scada/">
<img src="https://img.thingsboard.io/case-scada-icon.svg" alt="SCADA icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Swimming pool</span>
<p>Control industrial processes in real time</p>
</div>
</a>
</div>
</div>
</li>
</ul>
</div>
<div id="nav-customers" class="centered-sub">
<ul class="sub-menu customers">
<li class="sub-groups">
<div class="group">
<div class="column">
<a class="small-link" href="https://thingsboard.io/industries/smart-energy/">
<img src="https://img.thingsboard.io/se-s-icon.svg" alt="Smart Energy icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Smart energy</span>
</div>
</a>
<a class="small-link" href="https://thingsboard.io/industries/agriculture/">
<img src="https://img.thingsboard.io/agr-s-icon.svg" alt="Agriculture icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Agriculture</span>
</div>
</a>
<a class="small-link" href="https://thingsboard.io/industries/telecom/">
<img src="https://img.thingsboard.io/tel-s-icon.svg" alt="Telecom icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Telecom</span>
</div>
</a>
<a class="small-link" href="https://thingsboard.io/industries/warehouse-monitoring/">
<img src="https://img.thingsboard.io/sb-s-icon.svg" alt="Warehouse Monitoring icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Warehouse monitoring</span>
</div>
</a>
</div>
<div class="column">
<a class="small-link" href="https://thingsboard.io/industries/smart-city/">
<img src="https://img.thingsboard.io/sc-s-icon.svg" alt="Smart City icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Smart city</span>
</div>
</a>
<a class="small-link" href="https://thingsboard.io/industries/smart-buildings/">
<img src="https://img.thingsboard.io/sb-s-icon.svg" alt="Smart Buildings icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Smart buildings</span>
</div>
</a>
<a class="small-link" href="https://thingsboard.io/industries/industry40/">
<img src="https://img.thingsboard.io/in-s-icon.svg" alt="Industry 4.0 icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Industry 4.0</span>
</div>
</a>
</div>
</div>
</li>
</ul>
</div>
<div id="nav-company" class="centered-sub">
<ul class="sub-menu about">
<li class="sub-groups">
<div class="group">
<div class="column">
<a class="small-link" href="https://thingsboard.io/company/">
<img src="https://img.thingsboard.io/about-s-icon.svg" alt="About Our Company icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Our company</span>
</div>
</a>
<a class="small-link" href="https://thingsboard.io/docs/contact-us/">
<img src="https://img.thingsboard.io/contact-s-icon.svg" alt="Contact Us icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Contact us</span>
</div>
</a>
<a class="small-link" href="https://thingsboard.io/mediakit/">
<img src="https://img.thingsboard.io/media-s-icon.svg" alt="Media Kit icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Media kit</span>
</div>
</a>
<a class="small-link" href="https://thingsboard.io/careers/">
<img src="https://img.thingsboard.io/careers-s-icon.svg" alt="Careers icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Careers</span>
</div>
</a>
</div>
</div>
</li>
</ul>
</div>
<div id="nav-partners" class="centered-sub">
<ul class="sub-menu about">
<li class="sub-groups">
<div class="group">
<div class="column">
<a class="small-link" href="https://thingsboard.io/partners/hardware/">
<img src="https://img.thingsboard.io/hard-s-icon.svg" alt="Hardware partners icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Hardware partners</span>
</div>
</a>
<a class="small-link" href="https://thingsboard.io/partners/distributors/">
<img src="https://img.thingsboard.io/dis-s-icon.svg" alt="Distributors icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Distributors</span>
</div>
</a>
<a class="small-link" href="https://thingsboard.io/partners/marketplace/">
<img src="https://img.thingsboard.io/marketplace-s-icon.svg" alt="Marketplace icon" width="24" height="24" loading="lazy">
<div class="sub-text">
<span class="item-heading">Marketplace</span>
</div>
</a>
</div>
</div>
</li>
</ul>
</div>
<div id="nav-docs" class="centered-sub">
<ul class="sub-menu products">
<li class="sub-groups">
<div class="group">
<div class="column">
<p class="group-name">IoT platforms</p>
<a class="com-lnk" href="https://thingsboard.io/docs/">
<div class="sub-text">
<span class="item-heading">Community Edition</span>
<p>Open-source platform</p>
</div>
</a>
</div>
<div class="column">
<p class="group-name"> </p>
<a class="prof-lnk" href="https://thingsboard.io/docs/pe/">
<div class="sub-text">
<span class="item-heading">Professional Edition</span>
<p>Advanced IoT platform</p>
</div>
</a>
</div>
<div class="column">
<p class="group-name"> </p>
<a id="cloud-documentation" class="cloud-lnk" href="https://thingsboard.io/docs/paas/">
<div class="sub-text">
<span class="item-heading">Cloud</span>
<p>Platform as a service</p>
</div>
</a>
</div>
</div>
<div class="group">
<div class="column">
<p class="group-name">Product ecosystem</p>
<a class="edge-lnk" href="https://thingsboard.io/docs/edge/">
<div class="sub-text">
<span class="item-heading">Edge</span>
<p>Edge computing</p>
</div>
</a>
<a class="gateway-lnk" href="https://thingsboard.io/docs/iot-gateway/">
<div class="sub-text">
<span class="item-heading">IoT Gateway</span>
<p>Connect legacy protocols</p>
</div>
</a>
</div>
<div class="column">
<p class="group-name"> </p>
<a class="mobile-lnk" href="https://thingsboard.io/docs/mobile/">
<div class="sub-text">
<span class="item-heading">Mobile Application</span>
<p>IoT mobile product</p>
</div>
</a>
<a class="mobile-pe-lnk" href="https://thingsboard.io/docs/pe/mobile/">
<div class="sub-text">
<span class="item-heading">PE Mobile Application</span>
<p>Advanced IoT mobile product</p>
</div>
</a>
</div>
<div class="column">
<p class="group-name"> </p>
<a class="mqtt-broker-lnk" href="https://thingsboard.io/docs/mqtt-broker/">
<div class="sub-text">
<span class="item-heading">TBMQ</span>
<p>Scalable MQTT broker</p>
</div>
</a>
<a class="trendz-lnk" href="https://thingsboard.io/docs/trendz/">
<div class="sub-text">
<span class="item-heading">Trendz Analytics</span>
<p>Data analytics and Prediction</p>
</div>
</a>
</div>
</div>
</li>
</ul>
</div>
</div>
</nav>
<div class="header-right-side">
<div class="theme_toggle">
<span class="cs-site-scheme-toggle cs-header__scheme-toggle" role="button" aria-label="Dark mode toggle button">
<span class="cs-header__scheme-toggle-icons">
<i class="cs-header__scheme-toggle-icon cs-icon cs-icon-light-mode"></i>
<i class="cs-header__scheme-toggle-icon cs-icon cs-icon-dark-mode"></i>
</span>
</span>
</div>
<div class="search-container">
<div class="search-input-results">
<input id="searchInput" placeholder="Search..." oninput="searchPosts()" autocomplete="off">
<div id="clearSearchInput" class="clear-icon">
<svg width="24" height="24" viewbox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41Z" fill="black" fill-opacity="0.54"></path>
</svg>
</div>
<div id="input-results" class="hidden">
</div>
</div>
<i class="searchIcon">
<svg width="40" height="40" viewbox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M27.6 29L21.3 22.7C20.8 23.1 20.225 23.4167 19.575 23.65C18.925 23.8833 18.2333 24 17.5 24C15.6833 24 14.1458 23.3708 12.8875 22.1125C11.6292 20.8542 11 19.3167 11 17.5C11 15.6833 11.6292 14.1458 12.8875 12.8875C14.1458 11.6292 15.6833 11 17.5 11C19.3167 11 20.8542 11.6292 22.1125 12.8875C23.3708 14.1458 24 15.6833 24 17.5C24 18.2333 23.8833 18.925 23.65 19.575C23.4167 20.225 23.1 20.8 22.7 21.3L29 27.6L27.6 29ZM17.5 22C18.75 22 19.8125 21.5625 20.6875 20.6875C21.5625 19.8125 22 18.75 22 17.5C22 16.25 21.5625 15.1875 20.6875 14.3125C19.8125 13.4375 18.75 13 17.5 13C16.25 13 15.1875 13.4375 14.3125 14.3125C13.4375 15.1875 13 16.25 13 17.5C13 18.75 13.4375 19.8125 14.3125 20.6875C15.1875 21.5625 16.25 22 17.5 22Z" fill="#1D1D1F"></path>
</svg>
</i>
</div>
<div class="header-buttons">
<a href="https://thingsboard.io/installations/" class="n-button try">Try it now</a>
<a href="https://thingsboard.io/pricing/" class="n-button price">Pricing</a>
</div>
</div>
<script>const postsData = [{"title":"“A whole new world of possibilities”","excerpt":"Welcome back to Part 2 of our conversation with Volodymyr Babak – ThingsBoard Edge solution architect! In the…","categories":[{"name":"Company","link":"\/blog\/category\/company\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2025\/03\/A-Whole-New-World-of-Possibilities_-An-Exclusive-Interview-with-Edge-Architect-2-1-300x133.webp","link":"\/blog\/a-whole-new-world-of-possibilities-interview-with-edge-architect-part-2\/"},{"title":"“A whole new world of possibilities”","excerpt":"On March 23, the ThingsBoard team celebrated the third anniversary of the ThingsBoard Edge. On this joyous occasion,…","categories":[{"name":"Company","link":"\/blog\/category\/company\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2025\/03\/A-Whole-New-World-of-Possibilities_-An-Exclusive-Interview-with-Edge-Architect-2-300x133.webp","link":"\/blog\/a-whole-new-world-of-possibilities-interview-with-edge-architect-part-1\/"},{"title":"IoT Made Easy","excerpt":"Seeed Studio and ThingsBoard have formed a partnership to make IoT solutions more accessible. By combining powerful hardware…","categories":[{"name":"Company","link":"\/blog\/category\/company\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2025\/02\/IoT-Made-Easy_-Seamless-Integration-with-Seeed-Studio-ThingsBoard2-300x133.webp","link":"\/blog\/iot-made-easy-seamless-integration-with-seeed-studio-thingsboard\/"},{"title":"1 Million reasons","excerpt":"Can an open-source MQTT broker handle one million messages per second for persistent sessions? TBMQ 2.x proves it…","categories":[{"name":"Guides","link":"\/blog\/category\/guides\/"},{"name":"Tech","link":"\/blog\/category\/tech\/"},{"name":"Updates","link":"\/blog\/category\/updates\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2025\/01\/Cover-1-Million-Reasons-300x133.webp","link":"\/blog\/1-million-reasons-to-choose-tbmq-as-high-performance-mqtt-broker\/"},{"title":"ThingsBoard Edge 3.9.0 Release","excerpt":"We are excited to announce the release of the latest version of ThingsBoard Edge! This release brings most…","categories":[{"name":"Updates","link":"\/blog\/category\/updates\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2025\/01\/ThingsBoard-Edge-3.9.0-Release_-Apache-Kafka-Cassandra-support-and-more-300x133.png","link":"\/blog\/thingsboard-edge-3-9-0-release-kafka-cassandra-and-more\/"},{"title":"Breakthrough Agricultural Solutions","excerpt":"The Subject Modern agriculture faces increasing challenges due to water deficiency and rising global food demands. A recent…","categories":[{"name":"Solutions","link":"\/blog\/category\/solutions\/"},{"name":"Use cases","link":"\/blog\/category\/use-cases\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2025\/01\/agricultural-solutions-cover-300x133.webp","link":"\/blog\/breakthrough-agricultural-solutions-with-thingsboard\/"},{"title":"ThingsBoard 3.9.0 release","excerpt":"We are excited to introduce ThingsBoard version 3.9.0! This release includes high-performance SCADA HMIs, a new mobile apps…","categories":[{"name":"Updates","link":"\/blog\/category\/updates\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/12\/thingsboard-3-9-0-release-cover-1-300x133.webp","link":"\/blog\/thingsboard-3-9-0-release\/"},{"title":"Dark Mode for a Dashboard","excerpt":"In recent years, dark mode has evolved from being a just trend to an essential feature for apps,…","categories":[{"name":"Guides","link":"\/blog\/category\/guides\/"},{"name":"Solutions","link":"\/blog\/category\/solutions\/"},{"name":"Use cases","link":"\/blog\/category\/use-cases\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/11\/Implementing-Dark-Mode-for-a-Dashboard-300x133.webp","link":"\/blog\/dark-mode-for-a-dashboard\/"},{"title":"TBMQ 2.0","excerpt":"We’re delighted to introduce TBMQ version 2.0.0! This release brings a major update with data migration of persistent…","categories":[{"name":"Updates","link":"\/blog\/category\/updates\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/11\/TBMQ-2.0-release-300x133.webp","link":"\/blog\/tbmq-2-0-migration-to-redis-mqtt-5-0-support-and-more\/"},{"title":"How IoT is Transforming Oil & Gas","excerpt":"The oil and gas industry is under intense pressure to avoid environmental disasters while improving overall performance and…","categories":[{"name":"Business","link":"\/blog\/category\/business\/"},{"name":"Solutions","link":"\/blog\/category\/solutions\/"},{"name":"Use cases","link":"\/blog\/category\/use-cases\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/10\/Innovative-Solutions-for-Oil-and-Gas_-SCADA-Edge-Computing-and-Remote-Asset-Management-300x133.webp","link":"\/blog\/innovative-solutions-for-oil-and-gas-scada-edge-computing-and-remote-asset-management\/"},{"title":"ThingsBoard 3.8.0 release","excerpt":"We’re thrilled to announce the release of ThingsBoard version 3.8.0! Scalable layout configurations, SCADA dashboards, OAuth2 and Custom…","categories":[{"name":"Updates","link":"\/blog\/category\/updates\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/09\/New-Release-3.7.1-2-300x133.webp","link":"\/blog\/thingsboard-3-8-0-release\/"},{"title":"What is the Principle of Oil tank level monitoring system?","excerpt":"Detailed explanation about oil tank level monitoring system. ThingsBoard - modern IoT visualization platform.","categories":[{"name":"Business","link":"\/blog\/category\/business\/"},{"name":"Community","link":"\/blog\/category\/community\/"},{"name":"Guides","link":"\/blog\/category\/guides\/"},{"name":"Solutions","link":"\/blog\/category\/solutions\/"},{"name":"Use cases","link":"\/blog\/category\/use-cases\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/04\/What-is-the-Principle-of-Oil-tank-level-monitoring-system_2-300x133.webp","link":"\/blog\/what-is-the-principle-of-oil-tank-level-monitoring-system\/"},{"title":"ThingsBoard Community’s Largest User Meeting took place in Germany","excerpt":"Sharing experiences and exchanging ideas is vital for users of open-source software. To support the ThingsBoard community and…","categories":[{"name":"Business","link":"\/blog\/category\/business\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/08\/it-novum-1-300x133.webp","link":"\/blog\/thingsboard-communitys-largest-user-meeting-took-place-in-germany\/"},{"title":"How to improve operations","excerpt":"Detailed explanation about propane tank level monitoring system. ThingsBoard - modern IoT visualization platform.","categories":[{"name":"Business","link":"\/blog\/category\/business\/"},{"name":"Community","link":"\/blog\/category\/community\/"},{"name":"Guides","link":"\/blog\/category\/guides\/"},{"name":"Solutions","link":"\/blog\/category\/solutions\/"},{"name":"Use cases","link":"\/blog\/category\/use-cases\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/04\/How-to-improve-operations-with-propane-tank-level-monitoring_2-300x133.webp","link":"\/blog\/how-implementing-of-the-propane-tank-level-monitoring-improve-operational-efficiency\/"},{"title":"ThingsBoard 3.7 release","excerpt":"We are thrilled to announce the release of ThingsBoard version 3.7! Highlights include the migration to JDK 17,…","categories":[{"name":"Updates","link":"\/blog\/category\/updates\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/06\/New-Release-3.7.0-300x133.webp","link":"\/blog\/thingsboard-3-7-release\/"},{"title":"Keeping the Beer Flowing","excerpt":"This case study highlights how innovative IoT solutions revolutionize beverage distribution, offering a roadmap for others in the…","categories":[{"name":"Solutions","link":"\/blog\/category\/solutions\/"},{"name":"Use cases","link":"\/blog\/category\/use-cases\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/04\/Keeping-the-Beer-Flowing_-Beverage-Distribution-Solution-with-ThingsBoard-IoT-platform2-1-300x133.webp","link":"\/blog\/keeping-the-beer-flowing-beverage-distribution-solution-with-thingsboard-iot-platform\/"},{"title":"Empowering IoT Solutions","excerpt":"X-TELIA, a leading innovator in IoT solutions based in Montreal, Canada, has found its winning formula with ThingsBoard.","categories":[{"name":"Business","link":"\/blog\/category\/business\/"},{"name":"Solutions","link":"\/blog\/category\/solutions\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/04\/x-telia-300x133.jpg","link":"\/blog\/empowering-iot-solutions-x-telias-success-story-with-thingsboard\/"},{"title":"TBMQ 1.3.0 release","excerpt":"We’re delighted to introduce TBMQ version 1.3.0! This update improves MQTT over WebSocket functionality by introducing a new…","categories":[{"name":"Updates","link":"\/blog\/category\/updates\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/04\/WebSocket-client-advanced-MQTT-5-features-and-more-1-scaled-1-300x133.webp","link":"\/blog\/tbmq-1-3-0-release-websocket-client-advanced-mqtt-5-features-and-more\/"},{"title":"TOP SUPPLIER RETAIL 2024","excerpt":"A new achievement and what does it mean to all","categories":[{"name":"Company","link":"\/blog\/category\/company\/"},{"name":"Solutions","link":"\/blog\/category\/solutions\/"},{"name":"Use cases","link":"\/blog\/category\/use-cases\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/04\/Top-supplier-retail-2024_Schwards_ThingsBoard-scaled-1-300x133.webp","link":"\/blog\/top-supplier-retail-2024-2\/"},{"title":"How an IoT-based liquid tank level monitoring system works?","excerpt":"Detailed explanation about IoT-based liquid level monitoring system. ThingsBoard - modern open IoT visualisation platform.","categories":[{"name":"Business","link":"\/blog\/category\/business\/"},{"name":"Community","link":"\/blog\/category\/community\/"},{"name":"Guides","link":"\/blog\/category\/guides\/"},{"name":"Solutions","link":"\/blog\/category\/solutions\/"},{"name":"Use cases","link":"\/blog\/category\/use-cases\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/04\/How-an-IoT-based-liquid-tank-level-monitoring-system-works_2-300x133.webp","link":"\/blog\/how-an-iot-based-liquid-tank-level-monitoring-system-works\/"},{"title":"ThingsBoard 3.6.3 release","excerpt":"We’re thrilled to announce ThingsBoard version 3.6.3! This latest update focuses on enhancing our widgets and notification system.…","categories":[{"name":"Updates","link":"\/blog\/category\/updates\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/03\/New-Release-3.6.3-Announcement-1-scaled-1-300x133.webp","link":"\/blog\/thingsboard-release-3-6-3-announcement\/"},{"title":"Push notifications","excerpt":"Now, you can receive instant alerts and updates directly on your smartphone, making it easier than ever to…","categories":[{"name":"Tech","link":"\/blog\/category\/tech\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/03\/Push-notifications-to-ThingsBoard-mobile-apps-2-1-scaled-1-300x133.webp","link":"\/blog\/push-notifications-to-thingsboard-mobile-apps\/"},{"title":"Enhancing IoT data visualization","excerpt":"Since launching, our time series charts have grown a lot but have become harder to configure due to…","categories":[{"name":"Tech","link":"\/blog\/category\/tech\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/03\/Enhancing-IoT-data-visualization_-Introducing-new-time-series-charts-1-scaled-1-300x133.webp","link":"\/blog\/enhancing-iot-data-visualization-introducing-new-time-series-charts\/"},{"title":"Warehouse monitoring","excerpt":"Reliable and high-quality control of temperature and humidity with constant access to monitoring data is an important condition for the storage of thermosensitive drugs and raw materials for medicines. The ThingsBoard partner — Vypin together with our team has implemented a solution for a global pharmaceutical company. The IoT application has helped to optimize processes and costs.","categories":[{"name":"Solutions","link":"\/blog\/category\/solutions\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/03\/Reliable-TH-monitoring-with-WhereView-ThingsBoard-1-scaled-1-300x133.webp","link":"\/blog\/warehouse-monitoring-with-thingsboard\/"},{"title":"IoT Widgets for enhanced dashboards","excerpt":"Welcome to the latest update from the ThingsBoard team! Our ongoing mission to improve the platform’s functionality and…","categories":[{"name":"Tech","link":"\/blog\/category\/tech\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/03\/IoT-Widgets-for-enhanced-dashboards_-introducing-the-action-command-toggle-and-power-buttons-1-300x133.webp","link":"\/blog\/iot-widgets-for-enhanced-dashboards-introducing-the-action-command-toggle-and-power-buttons\/"},{"title":"Increasing equipment utilization KPIs","excerpt":"Introduction Equipment in production plays an important role in achieving maximum efficiency, quality, and payback. The issues that…","categories":[{"name":"Tech","link":"\/blog\/category\/tech\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/03\/Increasing-equipment-utilization-KPIs-with-the-help-of-advanced-analytics-scaled-1-300x133.webp","link":"\/blog\/increasing-equipment-utilization-kpis-with-the-help-of-advanced-analytics\/"},{"title":"What is water tank level monitoring system?","excerpt":"What is Water tank level monitoring system? Smart water tank level monitoring system Remote water level monitoring What…","categories":[{"name":"Business","link":"\/blog\/category\/business\/"},{"name":"Community","link":"\/blog\/category\/community\/"},{"name":"Guides","link":"\/blog\/category\/guides\/"},{"name":"Solutions","link":"\/blog\/category\/solutions\/"},{"name":"Use cases","link":"\/blog\/category\/use-cases\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/04\/tank-level-55-1-300x133.webp","link":"\/blog\/what-is-water-tank-level-monitoring-system\/"},{"title":"Optimizing solar parks","excerpt":"Solar power plants face issues due to temperature and environmental factors, which lead to reduced efficiency and potential…","categories":[{"name":"Use cases","link":"\/blog\/category\/use-cases\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/03\/Optimizing-Solar-Parks-Efficiency-Advanced-Anomaly-Detection-Solutions-1-300x133.webp","link":"\/blog\/optimizing-solar-parks-efficiency-advanced-anomaly-detection-solutions\/"},{"title":"Optimizing dashboard performance","excerpt":"At ThingsBoard, we’ve always been committed to enhancing user experience and system performance. Our latest update, version 3.6.2,…","categories":[{"name":"Tech","link":"\/blog\/category\/tech\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/02\/Optimizing-dashboard-performance-with-enhanced-image-management-1-300x133.webp","link":"\/blog\/optimizing-dashboard-performance-with-enhanced-image-management\/"},{"title":"Reducing costs of solar farms","excerpt":"Introduction For solar farms, dirty panels can mean thousands of dollars of lost revenue annually. Panels washed too…","categories":[{"name":"Use cases","link":"\/blog\/category\/use-cases\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/02\/Reducing-costs-of-Solar-Farms-by-optimizing-the-cleaning-process-300x133.webp","link":"\/blog\/reducing-costs-of-solar-farms-by-optimizing-the-cleaning-process\/"},{"title":"Solving solar power plant","excerpt":"Solar energy is becoming increasingly popular as the world looks to resolve the climate emergency and move toward…","categories":[{"name":"Use cases","link":"\/blog\/category\/use-cases\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/02\/Solving-solar-power-plant-problems-using-advanced-analytics-2-300x133.webp","link":"\/blog\/solving-solar-power-plant-problems-using-advanced-analytics-2\/"},{"title":"Milesight and ThingsBoard","excerpt":"Xiamen, China, and New York, United States — Milesight, an innovative IoT products provider, and ThingsBoard, Inc., an IoT-related software…","categories":[{"name":"Business","link":"\/blog\/category\/business\/"}],"thumbnail":"\/blog\/wp-content\/uploads\/2024\/03\/Milesight-and-ThingsBoard-300x133.webp","link":"\/blog\/milesight-and-thingsboard-inc-announced-a-technical-partnership-to-provide-more-integrated-iot-solutions\/"}];
const authorsData = [{"name":"Yevheniia Mala","link":"\/blog\/author\/yevheniia-mala\/","avatar":"https:\/\/secure.gravatar.com\/avatar\/4ba8ba9be5d2d031da35478d32d21530?s=96&d=mm&r=g"},{"name":"Dmytro Shvaika","link":"\/blog\/author\/dmytro-shvaika\/","avatar":"https:\/\/secure.gravatar.com\/avatar\/3cf9c662bfe484e5d580ba302e42640d?s=96&d=mm&r=g"},{"name":"Anastasia Antoniuk","link":"\/blog\/author\/anastasia-antoniuk\/","avatar":"https:\/\/secure.gravatar.com\/avatar\/9896ae08f45e7f4eecd95b3fc656aac0?s=96&d=mm&r=g"},{"name":"Mariia Naida","link":"\/blog\/author\/mariia-naida\/","avatar":"https:\/\/secure.gravatar.com\/avatar\/a3943357abe98fde87650378eb223cbe?s=96&d=mm&r=g"},{"name":"Valeriia Koriavikova","link":"\/blog\/author\/valeriia-koriavikova\/","avatar":"https:\/\/secure.gravatar.com\/avatar\/04b9ee24b1df742aff5297aa3236cf20?s=96&d=mm&r=g"},{"name":"Dima Landiak","link":"\/blog\/author\/dlandiak\/","avatar":"https:\/\/secure.gravatar.com\/avatar\/b79cef1565d16ade3779b0cf9495e7ec?s=96&d=mm&r=g"},{"name":"Andrii Zaiko","link":"\/blog\/author\/andrii-zaiko\/","avatar":"https:\/\/secure.gravatar.com\/avatar\/8c93ebf5d98723e594698da091a09cc7?s=96&d=mm&r=g"},{"name":"PR team","link":"\/blog\/author\/alex-doan\/","avatar":"https:\/\/secure.gravatar.com\/avatar\/fb8c4c6319f9a7c6ed932120cd37b992?s=96&d=mm&r=g"},{"name":"Andrew Shvaika","link":"\/blog\/author\/andrew-shvaika\/","avatar":"https:\/\/secure.gravatar.com\/avatar\/1e5a609c8d5b265cd9317f43bf4df549?s=96&d=mm&r=g"},{"name":"Iryna Kheroim","link":"\/blog\/author\/iryna-kheroim\/","avatar":"https:\/\/secure.gravatar.com\/avatar\/ec3d9b1cdee046b41716a9bfa62d057a?s=96&d=mm&r=g"}];
document.getElementById('clearSearchInput').addEventListener('click', clearSearch);
document.getElementById('searchInput').addEventListener('input', searchPosts);
document.getElementById('searchInput').addEventListener('focus', showResults);
function searchPosts() {
const query = document.getElementById('searchInput').value.toLowerCase().trim();
const resultsContainer = document.getElementById('input-results');
resultsContainer.innerHTML = '';
if (!query) {
resultsContainer.classList.add('hidden');
return;
}
const filteredPosts = filterPosts(query);
const filteredAuthors = filterAuthors(query);
resultsContainer.classList.remove('hidden');
resultsContainer.classList.toggle('fade-in', filteredPosts.length > 0 || filteredAuthors.length > 0);
if (filteredPosts.length || filteredAuthors.length) {
const fragment = document.createDocumentFragment();
filteredAuthors.forEach(author => fragment.appendChild(createAuthorItem(author)));
filteredPosts.forEach(post => fragment.appendChild(createPostItem(post)));
resultsContainer.appendChild(fragment);
} else {
resultsContainer.appendChild(createNoResultsMessage());
}
addMouseOverEffect();
}
function filterPosts(query) {
return postsData.filter(post =>
post.title.toLowerCase().includes(query) ||
post.excerpt.toLowerCase().includes(query) ||
post.categories.some(category => category.name.toLowerCase().includes(query))
);
}
function filterAuthors(query) {
return authorsData.filter(author => author.name.toLowerCase().includes(query));
}
function createAuthorItem(author) {
const authorItem = document.createElement('div');
authorItem.className = 'result-item author-item';
const authorAvatarLink = createLink(author.link);
const authorAvatar = createImage(author.avatar, author.name, 'author-avatar');
authorAvatarLink.appendChild(authorAvatar);
const authorName = createElementWithText('h3', author.name, 'search-title', author.link);
authorItem.append(authorAvatarLink, authorName);
return authorItem;