After an encouraging success with Sonoff Touch I ordered the TH16 model. It is designed to be hidden out of sight (as it is ugly and with tiny button) and it has additional 2.5mm port to connect a sensor. I chose AM2301 model which provides temperature and humidity measurements.
We begin with flashing the device following my guide for Sonoff Touch. After that we need to connect firmly the sensor. Please note that the plug needs to be flush with the casing, because it won’t work otherwise (it needs to loudly click when connected). I lost some time before figuring it out.
Then go to the webpage of you Sonoff, click Configuration
, then Configure Module
. While there change Module type
to 04 Sonoff TH
and GPIO 14 Sensor
to 02 AM2301
. After clicking Save
it will reboot and you will be able to see temperature and humidity on main page of the Sonoff. If it doesn’t show up you need to check your cabling.
Having that working properly we need to go to Configure MQTT
under Configuration
. For my setup I chose a meaningful name like sonoff-road
and sonoff/%prefix%/%topic%/
as Full Topic
. Clicking Save
will reboot the device again and you should be getting MQTT
messages published to your broker. But this time they are quite different than those sent on simple power change. The topic is tele
instead of stat
and it sends JSON
formatted data, like in following example caught with mosquitto_sub -d -t "#"
:
{"Time":"2018-02-24T22:11:10", "AM2301":{"Temperature":20.8, "Humidity":41.1}, "TempUnit":"C"}
It is published with the topic sonoff/tele/sonoff-road/SENSOR
.
To use this data correctly we need to install JSONPath
transform from the PaperUI
of the OpenHab
. Navigate to Add-ons
and from Transformations
tab click Install besides JSONPath
item. Now we are ready to use it in .item file as follows:
Number ExternalHumidity "hum [%.1f]" {mqtt="<[mymqtt:sonoff/tele/sonoff-road/SENSOR:state:JSONPATH($.AM2301.Humidity)]" }
For sake of completeness here is a item for handling power state:
Switch LightRoad "Road Lights" (gLightsCeiling) [ "Lighting" ]
{mqtt=" >[mymqtt:sonoff/cmnd/sonoff-road/power:command:*:default],
<[mymqtt:sonoff/stat/sonoff-road/POWER:state:default]" }