'Kickstarter' Eggs


#1

Thanks to the hint by @vicatcu here, I was able to get my long dormant eggs online again. The key was finding a system that could accept http requests since the Arduino / Nanode doesn’t have the resources to make an https request.

Adafruit io does allow http requests and was relatively easy to set up. I created a free account (up to 10 feeds, 5 dashboards, 60 calls / minute, 30 day storage) and a feed for each sensor (Temperature, Humidity, CO, NO2, and Dust).

Next was modifying the firmware for the eggs. I forked the v1 repository in order to track changes in my own repo. First I decided to leave the remote egg alone for now and focus on the base. I played around with the EtherCard Library examples and eventually was getting successful gets and posts with the adafruit io api. I made a copy of the AQEBase sketch and went through commenting out parts until I got to the call to postSensorData() method. I made a postSensorDataToAOI() method that checked the sensor type and set up the feed accordingly. The code I ended up with is really nasty, but it is working. I hope to clean it up soon.

Glad to get this thing back online. If anyone has a v1 ‘kickstarter’ egg that they want to try and get back online, let me know.

Big thanks to Wicked Devices and especially @vicatcu for writing such nice arduino code. It was really easy to follow and find where to modify things.


#2

Dude, you rock! Thanks for sharing this.


#3

@vicatcu my remote egg also has two additional sensor boards which seem to be the same sensor (CMOS Gas). One has a V markered on the back, the other an O. I don’t believe the remote egg is transmitting the values of these I am getting DHT22 Humidity / Temp, CO, NO2, and Dust.

I have not reprogrammed the Remote board because the firmware does not seem to have all of the sensor code. Do you have any clues there?


#4

Those are VOC and O3 sensors respectively. They should be discovered on the Egg Bus and reported on accordingly, there won’t be any specific code related to them in the Remote firmware (that was pretty fancy).


#5

Ok. I’ll review the remote egg code. I just started to dig into the Egg Bus which makes me more comfortable to flash the remote egg now!


#6

You can also run the EggBus Polling example sketch on the Remote Egg to see what it finds iirc.


#7

At the moment I flashed the Remote and everything seems to be working as it did before, but Bus 2.1 (O3) and 2.2 (VOC) aren’t being reported. Since there was nothing plugged into Bus 1.1, I plugged O3 in there and now it is being reported. Also, O3, plugged into 1.1 seems to be getting power during what I think is the sensor heating cycle. Same happens with VOC plugged into 1.1. When I unplug and plug in VOC or O3 into 2.1 or 2.2 I get the red PWR led flashing then a quick green INFO led, but then nothing after that.

Using the polling example tells me more of the same. Anything plugged into 2.1 or 2.2 doesn’t communicate, but both sensors are ok when plugged into 1.1.

If I comment out these lines in EggBus.cpp, it reports no more devices on bus #2.

Looking a bit deeper, line 55: rc = twi_writeTo(addr, &data, 0, 1, 0); returns 0 for anything on bus 2 and does not pass into the conditional.

Any ideas?


#8

I do seems to remember there were some interactions like this that we never fully understood. There are two cables and four plugs, so you might just consider trying all permutations of plugging them in (there are 12 possibilities I think) and in doing so hopefully find one where both the VOC and O3 sensors are detected and reported. The way they were plugged in when they shipped should have worked though, but I bet you took it apart and put it back together?


#9

Nope, this is the first time I really looked at the thing! I guess back in the day I hooked it up to test it, but probably got busy with other things.

I also have the dust sensor on bus 1.2 working fine. When I opened it up I had Empty 1.1, Dust 1.2, VOC and O3 on 2.1 and 2.2.

But ok, I’ll jiggle the handle.


#10

Good news: With the Dust sensor on EggBus channel 2 and VOC/O3 on EggBus Channel 1, everything is polling.
Bad news: everything other than DHT22 is reporting weird values:
From the PollEggBus_EPA.ino:

9175, NO2, 123592408.00000000, ppb, ovf
9363, CO, ovf, ppb, ovf
9568, O3, 371793184.00000000, ppb, ovf
9780, VOC, ovf, ppm, ovf
9994, Dust, ovf, pcs/283ml, ovf
10087, Humidity, 57.70000076, %, n/a
12860, Temperature, 21.80000114, degrees C, n/a

And from the PollEggBus.ino:

===========================
Egg Bus Address: 0x3
Firmware Version: 16
  Sensor Address: 00:04:A3:37:DF:5C
---------------------------
  Sensor Index: 0
    Sensor Type: NO2
  Table X Scaler: 0.40000000
  Table Y Scaler: 1.70000004
              R0: 2200
      Resistance: ovf
            R/R0: 55778796.000
     Table Row 1: [62, 117] => [24.80000114, 198.90000915]
     Table Row 2: [75, 131] => [30.00000000, 222.70001220]
     Table Row 3: [101, 152] => [40.40000152, 258.39999389]
     Table Row 4: [149, 188] => [59.60000228, 319.60000610]
     Table Row 5: [174, 204] => [69.59999847, 346.80001831]
     Table Row 6: [199, 219] => [79.59999847, 372.30001831]
     Table Row 7: [223, 233] => [89.20000457, 396.10000610]
     Table Row 8: [247, 246] => [98.80000305, 418.20001220]
    Sensor Value: 128407688.0000000000
    Sensor Units: ppb
---------------------------
  Sensor Index: 1
    Sensor Type: CO
  Table X Scaler: 0.00300000
  Table Y Scaler: 165.00000000
              R0: 750000
      Resistance: ovf
            R/R0: 711901.875
     Table Row 1: [134, 250] => [0.40199999, 41250.00000000]
     Table Row 2: [168, 125] => [0.50399999, 20625.00000000]
     Table Row 3: [202, 49] => [0.60599999, 8085.00000000]
     Table Row 4: [232, 12] => [0.69600000, 1980.00000000]
     Table Row 5: [241, 6] => [0.72300000, 990.00000000]
    Sensor Value: ovf
    Sensor Units: ppb
===========================
Egg Bus Address: 0x4
Firmware Version: 16
  Sensor Address: 00:04:A3:37:BD:04
---------------------------
  Sensor Index: 0
    Sensor Type: O3
  Table X Scaler: 0.01500000
  Table Y Scaler: 1.35000002
              R0: 11007
      Resistance: ovf
            R/R0: 17092974.000
     Table Row 1: [4, 7] => [0.06000000, 9.44999980]
     Table Row 2: [5, 9] => [0.07500000, 12.15000057]
     Table Row 3: [6, 10] => [0.09000000, 13.50000000]
     Table Row 4: [7, 11] => [0.10500000, 14.85000038]
     Table Row 5: [13, 18] => [0.19499999, 24.30000114]
     Table Row 6: [20, 25] => [0.29999998, 33.75000000]
     Table Row 7: [27, 32] => [0.40500001, 43.20000076]
     Table Row 8: [34, 39] => [0.50999999, 52.65000152]
     Table Row 9: [40, 46] => [0.59999995, 62.10000228]
     Table Row 10: [47, 52] => [0.70499997, 70.20000457]
     Table Row 11: [54, 60] => [0.81000003, 81.00000000]
     Table Row 12: [60, 66] => [0.90000000, 89.09999847]
     Table Row 13: [68, 74] => [1.01999998, 99.90000152]
     Table Row 14: [135, 155] => [2.02499985, 209.25000000]
     Table Row 15: [201, 247] => [3.01499986, 333.45001220]
    Sensor Value: 2144391424.0000000000
    Sensor Units: ppb
===========================
Egg Bus Address: 0x5
Firmware Version: 16
  Sensor Address: 00:04:A3:37:BE:06
---------------------------
  Sensor Index: 0
    Sensor Type: VOC
  Table X Scaler: 0.00051000
  Table Y Scaler: 1.60000000
              R0: 500000
      Resistance: ovf
            R/R0: 1935094.875
     Table Row 1: [254, 19] => [0.12953999, 30.39999961]
     Table Row 2: [195, 29] => [0.09945000, 46.40000152]
     Table Row 3: [157, 43] => [0.08007000, 68.80000305]
     Table Row 4: [136, 54] => [0.06936000, 86.40000152]
     Table Row 5: [117, 68] => [0.05967000, 108.80000305]
     Table Row 6: [97, 94] => [0.04947000, 150.40000915]
     Table Row 7: [78, 136] => [0.03978000, 217.60000610]
     Table Row 8: [58, 221] => [0.02958000, 353.60000610]
     Table Row 9: [53, 254] => [0.02703000, 406.39999389]
    Sensor Value: ovf
    Sensor Units: ppm

From the AQECalibrate sketch:

Discovered Sensors
====================================================================
ID	Sensor	R0
--------------------------------------------------------------------
1:	NO2	[ 2200 ] 
2:	CO	[ 750000 ] 
3:	O3	[ 11007 ] 
4:	VOC	[ 500000 ] 
5:	Dust	[ 1000 ] 
====================================================================
Enter ID Number to Calibrate [1..5]: 1

Calibrating Sensor ID: 1Hit space then Enter to stop
====================================================================
time	Val	Min	Max	Span	Mean	LSE	ppm
--------------------------------------------------------------------
9 NO2: 0	0	0	0	0	0	147572976.00
11 NO2: 0	0	0	0	0	0	131831888.00
12 NO2: 0	0	0	0	0	0	128407688.00
13 NO2: 0	0	0	0	0	0	126761440.00
14 NO2: 0	0	0	0	0	0	126761440.00
15 NO2: 0	0	0	0	0	0	125156856.00

---
Calibrating Sensor ID: 2Hit space then Enter to stop
====================================================================
time	Val	Min	Max	Span	Mean	LSE	ppm
--------------------------------------------------------------------
1 CO: 0	0	0	0	0	0	ovf
2 CO: 0	0	0	0	0	0	ovf
3 CO: 0	0	0	0	0	0	ovf
5 CO: 0	0	0	0	0	0	ovf
6 CO: 0	0	0	0	0	0	ovf
---
Calibrating Sensor ID: 3Hit space then Enter to stop
====================================================================
time	Val	Min	Max	Span	Mean	LSE	ppm
--------------------------------------------------------------------
2 O3: 0	0	0	0	0	0	2466322688.00
3 O3: 0	0	0	0	0	0	2460062976.00
4 O3: 0	0	0	0	0	0	2453835008.00
5 O3: 0	0	0	0	0	0	2453835008.00
---
Calibrating Sensor ID: 4Hit space then Enter to stop
====================================================================
time	Val	Min	Max	Span	Mean	LSE	ppm
--------------------------------------------------------------------
5 VOC: 0	0	0	0	0	0	ovf
6 VOC: 0	0	0	0	0	0	ovf
7 VOC: 0	0	0	0	0	0	ovf
8 VOC: 0	0	0	0	0	0	ovf
---
Calibrating Sensor ID: 5Hit space then Enter to stop
====================================================================
time	Val	Min	Max	Span	Mean	LSE	ppm
--------------------------------------------------------------------
3 Dust: 0	0	0	0	0	0	ovf
4 Dust: 0	0	0	0	0	0	ovf
5 Dust: 0	0	0	0	0	0	ovf

#11

Does that ovf response persist even after its been running for a while? What about dust output from PollEggBus?