Spacestate sensors

From Hackerspace ACKspace
Jump to: navigation, search
Project: Spacestate sensors
Featured: Yes
State Active
Members Xopr
GitHub SpaceAPI-sensors
Description You can't manage what you don't measure
Spacestate sensors Picture.jpg

This project ties strongly with the MQTT setup (to connect to the SpaceAPI) as it uses Tasmota[1] on ESP devices for feature bang and ease of use.

Note that you're more than welcome to add any sensor (or actuator) that you might see fit for our hackerspace. Think: 3D printer nozzle temperature or filament weight, outside radiation, air quality, motion sensing, window opener and the likes; this project is proof anyone that can handle a screwdriver and PC can do this.


Create a modular repository of sensors and outputs to keep an eye on temperatures (and/or other stuff), especially for monitoring the server room, and optionally, the [sl|h|st]ackspace(s), including the space state switch.


After some iterations of the Space state switch and some versions of the Spacestate indicator, some different types of temperature sensors, it was time to make it easy on ourselves: switch to MQTT and use Tasmota[1].

In most cases, an off-the-shelf ESP device will suffice, but since not all devices are not galvanically isolated from mains, it's more practical to use an ESP-12 PCB for things where contacts are bare (like the Space state switch).

Here are the steps to setup such a device

configuring a spacestate sensor from scratch

Most of this (apart from the MQTT configuration) only applies to the Spacestate sensor board (see image); it will setup a pinout template that matches the board.

  • Under Configuration, click Configure Other
  • Paste this template: {"NAME":"ACKsensor","GPIO":[0,0,0,0,0,0,0,0,1,0,0,0,1,1],"FLAG":0,"BASE":18} and check Activate
  • Fill in Device Name (ACKtemp or ACKstate) and Friendly Name 1 (Space state switch or leave as is)
  • Save (will reboot)
  • Click Configure Module
  • Make sure Module type is ACKsensor (0)
  • Set functions for GPIO17 (ADC), GPIO16 (Typically Switch 1 or Button 1) and GPIO12 (DS18x20 which is connected to 3.3v using ~4k7 pull up) [2]
  • Save (will reboot again)
  • Click Configure MQTT
  • Set Host (, User (temperature or spacestate), Password (currently, only xopr knows these passwords), Topic (temperature, switch or spacestate) and Full Topic (ackspace/hackspace/%topic%/%prefix%/)
  • Save (will reboot yet again)

notes and troubleshooting


Note that this pin is special (it lives on a separate register internally, but more important, its internal pull resistor is to ground (pull-down) [3][4][5]


Note that the analog in is 0-1V maximum; use a voltage divider to limit its input.[6] and [7]

space state

To read a switch without having a corresponding relay one has to remember the default switch action is TOGGLE, which can be used in traveler-system (hotelschakeling) style: one can turn the light on with switch 1, turn it off with switch 2 (software) and turn it on with switch 1 again while the switch physically is in a different state. To change the behavior of the switch, use switchmode[8]:

switchmode 1
restart 1

Note that if you need the reverse (switch connects to poweroff), you need switchmode 1. Also note that restart 1 is needed to store the configuration.

multiple switches on the spacestate sensor

By default, one can use a single switch/button without a relay set. If you want to provide MQTT state for multiple switches without having corresponding relay outputs, you need some rule magic;[9]

Rule1 ON switch1#state DO publish ackspace/hackspace/%topic%/stat/RESULT {"POWER1":"%value%"} ENDON
Rule2 ON switch2#state DO publish ackspace/hackspace/%topic%/stat/RESULT {"POWER2":"%value%"} ENDON
Backlog Rule1 1; Rule2 1

other devices (switches)

Note that the space has a modified sonoff POW (old revision) that allows switching with a regular toggle switch while able to monitor the power usage. It uses the following template: {"NAME":"Dangerous POW","GPIO":[32,160,0,0,0,2592,0,0,224,2656,2688,288,0,0],"FLAG":0,"BASE":6} Note that while the GPIO is 5V relative to GND, it most likely is 225V above earth potential: insulate well and never connect it to your PC.

calibrating POW module

To calibrate a POW module (like in the hackcorner), you need the following[10]:

  • Multimeter (for measuring mains voltage)
  • Resistive load (higher=better, like the 500W SMD rework station)


  • monitor mains voltage
  • go to the sonoff console tab of the device
  • turn on the hot air station and crank up the dial
  • input the following (adjust the voltage and current accordingly)
for current, you use the formula: P/U*1000 = 500/227*1000 = in this case
VoltageSet 227
PowerSet 500
CurrentSet 2202.64
restart 1


When a device doesn't respond or won't connect to wifi, you might need to trigger recovery mode[11] by:

  • power it off for 30 seconds
  • power on 7 times with less than 10 second interval

Note that this only works if SetOption65 is 0 (which one would have disabled if brown-outs occur often.