Adorei essa pergunta quando a li. "Isso me leva de volta", como dizem os barbas-cinzentas :) O TinyOS "tornou-se público" em 2000 - cerca de um ano após a frase "Internet das Coisas" ser cunhada, segundo a Wikipedia. Há muito tempo, em uma galáxia muito, muito longe ... OK, vamos ao que interessa:
Acredito que a resposta para sua pergunta sobre se os motes, TinyOS, NesC, etc. são "boas opções hoje em dia", é um "Sim" não qualificado . Eu vou explicar o porquê.
Eu aprendi do TinyOS em 2003; já era um sistema bastante maduro até então e estava sendo usado em algumas aplicações interessantes. "Motes" é um termo para o hardware, como em "sensor remoto". Cada mote tinha um processador, uma bateria, um rádio ( não WiFi) e algum tipo de sensor. Os três primeiros componentes eram comuns em uma variedade de motores, enquanto o sensor era geralmente peculiar à aplicação; luz, calor, campos magnéticos, etc. Se você estiver interessado em detalhes, foram publicados vários artigos (principalmente acadêmicos e verbais) que documentam o design do TinyOS ... eis um que eu gosto.
Como sistema, o TinyOS e o mote foram projetados para atingir um objetivo com recursos extremamente escassos. Por exemplo:
- O TinyOS ocupava cerca de 400 bytes de memória; uma aplicação típica 12-16 kB.
- O TinyOS roda em minúsculos microcontroladores de 8 bits; por exemplo, AT-90L da Atmel, MSP430 da TI e o ATtiny9 mais moderno da Microchip .
- O código NesC é mais como parte do 'kernel' do que um aplicativo tradicional; a eficiência do sistema exigia essa abordagem.
- Ciclos de serviço baixos e uma arquitetura de sistema que atendia à conservação de energia permitiam que as baterias durassem um ano ou mais (dependendo da aplicação, é claro).
A entrega de dados do sensor ao seu destino final a partir de motores amplamente dispersos que podem ser descartados de uma aeronave, no estilo de queda livre, para um ambiente operacional extremamente hostil exigia algoritmos de roteamento inteligentes. A "flexibilidade" foi, portanto, o principal impulsionador do design da pilha de comunicação do TinyOS. Consequentemente, nenhuma infraestrutura de comunicação existente é necessária. É claro que isso é empoderador e desafiador. Vários protocolos de roteamento foram desenvolvidos, e o licenciamento de código aberto incentivou a adoção e a modificação desses protocolos.
Quanto ao TinyOS ser abandonado ou estagnado, não acho que seja esse o caso. O repositório TinyOS GitHub mostra atividades recentes e sugere que ele está sendo mantido e tratado . Dito isto, o TinyOS nunca atrairia a multidão de "eletrônicos e software como hobby"; uma multidão que realmente não existia até recentemente, quando o Arduino e o Raspberry Pi se tornaram populares.
E isso me leva ao ponto nesta elaborada "resposta" à sua pergunta instigante. Não acho que exista uma resposta prática e cortada. Penso que a resposta se resume a isso: nós humanos somos mais como ovelhas ou lemingues do que gostamos de acreditar. Raspberry Pi, Arduino etc. são produtos que atraíram muitos seguidores curiosos e receita para quem trafega em gadgets, mas que têm pouco ou nada a ver com a adequação a uma aplicação específica. Estou não sugerindo que um re-inventar a roda para cada novo problema, mas, ao mesmo tempo, um (ou dois) tamanho (s) não serve para todos. Use a ferramenta certa para o trabalho.
Sei da sua pergunta que você entende isso, mas talvez não tenha pensado dessa maneira. Francamente, eu também não tinha até a sua pergunta atirar algumas pedras soltas. Então, sim, acho que você ainda pode criar algumas coisas muito elegantes com o TinyOS, mas pode ser necessário fazê-lo com menos recursos de suporte. Ou talvez haja um "TinyOS Stack Exchange" no futuro? Ha ha - não prenda a respiração :)
Termino com isso: “A verdade é muitas vezes o que fazemos dela; você ouviu o que queria ouvir, acreditou no que queria acreditar. ”
Termo aditivo:
Enquanto você pensa em como construir seus dispositivos e agregá-los aos sistemas, Phil Levis oferece um pouco de reflexão neste breve vídeo.
E quanto aos recursos para apoiar o desenvolvimento do TinyOS, aqui estão alguns que eu encontrei enquanto pesquisava minha "resposta" aqui: