GithubHelp home page GithubHelp logo

makeict / electronic-door Goto Github PK

View Code? Open in Web Editor NEW
6.0 6.0 0.0 9.08 MB

makeict-electronic-door

JavaScript 15.05% Shell 0.36% Python 8.93% CSS 0.15% HTML 2.53% C++ 28.52% C 0.57% Makefile 0.03% Processing 2.89% G-code 40.96%

electronic-door's Introduction

Master Control Program

This system is used to secure spaces with an electronic door latch.

Dependencies:

Hardware requirements:

  • Server protocol RS-485 for the server/client communication.
  • Arduino Nano for the door client (This is required for the matching footprint).
  • NFC reader. This is the one that we are using for our version of the door lock.

Diagram of the door lock project


Todo

  • Server

    • Super admins vs group admins
    • Make plugins respect disabled mode
    • When unlocking from web ui, display user in log
  • Client

    • New NFC reader
    • Add doorbell input (capacitive?)
    • Design/build case for front
    • Build 2nd client for testing & back door

License

Copyright (C) 2014-2016 MakeICT

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see The GNU licenses page


This is a work in progress. For more information, please visit the MakeICT Wiki.


electronic-door's People

Contributors

alexgibbs606 avatar becauseyouare avatar domstoppable avatar rowbotronics avatar zacharypuls avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

electronic-door's Issues

Duplication of serial data in server logs

Seeing serial data duplicated in the server logs. This shows up pretty frequently on packets both sent by the server and clients. In the following excerpt it looks like it is processing the first part of the packet twice and therefore failing the CRC check.

Jul 12 22:23:27 mcp node[13125]: Resending packet (1/5): fa0b00010102000a3bbcfb
Jul 12 22:23:27 mcp node[13125]: Writing packet : fa0b00010102000a3bbcfb
Jul 12 22:23:27 mcp node[13125]: RAW Serial : fa,b,0,1,1,2,0,a
Jul 12 22:23:27 mcp node[13125]: RAW Serial : fa,b,0,1,1,2,0,a
Jul 12 22:23:28 mcp node[13125]: RAW Serial : 0
Jul 12 22:23:28 mcp node[13125]: RAW Serial : 0
Jul 12 22:23:28 mcp node[13125]: RAW Serial : fa,b,1,0,aa,0,9d,fe
Jul 12 22:23:28 mcp node[13125]: RAW Serial : fa,b,1,0,aa,0,9d,fe
Jul 12 22:23:28 mcp node[13125]: RAW Serial : fe,fb
Jul 12 22:23:28 mcp node[13125]: Incoming packet: fa0b0100aa009dfefa0b0100aa009dfefefb
Jul 12 22:23:28 mcp node[13125]: =============================
Jul 12 22:23:28 mcp node[13125]: Bad CRC 40446 vs 40442
Jul 12 22:23:28 mcp node[13125]: =============================
Jul 12 22:23:28 mcp node[13125]: RAW Serial : fe,fb

Allow user-configurable tone sequences

Users should be able to upload a MIDI file (somewhere) that can be converted, saved in the database, and used by the chimes to personally announce them when they enter with their key.

Re-ordering of Information

The location of information for the specific purpose of the MCP is a little weird. Every time I open the MCP, I wont be needing their groups, birthdate, join date, or change their password. I suggest a re-ordering of the information as follows:

Name [first][last]
Email
Status
KeyInfo
MORE INFO:
...JoinDate
...Birthday
...Groups
...Password

More Info is a click/select-open tab that doesn't show default on the page.

[Solved][enhancements]

Just some very little things that can be changed to save seconds every time the program is used:

  1. On the login screen, the cursor should default to the email box.
  2. Hotkeys? I have ideas for hotkeys if its something that you guys are interested in doing. Just things to make it easier to get around the site.
  3. Being able to tab through the site is currently the best way to get around on the keyboard (I like to stay on the keyboard), and I can't tab to the orange (activate) box to activate keys.
  4. The plugins page is also un-tabable, making a little difficult to navigate there too.

Temporary Key De-activation

Currently, the only way to de-activate a key is to un-enroll it. Once un-enrolled, it has to be re-scanned to enroll it again. In the case of lost keys it would be nice to be able to temporarily de-activate the lost key, then re-activate it if found without requiring the key to be scanned again.

Add log filter options

Can there be a log somewhere that only displays the log of keys that are given? This would be useful to assign application forms and making a 20 min task automatic. Thanks!

More granular logging on the clients

Currently logging is only separated by severity, but it would be very helpful to enable/disable logging by module.

The logging functions could also be improved.

Key activating button error

When I give out a key, The key button, in which the key number is assigned, collapses when keys are assigned.

Unknown clients shouldn't be able to arm the alarm system

Accidentally deleted the client config for the front door, then the case fell open and hit the alarm button, arming the alarm. Couldn't disable it from the front because the client was unknown, so I tried the back, but the server wasn't responding. Loud noises happened, eventually restarted the server and got it disabled.

Alarm doesn't disarm properly

When the alarm is armed scanning a key doesn't seem to disarm it the first time. The pre-alarm starts playing and the key needs to be scanned again to disable it.

2016-August-18 11:46:28 message 01 Front door: door closed
2016-August-18 11:46:27 error Alarm Decoder: alarm-armed-away
2016-August-18 11:46:20 message 01 Front door: door opened
2016-August-18 11:46:19 unlock 01 Front door Paul Herrington 04fcc9daed4480
2016-August-18 11:46:19 message Alarm Decoder: Sending disarm
2016-August-18 11:33:15 message Super Serial connected!
2016-August-18 11:33:14 message Super Serial disconnected
2016-August-18 11:33:13 error Super serial watchdog activated

Cursor default

On the login screen, the cursor should default to the email box.

Add a tag search

Add the ability to search for tags like "back-door" or "admin-closet" along with the ability to search for groups.

Server improperly interpreting escaped start flag

When an escaped start flag is present in a packet, the server correctly identifies the packet, but then also tries to interpret the section starting at the escaped flag as a second packet.

This is unlikely to cause any real issues as the falsely identified packet should always be discarded, but it raises false flags in the logs.

Jul 14 13:08:19 mcp node[27179]: Writing packet : fa1400010102000afefa52fb
Jul 14 13:08:19 mcp node[27179]: RAW Serial : fa,14,0,1,1,2,0,a
Jul 14 13:08:19 mcp node[27179]: RAW Serial : fa,14,0,1,1,2,0,a
Jul 14 13:08:19 mcp node[27179]: RAW Serial : fe,fa,52,fb
Jul 14 13:08:19 mcp node[27179]: Incoming packet: fa1400010102000afefa52fb
Jul 14 13:08:19 mcp node[27179]: RAW Serial : fe,fa,52,fb
Jul 14 13:08:19 mcp node[27179]: Incoming packet: fa52fb
Jul 14 13:08:19 mcp node[27179]: =============================
Jul 14 13:08:19 mcp node[27179]: Bad CRC 65535 vs NaN
Jul 14 13:08:19 mcp node[27179]: =============================

Send message on client startup

This would let the server know that a client has restarted and probably needs to be updated. Will reduce the need for frequent LCD updates when clients restart.

Better serial protocol

The protocol is kind of hacked together and could definitely use some more detail documentation and improvements to the implementation.

Some thoughts:
detect bus disconnects
send/receive timing
proper queueing

Add group administrators

Group administrators should be able to add/remove people from the group that they administrate, but not manage clients, plugins, etc.

Hotkeys

Hotkeys? I have ideas for hotkeys if its something that you guys are interested in doing. Just things to make it easier to get around the site.
Keys for each tab, and maybe even a key to default select the key of the selected person.

Untabbable

Both the key box on the selected member is not able to be tabbed to, as well as the plugins tab all together.

Clients reboot frequently

The microcontroller on the clients reboot fairly regularly. Seems to be related to serial communication.

Server sends static transaction ID on broadcasts, clients see it as a duplicate packet

Because the clients see all broadcast messages as having the same ID, they only process the first one and ignore all following messages.

We should either

  • Modify the server so that it doesn't use a static transaction ID on broadcast messages
  • Modify the clients so that they process all broadcast messages

IMO, broadcast messages should work sorta like UDP. Clients shouldn't acknowledge them, clients should process all broadcast messages (that are applicable), server should not attempt resends on broadcasts.

Autoscroll on log

The terminal log on the bottom, Dom likes it to scroll, I don't, could we get a toggle for that, thanks.

Create TCP server

Create TCP server for wireless clients to connect to. The server should process communications to and from wireless clients in the same manner as clients on the RS485 bus.

Add encryption

Encryption is needed before adding wifi support. Data sent over RS485 should be encrypted as well. Needs support on both server and client.

Information location

The location of information for the specific purpose of the MCP is a little weird. Every time I open the MCP, I wont be needing their groups, birthdate, join date, or change their password. I suggest a re-ordering of the information as follows:

Name [first][last]
Email
Status
KeyInfo
MORE INFO:
JoinDate
Birthday
Groups
Password

More Info is a click/select-open tab that doesn't show default on the page.

Battery backup

Implement hardware/software for battery backup.

Hardware: battery, charge circuitry, source switching

Software: reduce power usage when running on battery

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.