;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

CES 2023: por que conectar dispositivos em casa inteligente vai ficar fácil

Indústria começa a lançar produtos com padrão que permite que eletrônicos de diferentes marcas conversem entre eles - Unsplash/Sebastian Scholz
Indústria começa a lançar produtos com padrão que permite que eletrônicos de diferentes marcas conversem entre eles Imagem: Unsplash/Sebastian Scholz

De Tilt,* em Las Vegas (EUA)

06/01/2023 11h59

Ter uma casa inteligente usando aparelhos como lâmpada inteligente, geladeira high tech, aspirador, fogão, câmeras e outros sensores integrados ficará mais fácil num futuro próximo. É o que a indústria está claramente sinalizando na CES 2023, principal feira de tecnologia de consumo do mundo, que acontece nesta semana em Las Vegas.

Configurar todos esses aparelhos vai consistir em ligar e começar a usar, com no máximo uma indicação para entrar numa rede. As fabricantes terão produtos com padrões compatíveis entre si. Inclusive, fazendo com que dispositivos de marcas distintas conversem um com o outro — o que não ocorre facilmente hoje em dia.

O Matter importa

Com o início dos dispositivos conectados, foram surgindo padrões distintos — muitas empresas só faziam produtos que conversavam entre dispositivos de suas próprias marcas.

Em uma decisão para ajudar o consumidor (sim, ele é importante), diversos fabricantes se uniram nos últimos anos para tentar evitar complicações e permitir que aparelhos de uma casa conectada possam conversar uns com os outros.

Um dos mais importantes da atualidade é o Matter, uma parceria de criação de padrões abertos para casa conectada.

Fazem parte da associação:

  • Amazon (que faz os alto-falantes Echo)
  • Google (com a linha Nest Home)
  • LG
  • Apple (com os HomePods)
  • Samsung
  • Huawei
  • Philips Hue, entre outras.

A grande maioria de lançamentos de casa inteligente da CES deste ano conta com compatibilidade com um desses ou os dois ao mesmo tempo. Isso mostra uma mudança de cenário na prática.

Alguns exemplos

A Samsung apresentou o SmartThings Station, uma espécie de central de casa inteligente, que pode se conectar com outros itens compatíveis com Matter. A marca diz que o portfólio de TVs de 2023 também poderá ser um "hub" de casa inteligente. Ou seja, a televisão funcionará também como base de controle.

A Amazon informou que seus alto-falantes Echo mais novos receberão e à Matter. O modelo Echo de 4ª geração, por exemplo, terá isso a partir de uma atualização de software ainda a ser liberada pela companhia.

Para não ficar só nas empresas gigantes, a Universal Electronics anunciou na CES 2023 um porteiro eletrônico com câmera integrado ao novo padrão da tecnologia.

A companhia Aqara apresentou um sensor de presença e uma fechadura inteligente. Já a NanoLeaf exibiu painéis que podem ser controlados com centrais de conexão compatíveis com Matter.

Se no mundo a indústria tem se movido neste sentido, é capaz de nos próximos meses vermos uma série de produtos lançados no Brasil que permitem essa conversa com itens de casa conectada de concorrentes.

*O jornalista viajou a convite da Samsung