TinyGSM | A small Arduino library for GSM modules

 by   vshymanskyy C++ Version: v0.11.5 License: LGPL-3.0

kandi X-RAY | TinyGSM Summary

kandi X-RAY | TinyGSM Summary

TinyGSM is a C++ library typically used in Internet of Things (IoT), Arduino applications. TinyGSM has no bugs, it has no vulnerabilities, it has a Weak Copyleft License and it has medium support. You can download it from GitHub.

The complete WebClient example for Arduino Uno (via Software Serial) takes little resources:. Arduino GSM library uses 15868 bytes (49%) of Flash and 1113 bytes (54%) of RAM in a similar scenario. TinyGSM also pulls data gently from the modem (whenever possible), so it can operate on very little RAM. Now, you have more space for your experiments.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              TinyGSM has a medium active ecosystem.
              It has 1666 star(s) with 634 fork(s). There are 80 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 227 open issues and 382 have been closed. On average issues are closed in 121 days. There are 39 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of TinyGSM is v0.11.5

            kandi-Quality Quality

              TinyGSM has 0 bugs and 0 code smells.

            kandi-Security Security

              TinyGSM has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              TinyGSM code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              TinyGSM is licensed under the LGPL-3.0 License. This license is Weak Copyleft.
              Weak Copyleft licenses have some restrictions, but you can use them in commercial projects.

            kandi-Reuse Reuse

              TinyGSM releases are available to install and integrate.
              Installation instructions, examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of TinyGSM
            Get all kandi verified functions for this library.

            TinyGSM Key Features

            No Key Features are available at this moment for TinyGSM.

            TinyGSM Examples and Code Snippets

            No Code Snippets are available at this moment for TinyGSM.

            Community Discussions

            QUESTION

            Thinger.IO client setup for GPRS enabled ESP32 project
            Asked 2022-Apr-02 at 21:33

            I've been using the Thinger.io platform for some of my IoT projects (mostly ESP8266 modules) for quite a long time now. The way I implemented it is something similar to that:

            ...

            ANSWER

            Answered 2022-Mar-27 at 14:01

            It would be better if you ask this question on the thinger community, the thinger.io https://community.thinger.io/ where the thinger devs or community will be listening.

            I have some working code, see below, this works with SIM7000E, but it should work OK with SIM800 the code should work the same. I have noticed that you are not using the thinger library (ThingerTinyGSM.h) and this is probably why the device isn't connecting to thinger.

            Source https://stackoverflow.com/questions/71542363

            QUESTION

            TinyGSM c++ CRTP implementation
            Asked 2021-Oct-06 at 10:12

            I am trying to understand the internals of https://github.com/vshymanskyy/TinyGSM/tree/master/src and am confused with how the classes are constructed.

            In particular I see that in TinyGsmClientBG96.h they define a class that inherits from multiple templated parent classes.

            ...

            ANSWER

            Answered 2021-Sep-30 at 00:20

            Is this a common pattern in c++?

            Yes, it is called CRTP - curiously recurring template pattern.

            Why not use function overriding in this case?

            override relies on virtual tables, causing extra runtime overhead.

            What is the thinking behind this implementation?

            Say, we want a class hierarchy with overridable methods. The classic OOP approach is virtual functions. However, they aren't zero-cost: when you have

            Source https://stackoverflow.com/questions/69008008

            QUESTION

            Sending Sensor Data to Firebase using ESP32+Sim800L
            Asked 2021-Jun-08 at 05:47

            I have a TTGO T-CALL ESP32+Sim800L board and I want to send accelerometer data to Firebase. I am using the TinyGSM library which supports SSL/https connections for Sim800L. I am currently sending dummy data to see if it works but it is giving me a failed flag. Why is it not sending data to Firebase?

            ...

            ANSWER

            Answered 2021-Jun-08 at 05:47

            I didn't find a lot of resources online, however, I did manage to do this and I made a GitHub repo for anyone who needs help with the same.

            Basically as Firebase accepts only Https requests, it is not possible to formulate that on most microcontrollers and GSM modules. To circumvent this problem, I created a php server to which I can send an HTTP POST request and the script can get the data from it and push it to Firebase with a php firebase library.

            Source https://stackoverflow.com/questions/67224717

            QUESTION

            Unable to send HTTP POST payload of size greater than 1449 characters with SIM800L+ESP32
            Asked 2021-May-04 at 02:30

            So I am sending data to my php script hosted on 000WebHost via HTTP POST on my ESP32+SIM800L set up. I am recording sensor data at 800Hz and storing it in an character array like: a[]=3&a[]=5&a[]=8... which becomes my payload array for the POST request.

            For some reason I can only send 161 values which is a Content Length of roughly 1449.

            The code is a bit lengthy so I have reduced it here: I am using the TinyGSM Library

            ...

            ANSWER

            Answered 2021-Apr-29 at 17:33

            Nothing obvious, you might want to check your TinyGSM configuration and maybe enable debug output from that library.

            Anyway. There are always the usual suspects:

            Firstly you're not using flow control on the serial link between the ESP32 and the modem. This means that the modem's serial buffers could overflow if you're pumping more data to it that it can send to the Internet. The good solution is to enable serial flow control (hardware would be best, software does the trick) on both sides. A poor solution is to send data more slowly, e.g. 1400 bytes every few seconds.

            Secondly check that there's nothing anomalous happening on the server side, i.e. server closing the connection.

            Then you can check that - whatever the object client is (your code doesn't show where it's created) - it actually permits you to call println() with large amounts of data.

            As for your data amount, there's nothing unusual about sending 6-7 KiB of data via a HTTP request. The problem arises only if you want to send that much every second, through a link that has less throughput - obviously it doesn't have the capacity to do that. GPRS uploads are slow.

            Source https://stackoverflow.com/questions/67315656

            QUESTION

            cannot publish data to my local mqtt server
            Asked 2020-Sep-02 at 16:42

            Please i wish somebody could help me with this. I've been struggling into it since a couple of weeks, i am so new to that.

            I want to send data from ESP32 SIM800L to a mqtt broker. The mqtt server is running on my local machine and the ESP32 SIM800 can perfectly connect to APN. I saw many tutorials doing it with WIFI connection but not GPRS(what i am using).

            I finally find this: tinyGSM and this :arduino mqtt mongodb

            And i adapted it as follows, but still getting connection failed:

            ...

            ANSWER

            Answered 2020-Sep-02 at 16:42

            You set the broker's name to localhost:

            Source https://stackoverflow.com/questions/63709647

            QUESTION

            How can I connect an ESP32 to an A6 GSM module?
            Asked 2020-Mar-23 at 15:05

            I'm really in need of help with this problem and as most commonly advised, I have researched and researched and researched for days and I can't figure out what's wrong...

            With that being said, I'm working on a project that uses an ESP-32S (pinout) and an A6 GSM module. (pinout) I'm attempting to get them connected to have the A6 send data to ThingSpeak... My problem is that I can't get it to work... I have the exact same configuration between the two using an ESP8266 and it connects and works but with the ESP32S it just doesn't seem to work...

            Below is the code I have used to connect the 32 to the A6 and everything says success and pass but it won't change any ThingSpeak values using any methods...

            ...

            ANSWER

            Answered 2020-Mar-23 at 15:05

            The enclose documentation shows ESP32S pins for HW Serial 0 RX/TX on pin GIPO01/GIPO03, HW Serial 1 RX/TX on pin GIPO09/GIPO10 Given you have attached no oter HW at the moment, why not try with the basic config with serial1
            Read about this: https://github.com/G6EJD/ESP32-Using-Hardware-Serial-Ports and use the latest core ESP32 package (as of today 23.3.2020 is 1.04, previous releases had issues with serial. Do notforget to setup the serial a given in the article its different to esp8266 (!) so much about code compability. If you use the code on both platforms, you have to work with

            Source https://stackoverflow.com/questions/60812061

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install TinyGSM

            The general flow of your code should be:.
            Using your phone: - Disable PIN code on the SIM card - Check your balance - Check that APN, User, Pass are correct and you have internet
            Ensure the SIM card is correctly inserted into the module
            Ensure that GSM antenna is firmly attached
            Ensure that you have a stable power supply to the module of at least 2A.
            Check if serial connection is working (Hardware Serial is recommended) Send an AT command using this sketch
            Try out the WebClient example
            Define the module that you are using (choose one and only one) ie, #define TINY_GSM_MODEM_SIM800
            Included TinyGSM #include <TinyGsmClient.h>
            Create a TinyGSM modem instance TinyGsm modem(SerialAT);
            Create one or more TinyGSM client instances For a single connection, use TinyGsmClient client(modem); or TinyGsmClientSecure client(modem); (on supported modules) For multiple connections (on supported modules) use: TinyGsmClient clientX(modem, 0);, TinyGsmClient clientY(modem, 1);, etc or TinyGsmClientSecure clientX(modem, 0);, TinyGsmClientSecure clientY(modem, 1);, etc Secure and insecure clients can usually be mixed when using multiple connections. The total number of connections possible varies by module
            Begin your serial communication and set all your pins as required to power your module and bring it to full functionality. The examples attempt to guess the module's baud rate. In working code, you should use a set baud.
            Wait for the module to be ready (could be as much as 6s, depending on the module)
            Initialize the modem modem.init() or modem.restart() restart generally takes longer than init but ensures the module doesn't have lingering connections
            Unlock your SIM, if necessary: modem.simUnlock(GSM_PIN)
            If using WiFi, specify your SSID information: modem.networkConnect(wifiSSID, wifiPass) Network registration should be automatic on cellular modules
            Wait for network registration to be successful modem.waitForNetwork(600000L)
            If using cellular, establish the GPRS or EPS data connection after your are successfully registered on the network modem.gprsConnect(apn, gprsUser, gprsPass) (or simply modem.gprsConnect(apn)) The same command is used for both GPRS or EPS connection If using a Digi brand cellular XBee, you must specify your GPRS/EPS connection information before waiting for the network. This is true ONLY for Digi cellular XBees! For all other cellular modules, use the GPRS connect function after network registration.
            Connect the TCP or SSL client client.connect(server, port)
            Send out your data.
            Read the whole README (you're looking at it!), particularly the troubleshooting section below.
            Some boards require special configuration.
            Try running the Diagnostics sketch
            Check for highlighted topics here
            If you have a question, please post it in our Gitter chat

            Support

            This library is easy to integrate with lots of sketches which use Ethernet or WiFi. PubSubClient (MQTT), Blynk, HTTP Client and File Download examples are provided.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries

            Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link