Fireangel fire/CO/heat alarm network bridge integration

Have you tried running with the debug sketch that Chris provided on GitHub?
Here’s a link to it

If that doesn’t show up anything - based on my experience, check the logic converters are working.
I used a cheap logic analyser to do this, and when I swapped them out it started to work.

Good luck

Malcolm

Yeah it looks like something’s wrong somewhere. Not sure I’m experienced enough to try swapping out the logic converters as Chris helpfully sent me a prebuilt board but I’ll certainly look into it.

14:26:59.347 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:26:59.486 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:26:59.625 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:26:59.763 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:26:59.902 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:00.039 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:00.224 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:00.363 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:00.501 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:00.640 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:00.778 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:00.916 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:01.054 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:01.237 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:01.377 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:01.515 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:01.653 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:01.791 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:01.931 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:02.114 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:02.254 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:02.391 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:02.529 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:02.666 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:02.802 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:02.986 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:03.125 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:03.263 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:03.401 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:03.540 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:03.679 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:03.817 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:04.002 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:04.139 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:04.277 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:04.416 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:04.558 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:04.698 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:04.835 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:04.976 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:05.159 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:05.297 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:05.433 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:05.569 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:05.709 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:05.848 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:06.032 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:06.170 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:06.308 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:06.446 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:06.583 -> No reply from radio. SPI Buffer= 0000000000000000000000000
14:27:06.583 -> Radio not ready - Trying to reset

Ok, I didn’t realise it was pre-built by Chris.
Was it complete (all parts included), you said you’d changed the radio module?
Maybe check the radio is fully seated in the board, and anything else that might have moved in transit…

Everything is soldered down other than the radio module which just pushes into some connectors.

Have attached a link of what happens at boot to go with the log.

Hi. Will PM you to discuss debugging and update here if there are any findings worth sharing.

Only need the one silence button. Not one per alarm.

I’ve found silence can be take a little bit of time to propagate through all the alarms when pressing a physical alarm button… pressing it from HA should work just the same.

I read somewhere in Fireangels faq that if an alarm is triggered, pressing a remote alarm won’t silence it. It has to be the originating alarm… but from what I tested, that was nonsense. I could silence from a remote alarm and thus also from HA.

Are your shell scripts pointing to the correct tty/usbX device?
(Yaml behind the button).

Confirm by running a command like pairing status (8).
Should come back and say network paired.

I am looking to purchase some smart home smoke, heat and co detectors and came across this very interesting thread.
I have a question, if anyone can help - would the Fireangel pro connected range be compatible, or are these different from the wisafe2 mentioned?

Thanks @chopwood

This is the behaviour i am seeing, for example, Hall Way Smoke alarm is triggered by the kids burning toast :slight_smile: - this triggers the alarm and set off all the alarms in the house (including the CO detectors) however when i silence the alarm using the button in HA, it silences all the alarms except the one that triggered the event, which means i have to manually go over and press the button to silence it. (not the end of the world as it means you have to go see whats going on so could be called a safety feature) - If i remote silence this from another unit - i also get the same result - silences it everywhere except the unit that was triggered.

So, i thought i would get a control panel (the £15.99 one that you can silence and locate etc and make it easier for the 5ft wife to reach and silence the alarms lol) however yes this works, but once an emergency is triggered, the lights on this continue to flash and shows an error/fault in the system (which i believe in the pseudo alarm which is causing it) - other than this though its working great.

In terms of the shell - yes - i can see the message from the gateway “CMD OK” - then the command runs, i can even see the Silence against all the alarms event - it just doesn’t silence it.

(Ignore all the unknowns, its because ive recently updated HA and not been around to press the test buttons)

The Connected Pro range use the same, or similar enough modules. I am using this with the Connected Pro alarms and it can connect and see/get/send information to/from them.

Thanks @robertwigley. @chopwood (Chris) would you be willing to sell me one too? Just waiting for 6 alarms fo arrive from Amazon!

@tschubb do you still have some spare boards? Are these fully soldered to. Ake up the full solution, as I’d be interested in purchase one. Also asked @chopwood if he would be able /willing to make me one. Also happy to help testing. I have 4 smoke, 1 heat and 2 CO alarms coming at the weekend along with a gateway and a controller. Thanks for all the work everyone has done with this, it’s really much appreciated.

@gavb Yeah I still have spares unsoldered. I could easier solder them however I need to get the right size headers. (I cut and bodged the ones I had to make mine)

Looks like I am ready to add the config to HASS!

INIT OK
{"heartBeat":"0"}
{"heartBeat":"1"}
{"heartBeat":"2"}
{"heartBeat":"3"}
{"heartBeat":"4"}
{"heartBeat":"5"}
{"heartBeat":"6"}
NETWORK UNPAIRED
NETWORK PAIRING MODE ACTIVATED
=====================
NETWORK IS NOW PAIRED

I am not 100% if the 3.3v jumper wire was required as Minicom reports “INIT FAILED/Radio not ready - Trying to reset” but it works via the Arduino serial monitor. (I only tested with Minicom before adding the jumper)

1 Like

So although the ‘silence behaviour’ you are describing has not been my experience ( I am able to silence the originating alarm from another alarm or from HA)… It is described as the expected behaviour by FireAngel.

https://www.fireangel.co.uk/home/faq/#ive-silenced-one-of-the-interlinked-units-but-the-others-are-still-sounding-what-is-happening

What is the model/version of the alarm are you triggering?

Also, an interesting point RE: the control panel. I don’t have one of those.
If you are getting better silence behaviour from a control panel, than from pressing an alarm button, then we can discuss how to capture that code (jumper-off raw signal mode).

Then, it should be easy to implement the new (control-panel simulating) silence feature in the code.

@chopwood Is there a way to trigger/poll an update of each device other than pressing the test button on each device or waiting for some event to occur? I am looking at either polling them to get an update on reboot/template entities reload or alternatively modifying the yaml to try and store/restore the last known state.

Hi Tom, do you have a spare board, I am ok to solder so just the barebones is needed :slight_smile:
thanks

@robertwigley
Removing an alarm from the base will push an update (which contains battery state), etc as well.
So that’s one way to get an update without pressing the test button and waking the house up.

I’m not sure about querying the devices for their status… The logic seems to be to preserve power, which means they send data out on an event change only.
As such, I too thought about trying to retain values through the yaml, but didn’t see how to do this with template-sensors.

I will re-visit that at some point. But happy to take recommendations RE: optimising / improving the yaml if you come accross anything.

Working with
@mastermc0
@Clam58

Who reported issues with “Init Failed” after building the project, because of issues with level-shifters…

I found I could reproduce the issue with certain combinations of
ArduioNanoClone + LevelShifters + USB3port

Changing any of those resolved the issue for me.

However, with it intentionally in a state where it wasn’t working, I had a probe-around.
I could see that clock was making it through to the Nano. But it must have been too deformed for the Nano to ‘see’.
So without the clock, it meant the Nano sent no data out of the MISO line.

The level converters are there to buffer the Radio (3.3v) to the Ardunio (5v).
There are 5 pins to buffer in total (MISO, MOSI, Clock, Chip-Select & Interrupt). Hence why there’s 2x 4-CH level shifters.

In the direction of Arduino to Radio, the level converters are absolutely required.
However, in the direction of Radio to Arduino, they’re just a nice-to-have.

The Clock runs in the direction from the Radio, to the Arduino. And, as it happens, it’s on its own level shifter…

So moral of the story:
If you like, you could fit just the one level-shifter, and bypass 1-CH the other with a wire.
It will still work, and if the level-shifters aren’t the ‘finest’ quality, it might even work better.

bypass-clock-level-shifter-1

1 Like

Thanks for confirming. I had already figured out that it also reports on removing it from the base as well as pressing the test button.

I was really just looking to see if there was a way to trigger an update through a service call or similar, but having given it some thought, it is clearly only reporting when necessary to save power (as you say) and even if there was a way to trigger an update with a service call, it would likely be detrimental to battery life. As these are technically non-replaceable batteries, that doesn’t seem a good idea for overall device longevity.

For this reason, I have been investigating workarounds and have already found a way to hold the states on both reboot and reloading of template entities.

I am actually working on a rather large revamp of the entire yaml configuration to make it work more in line with Home Assistant guidelines and terminology (e.g. using binary sensors rather than sensors where feasible and device class names for states). I am currently about half way there and will be sure to share it with both you (in case you want to update your GitHub repository) and the community when I have finished and am happy it is all working correctly. Therefore, I wouldn’t waste your time revisiting the yaml just yet, as you will probably be reinventing the wheel. :smiley:

2 Likes

Great, cheers @robertwigley.
I had no doubt that the yaml had room for improvement.

Cheers for taking it on. Looking forward to your contribution :+1:

1 Like

Did you ever get to the bottom of the phantom missing A5B813 device message? I am seeing the exact same message relating to device A5B813, which is the ID of the bridge in the Arduino sketch. @chopwood are you able to shed any further light on why the bridge is apparently reporting itself missing?