Saturday, October 21, 2017

New major version

Since summer time I was adding some features to gateway that led into new major version Changes include:
  • Remote zones added.
  • Added group arm and disarm chain. That is when arming/disarming group by key, Gateway is able to automatically arm/disarm another group or groups.
  • Added group state MQTT publish. Gateway now, if enabled, will publish state of group via MQTT. Such information can captured by Home Assistant or other automation program.
  • MQTT sensor publish structure modified, added group name to path.
  • Updated MQTT library and MQTT protocol to 3.1.1.
  • Added new sensor type "Battery", to easily identify battery powered nodes voltage. 
  • Added new sensor type "Gas", to easily identify any air quality environmental sensor.
  • Added SMS command gateway. Authorized numbers from contact list are able to get Group state or set it On, Off, Arm and Disarm by sending SMS in predefine format to gateway GSM number. This functionality need some testing.
  • Updated NilRTOS to latest version available. In future port is needed to ChNil, which is newer replacement of NilRTOS, but unfortunately not one to one compatible with NilRTOS.
  • Various small enhancements in code and web interface.
New version is now at GItHub.

Monday, September 18, 2017

Remote zones

Recently I have started to play with feature that was on my list for long time. That is remote zone. To introduce it a little, on beginning I had in mind 2 general types of zones. Local zones are directly connected to gateway hardware. These can be build in 8 analog plus 4 digital zones, or zones connected by I2C expansion connector. Then remote zones connected either by RS485(wire) or wireless zones. Connection type does not matter to gateway, but such zones can be divided to two groups by reporting state. One group would report fully its state, that is it will report every change of state out of OK, PIR or Tamper. The other, battery powered remote zones, will only report alarm states such as PIR or Tamper. Gateway will then automatically change the zone state to OK if there is no event received for 2 seconds.

Remote zones brings new possibilities, you can build yourself a wireless PIR and add it to your gateway. Or you can build remote expander, either wired or wireless that will extend you zone count. Imagine you have barn near by, and you have only 4 wires connected to barn, that is only enough wires for authentication node. Now you decide you need two analog plus one digital zones there. Simply enough you connect such zones, with some little protection circuity, directly to authentication node. Add code to authentication node to include zone registration plus zone state handling, and you have 3 new zones connected.

I have here on my desk for test a battery powered remote zone, as shown on
picture. It is running for some days, and seems to do its job properly. I use Chinese all-in-one PIR sensor AS312 attached to PIR shell by hot glue. For this purpose I have modified standard battery node code and added zone state handling, based on interrupt signal coming form PIR sensor. The node does also temperature and humidity monitoring out of external SHT11. Battery life seems to be reasonable, with some modification it could last few months with 700mAh Li-Po. This is tempting, it would be nice to create rechargeable wireless PIR sensor that could be placed into standard commercial PIR shell :). I will publish the code to GitHub as example code.

Registering is same as for sensors. As soon as the node is powered up it will send registration packet and gateway will add a zone in zone tab. Then you can set attributes as for any other zone. Zone setting are sent back to nodes as master copy, and on next power cycle the zone is registered with newly stored  attributes. There are enforced rules for remote zones during registration, such as analog digital flag on bit 15 and it is based on registration  type ('A' or 'D'). Or remote zone flag on bit 12 is set On, and present bit flag on bit 14 is set On. Zone number cannot override any local zone, that is it cannot be lower then 13, or cannot override existing I2C zone. Zone last OK and PIR timestamps are set to registration time. Sleeping battery powered remote zones share the same message queue as sensors, that is gateway keeps registration packet for at least one hour to not loose such packets during node sleep.

Tuesday, August 29, 2017

Realy nodes

After some testing I have finished new relay node. As all nodes it is Arduino compatible board with ATmega 328P clocked at 16MHz@3.3V.
  • Size 6.1 x 5.6 cm.
  • On-board AC/DC power supply. Input 100-240VAC, 50-60Hz. Output 5V/3W. Fused with TVS on input with slow blow 0.5A fuse.
  • 2x Japanese(Panasonic) power relays with COM, NC and NO inputs. With TVS on both.
  • It has more powerful RFM69HW soldered on back with IPX connector.
  • Temperature sensor to indicate overheating based on MCP7900A on ADC6. It is mounted under AC/DC power supply.
  • IO header, rest of pins are taken out. As well as +5V and +3V3 to add another relays or sensors.
  • Programmable via standard FTDI 6 pin 3V3 programmer.
It is available in my online store.  Schematic is in my shared folder, and example sketch is placed on GitHub.

Saturday, July 22, 2017

Node code for PCB 1.4.

I have just created new repositories for nodes version 1.4. Although you can, similarly as I did, covert the code from version 1.3. But all new changes will be as always targeted to the latest version.

There are some changes mostly needed for new hardware features present, like charging indicator and other small corrections.

Tuesday, June 27, 2017

Auto arm moved from zone to group

After improving auto arm, I have realized that auto arm flag should be moved into group instead of zone. That is, it make no sense to have just one zone flagged as auto arm in a group. The algorithm then would not work, if user will not flag all zones in auto arm group, it will not consider all zones.  And most probably gateway will auto arm group that still has some movement detected. To prevent this possible human error, I have moved the auto arm flag to Group setting.

Changes are pushed into GitHub.

The use of auto arm feature can be greatly extended. For example, it can be easily used to lock an electromagnetic locks when authentication node will receive arm packet. As easy as wiring a pair of cable to node, but of course you have to have the electromagnetic locks installed first :).

Monday, June 26, 2017

Improved auto arm

I have just committed to github new improved part for auto arm feature. Previous code mapped the auto arm to zone with oldest alarm, and that was impractical when there was more then one zone in a group. Now the gateway selects it by taking newest alarm from any zone that is in the group. That is, if there is someone moving in at least one zone in a group, the group will not get auto armed.

I will not yet release it as new version, as I have in mind some other improvements.

Saturday, June 3, 2017

SIM800 vs. SIM900

Well it actually looks like there are some differences in SIM800 comparing to SIM900. Echo and command routines are working just fine, but reply to SMS send function is different. SMS is actually sent, but the function is not able detect successful sent. There seems to be two reasons. First, the reply looks little different. That is the echo of SMS text is not preceded with empty line and "> ", but there is simply one line with echo. Second, the reply time of SIM800 is significantly slower then SIM900. It looks like "CMGS:#", the acknowledgement of SMS, comes after the SMS is delivered to actual number.

First problem is relatively easy to solve, on beginning we can ask GSM modem for the version and then branch the SMS send function depending on model. But the second must be investigated. I've seen some command that can make difference in how the SMS sending is handled, but the setting in SIM800 looks right already, interesting :).