Como deveria ser um show decente, eu tenho uma estação meteorológica, que me montei nas telas DHT22, Raspberry Pi e Nokia, que é uma solução de energia constante que transmite dados via Ethernet.
Mas agora eu precisava de uma estação meteorológica móvel na varanda, sem fio e alimentada por bateria.
Como módulo de rádio, usei uma placa Z-Wave Z-Uno; como sensor de temperatura e umidade, decidi experimentar o Sensirion SHT20 trabalhando no I2C.

Materiais e preços:
O Z-Uno é atualizado constantemente, é adicionado suporte para novos periféricos e bibliotecas. No momento, a versão atual do firmware é 2.0.9 e o suporte para os seguintes dispositivos apareceu:
- Sensor de temperatura DS18B20 a 1 fio
- DHT22 && DHT11 sensor de temperatura e umidade
- Leitor de cartão 125Khz RFID
- Sensor de pressão e temperatura I2C BMP180
- e outros dispositivos, exemplos aqui são z-uno.z-wave.me/examples
O sensor Sensirion SHT20 que trabalha no barramento I2C não estava na lista dos suportados, então tive que escrever minha própria implementação para o Z-Uno. A sintaxe do esboço para o Z-Uno é o mais semelhante possível ao Arduino, o esboço inteiro cabe em 35 linhas:

Esboço para o Z-Uno no trabalho com um sensor de temperatura e umidade Sensirion SHT20#include <Wire.h> #include "SHT2x.h" int16_t temperature; uint8_t humidity; ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_SLEEPING); #define ZUNO_CHANNEL_TEMPERATURE 1 #define ZUNO_CHANNEL_HUMIDITY 2 ZUNO_SETUP_CHANNELS( ZUNO_SENSOR_MULTILEVEL_TEMPERATURE(getterTemp), ZUNO_SENSOR_MULTILEVEL_HUMIDITY(getterHumid) ); void setup() { Wire.begin(); } void loop() { temperature = SHT2x.GetTemperature(); zunoSendReport(ZUNO_CHANNEL_TEMPERATURE); humidity = SHT2x.GetHumidity(); zunoSendReport(ZUNO_CHANNEL_HUMIDITY); zunoSendDeviceToSleep(); } byte getterTemp(void) { return temperature; } byte getterHumid(void) { return humidity; }
SHT2x.cpp modificado para Z-Uno SHT2x.h #ifndef SHT2X_H #define SHT2X_H
Entre as coisas especiais, no esboço há apenas uma linha que coloca o Z-Uno no modo de suspensão:
ZUNO_SETUP_SLEEPING_MODE(ZUNO_SLEEPING_MODE_SLEEPING)
E configurando qual canal enviar temperatura para e em qual umidade:
ZUNO_SETUP_CHANNELS( ZUNO_SENSOR_MULTILEVEL_TEMPERATURE(getterTemp), ZUNO_SENSOR_MULTILEVEL_HUMIDITY(getterHumid) )
O resto é o código regular do Arduino.
O Sensirion SHT20 funciona em I2C e é conectado por 2 fios. Por padrão, na biblioteca Wire.h para I2C, os pinos 9 e 10 são definidos.
As informações do sensor podem ser visualizadas no telefone e são usadas na automação para controlar o umidificador e o ar condicionado.
Os dados são atualizados a cada 12 minutos. Nesse modo, o sensor deve funcionar por mais de 2 anos com um conjunto de baterias.

O edifício Gint G517B 90 x 60 x 20 cm foi escolhido especialmente com um local embaixo do compartimento da bateria, tudo se encaixa perfeitamente.
O desenvolvimento do sensor de temperatura e umidade Z-Wave levou cerca de 2 horas e 3746 p. Você também pode adicionar uma tela E-Ink e pendurá-la na parede!