Code Monkey home page Code Monkey logo

adeon's Introduction

ADEON

Arduino_CI Documentation License: Apache 2.0 GitHub release JSC electronics Donate

ADEON is a software solution for controlling GSM devices (GSM gates, relays, modules etc.) via SMS commands. It consists of two main parts:

  1. ADEON android mobile app available on Google Play
  2. Library for embedded development kits (open-source)

ADEON app allows user to create a list of GSM devices with predefined commands. These commands can be sent in form of SMS message to the target GSM device and thus control its behaviour, e.g. switch on/off a relay, open/close a gate, de/activate alarm etc.

The library for embedded development kits serves to process commands from the ADEON app. It is primarily intended for use with Arduino-like boards but can be also easily integrated to other C++ projects.

For more information please visit our Wiki page.

Documentation

Contributing

There are many ways in which you can participate in the project, for example:

Please read contributing rules for more details.

License

Copyright (c) JSC electronics. All rights reserved.

Licensed under the Apache-2.0 license.

Support

We hope our library helped to speed up your project development. You can support our effort to convert coffe and pizza into a code with a small donation. Any support is much appreciated.

paypal

adeon's People

Watchers

 avatar  avatar

adeon's Issues

Adeon is unable to clear message buffer and ends up in the loop

See the logs below. It seems that after some time the message was finally deleted. However, we should handle this better.

BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETING FAILED
BUFFER DELETED

Adeon crashes when setting parameter name longer than 16 characters

When user tries to set up a parameter longer than 16 characters (maximum supported length), and also he wants to set a callback, Adeon code is accessing unallocated object.

  1. First, Adeon tries to store the parameter in the list
  2. Then it compares the parameter length, and because it exceeds maximum supported length, it won't store the parameter
  3. The function returns NULL reference
  4. Adeon doesn't check the NULL reference, and stores pointer to callback function
  5. Adeon crashes

This issue was fixed in #10

Accessing array out of bounds

.pio/libdeps/m5stack-core-esp32/Adeon/src/AdeonGSM.cpp: In member function 'bool Adeon::Parser::isHashParsingValid()':
.pio/libdeps/m5stack-core-esp32/Adeon/src/AdeonGSM.cpp:358:25: warning: array subscript is above array bounds [-Warray-bounds]
_tmpHash[hashLen] = _nullChar;

Add a callback to be called after all parameters are set

At this moment, we can register a callback for each parameter. After it is set, we can do some action. However, in many cases we send a group of parameters, and it makes sense to do some stuff only once, e.g., notify an user that his commands were received.

We should introduce a new callback for this purpose.

Compiler Warnings

  • Arduino board: UNO R3

  • Arduino IDE version (found in Arduino -> About Arduino menu): 1.8.12

  • PlatformIO Core version, if you use PlatformIO (found in VS Code tab): INSERT
    PLATFORMIO CORE VERSION HERE

  • List the steps to reproduce the problem below (if possible attach a sketch or
    copy the sketch code in too):

Compile example from Arduino IDE in File -> Examples -> Adeon -> SIMComGsm.ino

C:\Arduino\libraries\Adeon\src\utility\MD5.cpp: In static member function 'static void MD5::MD5Update(void*, const void*, size_t)':

C:\Arduino\libraries\Adeon\src\utility\MD5.cpp:215:21: warning: right shift count >= width of type [-Wshift-count-overflow]

  ctx->hi += size >> 29;

                     ^~

Rework phone number format

While I worked on GPRS support, I noticed that all examples and libraries use phone number with international extension, including the + sign. Adeon doesn't use this sign, which makes it incompatible with the rest.

A phone number starting with a country extension without a plus sign, e.g., 420xxxxxxxxx, is invalid. A valid format is either "+420xxxxxxxxx" or "00420xxxxxxxxx".

Make Adeon compatible with TinyGSM

As a bigger refactor, we should rework Adeon to support Stream interface. This would allow us to plug Adeon easily into other network libraries, including TinyGSM.

SIMlib causes conflict with other Serial interfaces

I gave Adeon SIMlib a reference to Serial1, and yet it was also affecting other device on Serial2. After I modified (and simplified) the code, everything worked fine.

Also, HardwareSerial and SoftwareSerial inherit from the Stream class. The code can be heavily simplified.

Arduino Mega: MD5 bitshift warning

Following error is thrown while building sketches for Arduino Mega:

/home/travis/Arduino/libraries/Adeon/src/utility/MD5.cpp: In static member function 'static void MD5::MD5Update(void*, const void*, size_t)':

/home/travis/Arduino/libraries/Adeon/src/utility/MD5.cpp:215:21: warning: right shift count >= width of type [-Wshift-count-overflow]

  ctx->hi += size >> 29

Support of feedback SMS

Note:
This applies to GSM modules which are officialy supported by Adeon library (eg. SimCOM modules).

Description:
Add support for sending status info via SMS after receiving of the Adeon command or phone call with sendFeedback(char* msg). This status info should be sent to sender/caller only if the sender is authorized with ADEON_ADMIN or ADEON_USER user rights (ADEON_HOST excluded).

Example of status info:

  • Command accepted.
  • Command declined โ€“ user is not authorized.
  • Command declined โ€“ wrong format.
  • Drop-call accepted.
  • Drop-call declined.

Adeon causes crash after receiving SMS

Example: SIMComGSM

When I tried the example for the first few times, everything worked. But after the module received more messages, it started crashing every time a new message arrived. I think the responsible code for the crash is in Adeon.

I "solved" the problem by removing all messages from the module. However, this solution just confirmed what's the problem. We need to find a fix.

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.