DELETE FROM KEYWORDS WHERE ID_DOMAINE=34058560DoneDoneDone
URL:thingsboard.io
Cache-Control: max-age=3600
Connection: keep-alive
Date: Fri, 24 Jan 2025 20:33:09 GMT
Content-Length: 167
Content-Type: text/html
Expires: Fri, 24 Jan 2025 21:33:09 GMT
Location: https://thingsboard.io/
Server: cloudflare
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=Gad%2BOC1seivLT4Mmg1kYEyeoSzTgFvlPqpG38Bycu9xx2EchNjNyJxouVdqmyLyVLcUF1PcOD44L7i0W7LP%2Bi40YBcM8DUZKzlwYtThpI5fKTfvEbYF1XOAl7Ff066rX"}],"group":"cf-nel","max_age":604800}
NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
referrer-policy: same-origin
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
CF-RAY: 9072cbff4cc122bd-CDG
server-timing: cfL4;desc="?proto=TCP&rtt=13451&min_rtt=13451&rtt_var=6725&sent=1&recv=3&lost=0&retrans=0&sent_bytes=0&recv_bytes=148&delivery_rate=0&cwnd=247&unsent_bytes=0&cid=0000000000000000&ts=0&x=0"
Location => https://thingsboard.io/
Status => 301
<html>
<head><title>301 Moved Permanently</title></head>
(vide) Tentative en https
<!Doctype html>
<html id="home" lang="en">
<head>
<meta charset="utf-8">
<meta name="cf-2fa-verify" content="a08672380de15e9">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="preload" href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
<title>ThingsBoard — Open-source IoT (Internet of Things) Platform</title>
<!-- Begin Jekyll SEO tag v2.8.0 -->
<meta name="generator" content="Jekyll v3.10.0" />
<meta property="og:title" content="ThingsBoard — Open-source IoT (Internet of Things) Platform" />
<meta name="author" content="thingsboard" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="ThingsBoard is an open-source IoT ❰Internet of Things❱ platform for device management ᐉ data collection ᐉ processing and visualization for your IoT projects" />
<meta property="og:description" content="ThingsBoard is an open-source IoT ❰Internet of Things❱ platform for device management ᐉ data collection ᐉ processing and visualization for your IoT projects" />
<link rel="canonical" href="https://thingsboard.io/" />
<meta property="og:url" content="https://thingsboard.io/" />
<meta property="og:site_name" content="ThingsBoard" />
<meta property="og:image" content="https://img.thingsboard.io/thingsboard_logo.png" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:image" content="https://img.thingsboard.io/thingsboard_logo.png" />
<meta property="twitter:title" content="ThingsBoard — Open-source IoT (Internet of Things) Platform" />
<meta name="twitter:site" content="@thingsboard" />
<meta name="twitter:creator" content="@thingsboard" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebSite","author":{"@type":"Person","name":"thingsboard"},"description":"ThingsBoard is an open-source IoT ❰Internet of Things❱ platform for device management ᐉ data collection ᐉ processing and visualization for your IoT projects","headline":"ThingsBoard — Open-source IoT (Internet of Things) Platform","image":{"twitter":"https://img.thingsboard.io/thingsboard_logo.png","facebook":"https://img.thingsboard.io/thingsboard_logo.png","url":"https://img.thingsboard.io/thingsboard_logo.png","@type":"imageObject"},"name":"ThingsBoard","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://img.thingsboard.io/thingsboard_logo.png"},"name":"thingsboard"},"sameAs":["https://twitter.com/thingsboard","https://github.com/thingsboard/thingsboard","https://www.facebook.com/thingsboard","https://www.youtube.com/channel/thingsboard"],"url":"https://thingsboard.io/"}</script>
<!-- End Jekyll SEO tag -->
<meta name="twitter:description" content="ThingsBoard is an open-source IoT ❰Internet of Things❱ platform for device management ᐉ data collection ᐉ processing and visualization for your IoT projects">
<link rel="shortcut icon" type="image/png" href="https://img.thingsboard.io/favicon.png">
<link href="/css/critical.css" rel="stylesheet">
<script async defer src="https://buttons.github.io/buttons.js"></script>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/qs/6.7.0/qs.min.js"></script>
<script async defer src="https://cdnjs.cloudflare.com/ajax/libs/gifffer/1.5.0/gifffer.min.js"></script>
<noscript>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700&display=swap">
</noscript>
<script async defer>
window.onload = function() {
Gifffer();
setCloudServerHref();
}
</script>
<script async defer>
function setCookie(name, value, attributes) {
if (typeof document === 'undefined') {
return
}
attributes = Object.assign({}, {path: '/'}, attributes)
if (typeof attributes.expires === 'number') {
attributes.expires = new Date(Date.now() + attributes.expires * 864e5)
}
if (attributes.expires) {
attributes.expires = attributes.expires.toUTCString()
}
name = encodeURIComponent(name)
.replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)
.replace(/[()]/g, escape)
var stringifiedAttributes = ''
for (var attributeName in attributes) {
if (!attributes[attributeName]) {
continue
}
stringifiedAttributes += '; ' + attributeName
if (attributes[attributeName] === true) {
continue
}
// Considers RFC 6265 section 5.2:
// ...
// 3. If the remaining unparsed-attributes contains a %x3B (";")
// character:
// Consume the characters of the unparsed-attributes up to,
// not including, the first %x3B (";") character.
// ...
stringifiedAttributes += '=' + attributes[attributeName].split(';')[0]
}
return (document.cookie =
name + '=' + writeCookieValue(value) + stringifiedAttributes)
}
function getCookie(name) {
if (typeof document === 'undefined' || (arguments.length && !name)) {
return
}
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all.
var cookies = document.cookie ? document.cookie.split('; ') : []
var jar = {}
for (var i = 0; i < cookies.length; i++) {
var parts = cookies[i].split('=')
var value = parts.slice(1).join('=')
try {
var found = decodeURIComponent(parts[0])
jar[found] = readCookieValue(value)
if (name === found) {
break
}
} catch (e) {
}
}
return name ? jar[name] : jar
}
function setCloudServerCookie(cookieValue) {
setCookie("cloudServer", cookieValue, {expires: 365, path: '/'});
}
function setCloudServerHref() {
const cloudServer = getCookie('cloudServer');
if (cloudServer) {
document.getElementById('cloud-documentation').href = cloudServer;
const cloudProductOption = document.getElementById('cloud-product-option');
if (cloudProductOption) {
const cloudProductOptionHref = cloudProductOption.href;
cloudProductOption.href = cloudProductOptionHref.replace('/docs/paas/', cloudServer);
}
}
}
</script>
<script async defer>
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
!function (a) {
"use strict";
var b = function (b, c, d) {
function e(a) {
return h.body ? a() : void setTimeout(function () {
e(a)
})
}
function f() {
i.addEventListener && i.removeEventListener("load", f), i.media = d || "all"
}
var g, h = a.document, i = h.createElement("link");
if (c) g = c; else {
var j = (h.body || h.getElementsByTagName("head")[0]).childNodes;
g = j[j.length - 1]
}
var k = h.styleSheets;
i.rel = "stylesheet", i.href = b, i.media = "only x", e(function () {
g.parentNode.insertBefore(i, c ? g : g.nextSibling)
});
var l = function (a) {
for (var b = i.href, c = k.length; c--;) if (k[c].href === b) return a();
setTimeout(function () {
l(a)
})
};
return i.addEventListener && i.addEventListener("load", f), i.onloadcssdefined = l, l(f), i
};
"undefined" != typeof exports ? exports.loadCSS = b : a.loadCSS = b
}("undefined" != typeof global ? global : this);
/*! onloadCSS. (onload callback for loadCSS) [c]2017 Filament Group, Inc. MIT License */
function onloadCSS(a, b) {
function c() {
!d && b && (d = !0, b.call(a))
}
var d;
a.addEventListener && a.addEventListener("load", c), a.attachEvent && a.attachEvent("onload", c), "isApplicationInstalled" in navigator && "onloadcssdefined" in a && a.onloadcssdefined(c)
}
</script>
<script>
function jqueryDefer(method) {
if (window.jQuery) {
method();
} else {
setTimeout(function () {
jqueryDefer(method)
}, 50);
}
}
function jqueryUiDefer(method) {
if (window.jQuery && window.jQuery.ui) {
method();
} else {
setTimeout(function () {
jqueryUiDefer(method)
}, 50);
}
}
window.vis = (function () {
var stateKey,
eventKey,
keys = {
hidden: "visibilitychange",
webkitHidden: "webkitvisibilitychange",
mozHidden: "mozvisibilitychange",
msHidden: "msvisibilitychange"
};
for (stateKey in keys) {
if (stateKey in document) {
eventKey = keys[stateKey];
break;
}
}
return function (c) {
if (c) document.addEventListener(eventKey, c);
return !document[stateKey];
}
})();
function loadScript(src, callback) {
var s, r, t;
r = false;
s = document.createElement('script');
s.type = 'text/javascript';
s.src = src;
s.onload = s.onreadystatechange = function () {
if (!r && (!this.readyState || this.readyState == 'complete')) {
r = true;
if (callback) {
callback();
}
}
};
t = document.getElementsByTagName('script')[0];
t.parentNode.insertBefore(s, t);
}
function loadCssAsync(src, callback) {
var stylesheet = loadCSS(src);
if (callback) {
onloadCSS(stylesheet, callback);
}
}
function loadNextScript(index, scriptsList, completeCallback) {
if (index < scriptsList.length) {
var script = scriptsList[index];
if (script.type === 'script') {
loadScript(script.src, function () {
if (script.callback) {
script.callback();
}
index++;
loadNextScript(index, scriptsList, completeCallback);
});
} else if (script.type === 'css') {
loadCssAsync(script.src, function () {
index++;
loadNextScript(index, scriptsList, completeCallback);
});
}
} else if (completeCallback) {
completeCallback();
}
}
var initialScriptsList = [
{src: 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/all.min.css', type: 'css'},
{src: 'https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css', type: 'css'},
{src: 'https://cdn.jsdelivr.net/npm/clipboard@1/dist/clipboard.min.js', type: 'script'},
{src: '/js/jquery-2.2.0.min.js', type: 'script'},
{src: '/css/jquery-ui.min.css', type: 'css'},
{src: '/js/jquery-ui.min.js', type: 'script'},
{src: '/js/jquery.vide.js', type: 'script'},
{src: '/js/script.js', type: 'script'},
{src: '/css/photoswipe.css', type: 'css'},
{src: '/css/default-skin/default-skin.css', type: 'css'},
{src: '/js/photoswipe.min.js', type: 'script'},
{src: '/js/photoswipe-ui-default.min.js', type: 'script'}
];
loadNextScript(0, initialScriptsList);
jqueryDefer(function () {
(function ($, win) {
$.fn.inViewport = function (cb) {
return this.each(function (i, el) {
function visPx() {
var H = $(this).height(),
r = el.getBoundingClientRect(), t = r.top, b = r.bottom;
var result = cb.call(el, Math.max(0, t > 0 ? H - t : (b < H ? b : H)));
if (result) {
$(win).off("resize scroll", visPx);
}
}
visPx();
$(win).on("resize scroll", visPx);
});
};
}(jQuery, window));
});
function inViewportDefer(method) {
if (window.jQuery && $.fn.inViewport) {
method();
} else {
setTimeout(function () {
inViewportDefer(method)
}, 50);
}
}
</script>
<script async defer>
function checkGTagDataLayer() {
return typeof window.dataLayer === "undefined" || !window.dataLayer.push;
}
function _gaLt(event) {
/* If GTM is blocked or not loaded, or not main|middle|touch click then don't track */
if (checkGTagDataLayer() || (event.which != 1 && event.which != 2)) {
return;
}
var el = event.srcElement || event.target;
while (el && (typeof el.tagName == 'undefined' || el.tagName.toLowerCase() != 'a' || !el.href)) {
el = el.parentNode;
}
if (el && el.href && el.getAttribute('itemprop') !== 'contentUrl') {
var link = el.href;
if ((link.indexOf(location.host) == -1 || link.indexOf('.' + location.host) > 0) && !link.match(/^javascript\:/i)) {
var target = (el.target && !el.target.match(/^_(self|parent|top)$/i)) ? el.target : false;
if (event.ctrlKey || event.shiftKey || event.metaKey || event.which == 2) {
target = "_blank";
}
var hbrun = false; // tracker has not yet run
var hitBack = function () {
if (hbrun) return;
hbrun = true;
window.location.href = link;
};
if (target) {
gtag("event", "outgoing_links", {
"event_category": "Outgoing Links",
"event_label": link,
"value": document.location.pathname + document.location.search
});
} else {
event.preventDefault ? event.preventDefault() : event.returnValue = !1;
gtag("event", "outgoing_link", {
"event_category": "Outgoing Links",
"event_label": link,
"value": document.location.pathname + document.location.search,
"event_callback": hitBack
});
setTimeout(hitBack, 1000);
}
}
}
}
var _w = window;
var _gaLtEvt = ("ontouchstart" in _w) ? "click" : "mousedown";
_w.addEventListener ? _w.addEventListener("load", function () {
document.body.addEventListener(_gaLtEvt, _gaLt, !1)
}, !1)
: _w.attachEvent && _w.attachEvent("onload", function () {
document.body.attachEvent("on" + _gaLtEvt, _gaLt)
});
</script>
<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');
function gtag(){dataLayer.push(arguments)};
</script>
<script async defer>
function Burger() {
var header = $('header');
var body = $('body');
if (header.hasClass('opened-burger')) {
header.removeClass('opened-burger');
let subMenus = $('nav.head-menu > ul > li > div.centered-sub > ul.sub-menu');
subMenus.removeClass('open-sub');
body.css('overflow', '');
} else {
header.addClass('opened-burger');
body.css('overflow', 'hidden');
}
}
</script>
<script async defer>
jqueryDefer(function () {
let menuElement = $('nav.head-menu > ul');
let submenuContainer = $('nav.head-menu > div.sub-menu-container');
let menuItems = $('nav.head-menu > ul > li');
let indicator = $('nav.head-menu > ul + div.indicator');
let subMenuActive = false;
menuElement.on('mouseleave', function (event) {
if (!$(event.relatedTarget).parents('div.sub-menu-container').length) {
setTimeout(function() {
if (!submenuContainer.is(':hover')) {
subMenuActive = false;
submenuContainer.removeClass('active bounds-transition');
menuItems.removeClass('active');
indicator.removeClass('left-transition active');
}
}, 200)
}
});
submenuContainer.on('mouseleave', function (event) {
if (!$(event.relatedTarget).parents('nav.head-menu > ul').length) {
subMenuActive = false;
submenuContainer.removeClass('active bounds-transition');
menuItems.removeClass('active');
indicator.removeClass('left-transition active');
}
});
menuItems.each(function() {
let item = $( this );
let subMenuId = item.attr('data-submenu-id');
item.on('mouseenter', function () {
setTimeout(function() {
if (item.is(':hover')) {
let submenus = $('nav.head-menu > div.sub-menu-container > div');
submenus.css('display', 'none');
menuItems.removeClass('active');
item.addClass('active');
if (subMenuId) {
let targetSubMenu = $('nav.head-menu > div.sub-menu-container > div#'+subMenuId);
targetSubMenu.css('display', 'block');
submenuContainer.css('overflow', 'visible');
let offset = (item.outerWidth() - targetSubMenu.outerWidth()) / 2;
let left = item.position().left + offset;
let windowOverflow = window.innerWidth - (item.offset().left + offset + targetSubMenu.outerWidth());
indicator.css('opacity', 1);
let windowOverflowLeft = left + windowOverflow;
if (windowOverflow < 0) {
left += windowOverflow;
} else if (windowOverflowLeft < 0) {
left -= windowOverflowLeft;
}
submenuContainer.css('left', left + 'px');
if (!subMenuActive) {
submenuContainer.addClass('active');
indicator.addClass('active');
subMenuActive = true;
} else {
submenuContainer.addClass('bounds-transition');
indicator.addClass('left-transition active');
}
indicator.css('left', item.position().left);
indicator.css('width', item.outerWidth());
submenuContainer.css('height', targetSubMenu.outerHeight() + 'px');
submenuContainer.css('width', targetSubMenu.outerWidth() + 'px');
submenuContainer.css('overflow', 'hidden');
} else {
if (subMenuActive) {
submenuContainer.removeClass('active');
subMenuActive = false;
}
indicator.css('opacity', 0);
}
}
}, 100)
});
});
let isMobile = $('button.burger').css('display') === 'block';
if (isMobile) {
initMobileSubmenu();
}
$(window).resize(function(){
let newIsMobile = $('button.burger').css('display') === 'block';
if (isMobile !== newIsMobile) {
isMobile = newIsMobile;
if (isMobile) {
initMobileSubmenu();
} else {
restoreDesktopSubmenu();
}
}
});
$( document ).ready(function() {
// Rogue line numbers fix (don't show line numbers for 1 row)
$('.rouge-gutter.gl').each(function() {
var lineNumbers = $(this).children('.lineno');
if (lineNumbers.text() === '1\n') {
$(this).css('display', 'none');
}
});
$('a#use-cases-link').click(function(e) {
let isMobile = $('button.burger').css('display') === 'block';
if (isMobile) {
e.preventDefault();
e.stopPropagation();
listburg('nav-cases');
}
});
});
});
function initMobileSubmenu() {
var header = $('header');
if (header.hasClass('opened-burger')) {
var body = $('body');
body.css('overflow', 'hidden');
}
let targetSubMenus = $('nav.head-menu > div.sub-menu-container > div');
targetSubMenus.css('display', 'block');
let submenuContainer = $('nav.head-menu > div.sub-menu-container');
submenuContainer.removeClass('active');
submenuContainer.css('display', 'none');
targetSubMenus.each(function() {
let subMenu = $( this );
let subMenuId = subMenu.attr('id');
let parent = $('nav.head-menu > ul > li.'+subMenuId);
parent.append(subMenu);
});
}
function restoreDesktopSubmenu() {
var body = $('body');
body.css('overflow', '');
let targetSubMenus = $('nav.head-menu > ul > li > div');
let submenuContainer = $('nav.head-menu > div.sub-menu-container');
submenuContainer.removeClass('active');
submenuContainer.css('display', 'block');
let menuItems = $('nav.head-menu > ul > li');
menuItems.removeClass('active');
targetSubMenus.each(function() {
let subMenu = $( this );
submenuContainer.append(subMenu);
});
}
function listburg(subMenuId) {
let isMobile = $('button.burger').css('display') === 'block';
if (isMobile) {
let targetSubMenu = $('nav.head-menu > ul > li > div.centered-sub#'+subMenuId+' > ul.sub-menu');
let isOpen = targetSubMenu.hasClass('open-sub');
let subMenus = $('nav.head-menu > ul > li > div.centered-sub > ul.sub-menu');
subMenus.removeClass('open-sub');
if (!isOpen) {
targetSubMenu.addClass('open-sub');
}
}
}
</script>
</head>
ThingsBoard — Open-source IoT (Internet of Things) Platform
Recherche META Description de la page
ThingsBoard is an open-source IoT ❰Internet of Things❱ platform for device management ᐉ data collection ᐉ processing and visualization for your IoT projects
Recherche META Keywords de la page
UPDATE DOMAINES SET server='cloudflare',redirection='https://thingsboard.io/',Status='200',err='',[TITRE]=N'ThingsBoard — Open-source IoT (Internet of Things) Platform',[DESCRIPTION]=N'ThingsBoard is an open-source IoT ❰Internet of Things❱ platform for device management ᐉ data collection ᐉ processing and visualization for your IoT projects',[KEYWORDS]=N'' WHERE id=34058560
0 ThingsBoard — Open-source IoT Internet of Things Platform ThingsBoard is an open-source IoT ❰Internet of Things❱ platform for device management ᐉ data collection ᐉ processing and visualization for your IoT projects
0. ThingsBoard (11)--------->0
1. — (1)--------->0
2. Open-source (11)--------->0
3. IoT (3)--------->0
5. Internet (8)--------->0
6. of (2)--------->0
7. Things (6)--------->0
9. Platform (8)--------->0
11. is (2)--------->0
12. an (2)--------->0
15. ❰Internet (9)--------->-2147217873 Violation de la contrainte PRIMARY KEY « PK_keywords ». Impossible d'insérer une clé en double dans l'objet « dbo.keywords ». Valeur de clé dupliquée : (❰Internet, 34058560).
17. Things❱ (7)--------->-2147217873 Violation de la contrainte PRIMARY KEY « PK_keywords ». Impossible d'insérer une clé en double dans l'objet « dbo.keywords ». Valeur de clé dupliquée : (Things❱, 34058560).
19. for (3)--------->0
20. device (6)--------->0
21. management (10)--------->0
22. ᐉ (1)--------->0
23. data (4)--------->0
24. collection (10)--------->0
26. processing (10)--------->0
27. and (3)--------->0
28. visualization (13)--------->0
30. your (4)--------->0
32. projects (8)--------->0
INSERT INTO KEYWORDS (keyword,id_domaine) VALUES (N'ThingsBoard',34058560),(N'—',34058560),(N'Open-source',34058560),(N'IoT',34058560),(N'Internet',34058560),(N'of',34058560),(N'Things',34058560),(N'Platform',34058560),(N'is',34058560),(N'an',34058560),(N'❰Internet',34058560),(N'Things❱',34058560),(N'for',34058560),(N'device',34058560),(N'management',34058560),(N'ᐉ',34058560),(N'data',34058560),(N'collection',34058560),(N'processing',34058560),(N'and',34058560),(N'visualization',34058560),(N'your',34058560),(N'projects',34058560)