Halo / Halo+ Smoke and CO detectors

Interesting point @mike.maxwell . I would have swear its was an SDR always ON but just muted, waiting for AFSK tone, once the the matching tone is received is decoded into its referenced value. At least that's my observed behavior, the AFSK will break mute and begin announcing the radio station tuned, once the EOL tone is received, the radio goes back to mute, I feel that's decoding right there.
Tell you what, today is test tone day here were I live at 1pm, I will post the zigbee cluster engaged at ST driver during the test. If this is true that is reliant on internet, then I would not longer be interested.

That antenna right there tells me its an SDR, not a streamed radio from internet.

Thanks for your feedback.

Is there a way to enter your S.A.M.E. location ("County") code without an internet connection? Can that be done through the Zigbee interface?

maybe that was what I saw it trying to do, I knew I saw it hitting the internet for something.
By the time I got a sample of this device to work on, whatever that internet connection was trying to do was failing as those cloud services were already shutdown so I wasn't able to trace that code any further.

The driver for this device is posted in our public repo:

Yes Sir, you have to enter the frequency that is related to your SAME area per NWS:

Here is a log dump of when I received the EOL ASFK tone and muted back the radio:
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:45 PM: debug finalResult: [type:mute, value:station7mute, descriptionText:Station has been modified.]
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:45 PM: debug Mute or Unmute
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:45 PM: debug Weather Attribute - [raw:DABB05FD030801001000, dni:DABB, endpoint:05, cluster:FD03, size:8, attrId:0001, result:success, encoding:10, value:00, isValidForDataType:true, clusterInt:64771, attrInt:1]
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:45 PM: info Known DescMap : [raw:DABB05FD030801001000, dni:DABB, endpoint:05, cluster:FD03, size:8, attrId:0001, result:success, encoding:10, value:00, isValidForDataType:true, clusterInt:64771, attrInt:1]
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:45 PM: debug description is read attr - raw: DABB05FD030801001000, dni: DABB, endpoint: 05, cluster: FD03, size: 8, attrId: 0001, result: success, encoding: 10, value: 00
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:44 PM: info Master room Halo+ updates: No Weather Alert
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:44 PM: debug finalResult: [type:update, value:No Weather Alert]
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:44 PM: debug Weather Attribute - [raw:DABB05FD030800003000, dni:DABB, endpoint:05, cluster:FD03, size:8, attrId:0000, result:success, encoding:30, value:00, isValidForDataType:true, clusterInt:64771, attrInt:0]
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:44 PM: info Known DescMap : [raw:DABB05FD030800003000, dni:DABB, endpoint:05, cluster:FD03, size:8, attrId:0000, result:success, encoding:30, value:00, isValidForDataType:true, clusterInt:64771, attrInt:0]
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:44 PM: debug description is read attr - raw: DABB05FD030800003000, dni: DABB, endpoint: 05, cluster: FD03, size: 8, attrId: 0000, result: success, encoding: 30, value: 00
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:43 PM: debug ZigBee Event: [name:level, value:60]
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:43 PM: debug description is read attr - raw: DABB0200080800002098, dni: DABB, endpoint: 02, cluster: 0008, size: 8, attrId: 0000, result: success, encoding: 20, value: 98
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:43 PM: debug finalResult: [type:hushalarm, value:disabled, descriptionText:Hush disabled.]
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:43 PM: info Known DescMap : [raw:DABB04FD010801003003, dni:DABB, endpoint:04, cluster:FD01, size:8, attrId:0001, result:success, encoding:30, value:03, isValidForDataType:true, clusterInt:64769, attrInt:1]
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:43 PM: debug description is read attr - raw: DABB04FD010801003003, dni: DABB, endpoint: 04, cluster: FD01, size: 8, attrId: 0001, result: success, encoding: 30, value: 03
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:43 PM: debug finalResult: [type:alarm_state, value:clear, descriptionText:Alert has cleared.]
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:43 PM: debug status false
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:43 PM: debug status 0
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:43 PM: info Known DescMap : [raw:0104 FD00 04 01 0000 00 DABB 01 01 1201 00 01 00, profileId:0104, clusterId:FD00, sourceEndpoint:04, destinationEndpoint:01, options:0000, messageType:00, dni:DABB, isClusterSpecific:true, isManufacturerSpecific:true, manufacturerId:1201, command:00, direction:01, data:[00], clusterInt:64768, commandInt:0]
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:43 PM: debug description is catchall: 0104 FD00 04 01 0000 00 DABB 01 01 1201 00 01 00
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:17 PM: debug finalResult: [type:alarm_state, value:requiredWeeklyTest]
ce427770-3a01-4d27-986a-751e4ebedcd5 6:39:17 PM: info Known DescMap : [raw:DABB04FD010800003000, dni:DABB, endpoint:04, cluster:FD01, size:8, attrId:0000, result:success,

It's a bit more complex than that. The County codes (or FIPS codes) are not the same as the frequencies. They used the County codes to determine if the threat is effective to your area, then, if it is and if you have selected that you want to be alerted to that type of threat, it will enable the radio that is appropriate for your area.

Well for analog radio are same 7 frequencies all over the nation, radio transmitters are positioned so they overlap to give maximum coverage :slight_smile:

Excerpt
Known as the "Voice of NOAA's National Weather Service," NWR is provided as a public service by the National Oceanic and Atmospheric Administration (NOAA), part of the Department of Commerce. NWR includes more than 1000 transmitters, covering all 50 states, adjacent coastal waters, Puerto Rico, the U.S. Virgin Islands, and the U.S. Pacific Territories. NWR requires a special radio receiver or scanner capable of picking up the signal. Broadcasts are found in the VHF public service band at these seven frequencies (MHz):

162.400 162.425 162.450 162.475 162.500 162.525 162.550

Radio station is local only to the county, so you dont receive alerts from other counties or states location.

You are missing the entire point of SAME. Yes, anyone can listen to NOAA Weather Radios and many areas have several frequencies that can be received. The point of SAME is to turn the radio on when there is a threat to your "Specific Area" so you don't have to listen to information about threats that are for some area that may be near enough to receive the same frequency but not threatened by the local event.

You are entirely incorrect that the stations are limited in some way by county. I'm not sure how you restrict VHF radio transmissions from crossing county lines but that is not how it works. Those VHF frequencies were in use decades before SAME ever existed.

Here is a good summary: Using NWR Same

I think FIPS is only correlating that you are just selecting the correct station name to the frequency to you location, but you could do the same manually selecting the frequency. Don't know enough about the subject, but should not be an issue for the decoding, maybe you are right.

I ve been looking at othe SDR SAME decoding projects:
#SAME__EEE is a list of current and proposed event codes.

SAME__EEE={
'' : None,
'BZW' : 'Blizzard Warning',
'CFA' : 'Coastal Flood Watch',
'CFW' : 'Coastal Flood Warning',
'DSW' : 'Dust Storm Warning',
'FFA' : 'Flash Flood Watch',
'FFW' : 'Flash Flood Warning',
'FFS' : 'Flash Flood Statement',
'FLA' : 'Flood Watch',
'FLW' : 'Flood Warning',
'FLS' : 'Flood Statement',
'HWA' : 'High Wind Watch',
'HWW' : 'High Wind Warning',
'HUA' : 'Hurricane Watch',
'HUW' : 'Hurricane Warning',
'HLS' : 'Hurricane Statement',
'SVA' : 'Severe Thunderstorm Watch',
'SVR' : 'Severe Thunderstorm Warning',
'SVS' : 'Severe Weather Statement',
'SMW' : 'Special Marine Warning',
'SPS' : 'Special Weather Statement',
'TOA' : 'Tornado Watch',
'TOR' : 'Tornado Warning',
'TRA' : 'Tropical Storm Watch',
'TRW' : 'Tropical Storm Warning',
'TSA' : 'Tsunami Watch',
'TSW' : 'Tsunami Warning',
'WSA' : 'Winter Storm Watch',
'WSW' : 'Winter Storm Warning',
'EAN' : 'Emergency Action Notification',
'EAT' : 'Emergengy Action Termination',
'NIC' : 'National Information Center',
'NPT' : 'National Periodic Test',
'NAT' : 'National Audible Test',
'NST' : 'National Silent Test',
'RMT' : 'Required Monthly Test',
'RWT' : 'Required Weekly Test',
'ADR' : 'Administrative Message',
'AVA' : 'Avalanche Watch',
'AVW' : 'Avalanche Warning',
'CAE' : 'Child Abduction Emergency',
'CDW' : 'Civil Danger Warning',
'CEM' : 'Civil Emergency Message',
'EQW' : 'Earthquake Warning',
'EVI' : 'Evacuation Immediate',
'FRW' : 'Fire Warning',
'HMW' : 'Hazardous Materials Warning',
'LEW' : 'Law Enforcement Warning',
'LAE' : 'Local Area Emergency',
'TOE' : '911 Outage Emergency',
'NUW' : 'Nuclear Plant Warning',
'RHW' : 'Radiological Hazard Warning',
'SPW' : 'Shelter in Place Warning',
'VOW' : 'Volcano Warning',
'NMN' : 'Network Message Notification',
'DMO' : 'Demo Warning',
'EWW' : 'Extreme Wind Warning',
'SSA' : 'Storm Surge Watch',
'SSW' : 'Storm Surge Warning',
'FSW' : 'Flash Freeze Warning',
'FZW' : 'Freeze Warning',
'HLS' : 'Hurricane Local Statement',
'SMW' : 'Special Marine Warning',
'BHW' : 'Biological Hazard Warning',
'BWW' : 'Boil Water Warning',
'CHW' : 'Chemical Hazard Warning',
'CWW' : 'Contaminated Water Warning',
'DBA' : 'Dam Watch',
'DBW' : 'Dam Break Warning',
'DEW' : 'Contagious Disease Warning',
'EVA' : 'Evacuation Watch',
'FCW' : 'Food Contamination Warning',
'IBW' : 'Iceberg Warning',
'IFW' : 'Industrial Fire Warning',
'LSW' : 'Land Slide Warning',
'POS' : 'Power Outage Statement',
'WFA' : 'Wild Fire Watch',
'WFW' : 'Wild Fire Warning',

Those are the event types. I didn't even get into that. If you don't select the event types you will just hear the constant weather broadcast information all day long. The County Codes and the Event Types allow you to only get an alert when it's an event that you are interested in and in an area that you have selected. This also allows you to selectively listen to events that are not in your "home (or local) area. For example, my boat is docked in Maryland - about 50 miles away from my residence in Virginia. I can select the code for that County, Anne Arundel County MD, and hear events for that area in addition to my home area, Falls Church Virginia.

I don't know squat about the Halo or Halo +, I've never used one. But I have been using NOAA weather radio and SAME for decades. It's a bit cumbersome but very useful. Especially if you don't have ready access to the internet (more of a problem in the past than it is today).

I agree @Eric.C.Miller, that's my main goal here. That's why I am interested on the Halo+ precisely because of your last comment regarding the lack of internet during extreme weather. I could just do with my Baofeng or Midland as well and called it a day. But wouldn't be cooler to have an always on device that could send me a message while I am at work 40 miles away and automate stuff at home as extra safety.

Hey @mike.maxwell, a question.

Could cluster FD03 could be what I am looking for, could this be the decoded message in my event log:
read attr - raw: DABB05FD030800003000, dni: DABB, endpoint: 05, cluster: FD03, size: 8, attrId: 0000, result: success, encoding: 30, value: 00

debug Weather Attribute - [raw:DABB05FD030800003000, dni:DABB, endpoint:05, cluster:FD03, size:8, attrId:0000, result:success, encoding:30, value:00, isValidForDataType:true, clusterInt:64771, attrInt:0]

debug finalResult: [type:alarm_state, value:requiredWeeklyTest]

I don't know, what were you looking for?

Yeah, I totally get the application of it!

I have a somewhat dated Reecom radio (http://www.reecominc.com/) at home but the Halo+, or something like it, seems much cooler.

1 Like

Bear with me, this is my first zigbee attempt to debug ;-).

Looking at your code, when you want to for example, hush alarm, you reference this:

//need to verify ep, st attrib id's 1, and 0
"he cr 0x${device.deviceNetworkId} 0x01 0xFD01 0x0000 0x30 5 120 {} {1201}","delay 200", //hush???
"he cr 0x${device.deviceNetworkId} 0x01 0xFD01 0x0001 0x0A 5 120 {} {1201}","delay 200", //hush???
"he cr 0x${device.deviceNetworkId} 0x01 0xFD02 0x0000 0x29 5 120 {} {1201}","delay 200", //no idea...

So looking at my logs, could it be that FD03 is the cluster addressed when SAME message is received, thus the current value of the weather variable:

6:39:45 PM: debug finalResult: [type:mute, value:station7mute, descriptionText:Station has been modified.]

6:39:45 PM: debug Mute or Unmute

6:39:45 PM: debug Weather Attribute - [raw:DABB05FD030801001000, dni:DABB, endpoint:05, cluster:FD03, size:8, attrId:0001, result:success, encoding:10, value:00, isValidForDataType:true, clusterInt:64771, attrInt:1]

6:39:45 PM: info Known DescMap : [raw:DABB05FD030801001000, dni:DABB, endpoint:05, cluster:FD03, size:8, attrId:0001, result:success, encoding:10, value:00, isValidForDataType:true, clusterInt:64771, attrInt:1]

6:39:45 PM: debug description is read attr - raw: DABB05FD030801001000, dni: DABB, endpoint: 05, cluster: FD03, size: 8, attrId: 0001, result: success, encoding: 10, value: 00

6:39:44 PM: info Master room Halo+ updates: No Weather Alert

6:39:44 PM: debug finalResult: [type:update, value:No Weather Alert]

6:39:44 PM: debug Weather Attribute - [raw:DABB05FD030800003000, dni:DABB, endpoint:05, cluster**:FD03**, size:8, attrId:0000, result:success, encoding:30, value:00, isValidForDataType:true, clusterInt:64771, attrInt:0]

6:39:44 PM: info Known DescMap : [raw:DABB05FD030800003000, dni:DABB, endpoint:05, cluster:FD03, size:8, attrId:0000, result:success, encoding:30, value:00, isValidForDataType:true, clusterInt:64771, attrInt:0]

6:39:44 PM: debug description is read attr - raw: DABB05FD030800003000, dni: DABB, endpoint: 05, cluster: FD03, size: 8, attrId: 0000, result: success, encoding: 30, value: 00

6:39:43 PM: debug ZigBee Event: [name:level, value:60]

6:39:43 PM: debug description is read attr - raw: DABB0200080800002098, dni: DABB, endpoint: 02, cluster: 0008, size: 8, attrId: 0000, result: success, encoding: 20, value: 98

6:39:43 PM: debug finalResult: [type:hushalarm, value:disabled, descriptionText:Hush disabled.]

6:39:43 PM: info Known DescMap : [raw:DABB04FD010801003003, dni:DABB, endpoint:04, cluster:FD01, size:8, attrId:0001, result:success, encoding:30, value:03, isValidForDataType:true, clusterInt:64769, attrInt:1]

6:39:43 PM: debug description is read attr - raw: DABB04FD010801003003, dni: DABB, endpoint: 04, cluster: FD01, size: 8, attrId: 0001, result: success, encoding: 30, value: 03

6:39:43 PM: debug finalResult: [type:alarm_state, value:clear, descriptionText:Alert has cleared.]

6:39:43 PM: debug status false

6:39:43 PM: debug status 0

6:39:43 PM: info Known DescMap : [raw:0104 FD00 04 01 0000 00 DABB 01 01 1201 00 01 00, profileId:0104, clusterId:FD00, sourceEndpoint:04, destinationEndpoint:01, options:0000, messageType:00, dni:DABB, isClusterSpecific:true, isManufacturerSpecific:true, manufacturerId:1201, command:00, direction:01, data:[00], clusterInt:64768, commandInt:0]

6:39:43 PM: debug description is catchall: 0104 FD00 04 01 0000 00 DABB 01 01 1201 00 01 00

6:39:17 PM: debug finalResult: [type:alarm_state, value:requiredWeeklyTest]

6:39:17 PM: info Known DescMap : [raw:DABB04FD010800003000, dni:DABB, endpoint:04, cluster:FD01, size:8, attrId:0000, result:success,

Imagine this puppy connected to a raspi nodejs to do the same:

Interesting. Do you know what it spits out on the serial port? It may be the same information that the Reecom puts on it's LCD display . . .

This looks like fun!

https://learn.sparkfun.com/tutorials/si4707-hookup-guide/introduction-

Damn. They retired it!

I just joined the HE family with a C7 coming from ST. I have about 6 Halo / Halo+ devices. I moved my first one over to HE today and I noticed the hush commands aren't there on the device screen. Is there any way to request they get added? I still have the rest of them pair with ST that I could maybe try to provide some debug logs to narrow down the hush red, green, and blue commands.

Not sure there is anyone coding for the Halo/Halo+ anymore. The one thing I would say (being a fellow Halo user) is to double check their expiration dates.