foobot air quality monitory

195 views
Skip to first unread message

mwall

unread,
Apr 2, 2016, 7:50:06 AM4/2/16
to weewx-development
is anyone using a foobot air quality monitor?

http://foobot.io/

the setup process is unique, and *really* simple.  you turn the device upside-down to pair it with a 'foobot' app on a phone, then you use the foobot app to enter the local wifi info, then you turn it right side up.  compare that with the convoluted steps for a radio thermostat.

it reports a variety of air quality measures, including voc, co2, particulate matter.  it also measures temperature and humidity.

it looks like it should be pretty easy to write a driver for this device.  like the netatmo, acurite-bridge, lacross-bridge, os lw30x, and observerip, this device requires a local ip network (wifi in this case) and reports data directly to a web service.  there is an api for pulling data from the web service. 

the only way to see the data is by using the 'foobot' app on a phone/tablet.  so clearly there is a need to capture the data using weewx so we can display it with our weather data, power consumption, power generation, water consumption, propane consumption, etc :)

here is a portion of the payload that it sends to amazon web services:

0060  5b 7b 22 63 6f 32 22 3a 31 31 33 36 2c 22 76 6f   [{"co2":1136,"vo
0070  63 22 3a 33 31 34 2c 22 76 6f 63 5f 72 61 77 22   c":314,"voc_raw"
0080  3a 34 31 38 30 39 2c 22 74 65 6d 70 22 3a 32 34   :41809,"temp":24
0090  36 38 38 2c 22 68 75 6d 22 3a 34 34 31 34 36 2c   688,"hum":44146,
00a0  22 70 6d 22 3a 39 39 36 2c 22 56 4f 43 5f 65 72   "pm":996,"VOC_er
00b0  72 22 3a 30 2c 22 56 4f 43 5f 62 75 73 79 22 3a   r":0,"VOC_busy":
00c0  30 2c 22 74 65 6d 70 5f 72 61 77 22 3a 32 37 37   0,"temp_raw":277
00d0  33 32 2c 22 68 75 6d 5f 72 61 77 22 3a 33 38 35   32,"hum_raw":385
00e0  36 34 2c 22 72 61 77 34 22 3a 39 39 35 7d 5d      64,"raw4":995}]

it also sends a tiny packet every 10 seconds.

the communication happens on port 1883, and the traffic looks a lot like mqtt.

all in all, much easier to get data from this device than it is to get it from a netatmo.

any other foobot users who would like to help test a weewx driver for this?

m

mwall

unread,
Apr 2, 2016, 12:06:12 PM4/2/16
to weewx-development
here are a few more observations about the foobot data transmissions:

it is running a web server.  a username and password are required.  does anyone know what name/pass to use?

the 'sensor' packet with all sensor data is transmitted every 300 seconds or so (it is not precise)

the 'keep alive' packets are transmitted every 10 seconds

occasionally the amazon server responds with a 'patate' message or a 'ping' message.  these seem to trigger a similar 'patate' or 'ping' reply from the foobot (i think that the amazon server initiates the transaction, but it could be the foobot - hard to tell from the pcap files thus far)

it looks like we have at least two approaches for making a weewx driver for this thing:

1) capture network traffic and parse the 'sensor' packets

2) run an mqtt server as a thread in a weewx driver

prolly easiest to do (1) until we know better the interactions between the foobot and the amazon web services.

it is nice that foobot does not encrypt its communication.  if vendors *do* decide to encrypt, they should provide the hardware owner some way of decrypting.  netatmo used to be unencrypted, but changed to encryption instead of removing the information that they should not have been sending over the network anyway.  let's hope foobot stays unencrypted.

it looks like foobot will be a nice complement to a weather station.  foobot has co2, pm, and voc whereas netatmo has co2 and audio.  but foobot is easier to set up and much easier to decode.

m

Inoukb

unread,
Feb 18, 2017, 9:18:07 PM2/18/17
to weewx-development
Hello, Inouk from Foobot here. Available to help if necessary.

Not sure why you guys don't use our API though: http://api.foobot.io/apidoc/index.html

Best

mwall

unread,
Feb 18, 2017, 9:57:46 PM2/18/17
to weewx-development
On Saturday, February 18, 2017 at 9:18:07 PM UTC-5, Inoukb wrote:
Hello, Inouk from Foobot here. Available to help if necessary.

Not sure why you guys don't use our API though: http://api.foobot.io/apidoc/index.html

hello inouk!

is it possible to configure the foobot to send to a local mqtt server instead of (or in addition to) the foobot.com servers?

was there a change to the foobot firmware sometime between april 2016 and nov 2016?

in april, i found packets like this:

No.     Time        Source                Destination           Protocol Length Info         Packet Data Length Leftover Capture Data
    89 269.157539  192.168.32.94         52.6.128.16           TCP      239    17651→1883 [PSH, ACK] Seq=57 Ack=57 Win=1446 Len=185

0000  00 00 24 cb 09 69 ac cf 23 45 4a 14 08 00 45 00   ..$..i..#EJ...E.
0010  00 e1 15 f1 00 00 ff 06 10 09 c0 a8 20 5e 34 06   ............ ^4.
0020  80 10 44 f3 07 5b 00 00 77 f3 12 c4 8a 65 50 18   ..D..[..w....eP.
0030  05 a6 ac 90 00 00 33 b6 01 00 23 64 65 76 69 63   ......3...#devic
0040  65 2f 32 34 30 31 36 37 36 35 35 33 30 30 32 34   e/24016765530024
0050  38 30 2f 73 65 6e 73 6f 72 2f 70 75 73 68 00 03   80/sensor/push..

0060  5b 7b 22 63 6f 32 22 3a 31 31 33 36 2c 22 76 6f   [{"co2":1136,"vo
0070  63 22 3a 33 31 34 2c 22 76 6f 63 5f 72 61 77 22   c":314,"voc_raw"
0080  3a 34 31 38 30 39 2c 22 74 65 6d 70 22 3a 32 34   :41809,"temp":24
0090  36 38 38 2c 22 68 75 6d 22 3a 34 34 31 34 36 2c   688,"hum":44146,
00a0  22 70 6d 22 3a 39 39 36 2c 22 56 4f 43 5f 65 72   "pm":996,"VOC_er
00b0  72 22 3a 30 2c 22 56 4f 43 5f 62 75 73 79 22 3a   r":0,"VOC_busy":
00c0  30 2c 22 74 65 6d 70 5f 72 61 77 22 3a 32 37 37   0,"temp_raw":277
00d0  33 32 2c 22 68 75 6d 5f 72 61 77 22 3a 33 38 35   32,"hum_raw":385
00e0  36 34 2c 22 72 61 77 34 22 3a 39 39 35 7d 5d      64,"raw4":995}]

but now i see packets like this:

    49 146.279892  192.168.32.94         52.1.17.122           TCP      239    17752→1883 [PSH, ACK] Seq=33 Ack=33 Win=860 Len=185

0000  00 00 24 cb 09 69 ac cf 23 45 4a 14 08 00 45 00   ..$..i..#EJ...E.
0010  00 e1 03 b2 00 00 ff 06 90 e3 c0 a8 20 5e 34 01   ............ ^4.
0020  11 7a 45 58 07 5b 00 00 2c 5b fc 03 93 b9 50 18   .zEX.[..,[....P.
0030  03 5c 52 40 00 00 33 b6 01 00 23 64 65 76 69 63   .\R@..3...#devic
0040  65 2f 32 34 30 31 36 37 36 35 35 33 30 30 32 34   e/24016765530024
0050  38 30 2f 73 65 6e 73 6f 72 2f 70 75 73 68 00 03   80/sensor/push..

perhaps i am missing something, but it looks like the json payloads are nowhere to be found!

what changed between april 2016 and november 2016?

the reason i am doing this is so that i can keep the data from my foobot in my own local database.

m
Reply all
Reply to author
Forward
0 new messages