Now, back to the main event...
AFCI - theory of operation:
The AFCI connector has 4 pins. From left to right they are Power, Ground, Input, and Test.
When the Skybox is powered up, 13.8v is made available on Pin1. When the Sensata device is present, it powers on using this voltage and in turn grounds Pin3 to Pin2. The Skybox is expecting to see that pin 3 is grounded. That lets it know the AFCI device is in place.
The Skybox will conduct separate tests of the AFCI device. It does this when solar power is first made available, and when the AFCI test is selected from the Solar tile. It may do this at other times as well, maybe during sweeps, etc. I'm not sure. To conduct a test, the Skybox sends a brief millivolt level voltage pulse out Pin 4. The AFCI device sees this pulse and disconnects pin 3 from pin 2.
When the Skybox sees that Pin 3 is no longer grounded, it momentarily cuts off the voltage going to Pin 1. This is supposed to reset the AFCI device, which will cause Pin 3 to be reconnected to Pin 2.
I have noticed that the test option on the Solar tile only checks for the Pin 3 disconnect and reconnect. It doesn't seem to be concerned with the voltage reset. However, clearing an AFCI error, or engaging the solar power definitely does do this power reset check. If the timing of the test signal, followed by the pin2/3 disconnect, followed by the voltage reset, followed by the pin 2/3 reconnect is not done quickly but still with enough time for the Skybox to notice each of the changes, then a Critical Error will display.
AFCI bypass device:
To control the timing of the steps, I used an Arduino Uno clone. The Arduino checks voltage levels at the different pins, and controls the output to Pin 3 accordingly. Some minor electronics are needed outside the Arduino for that.
On Pin 1 I added a 12v regulator with a 1uF capacitor on the load side. This is to power the Arduino. The capacitor acts as a small buffer to keep the voltage steady for the Arduino when the Skybox drops the power on Pin 1 for a reset.
Pin 2 was easy. It's a ground. Nothing else is needed here.
Pin 3 gets connected to an NPN transistor, which acts as a switch to ground for Pin 3. The emitter of the transistor is connected to ground, the collector goes to Pin 3, and the base of the transistor is connected to the Arduino through a resistor. The resistor controls the base current. The resistor and transistor combination I used is drawing about 8 milliamps.
Pin 4 goes to an Op Amp. This is where I had the most trouble. Bringing 10-15 millivolts up into the 3-5 volt range is difficult to do without introducing a lot of noise when there is no signal from the Skybox. I originally had planned to use a really nice low noise op amp, but when it arrived I discovered it was smaller than a tick. Too small for me to work with. So, I used a standard 8 pin DIP OpAmp that I had on hand. This may be part of the noise problem, or not, but it led me to approach this an entirely different way. I've now setup the OpAmp to put out about 4.6v when there is no signal from pin 4. The Arduino watches this voltage and triggers when the voltage drops. Just the reverse of how I originally planned it. When the Skybox sends its test signal, the OpAmp comes down from it's rail voltage and only outputs the amplified test signal. This is probably only a volt or so. Perfect for the Arduino to trigger off of. To keep this low signal clean, I added an inductor and a capacitor to help filter any higher frequencies that may have been amplified. The goal being lower power going to the Arduino.