BLYNK
HOME       📲 GETTING STARTED       📗 DOCS       ❓HELP CENTER       👉 SKETCH BUILDER

Update rate virtual pin on local server

Hi Blynkers,
I’m new to the forum and hope to get some information of experienced users.
For a project I need a more or less realtime readout of data send and read on a virtual pin. I changed from the cloud based server to a local server since the delay in the cloud (understandable that they try to avoid to get flood with data 1000 times per second) was too high.
Do you have any experiences what sampling rate could be expected? Is there a specific setting for that? I know there are plenty of factors that might influence it (board that I use, WIFI connection etc.), but is there a software side limitation?

I don’t know the answer to your question (for the cloud servers it’s 10 updates per second per pin), but I’m curious about how you’re going to use/view this data.

The database used to store the reading has a maximum resolution of one data point per minute, and if more data is provided then it’s averaged before being written to the database.
The Superchart live view tab obviously shows data as it is received, but I doubt very much whether it would cope with this sort of frequency.
If other widget types are being updated then once again, I doubt if they are actually updated at this frequency, and as the human eye can’t resolve more than around 25 changes per second then a faster update frequency than that is of no value as far as I can see.

Pete.

Found the documentation that may not answer the question, but points you in the right direction…

Flood Error

If your code frequently sends a lot of requests to our server, your hardware will be disconnected. Blynk App may show “Your hardware is offline”

When Blynk.virtualWrite is in the void loop , it generates hundreds of “writes” per second

Here is an example of what may cause flood. DON’T DO THAT:

void loop()
{
  Blynk.virtualWrite(1, value); // This line sends hundreds of messages to Blynk server
  Blynk.run();
}

SOLUTION: If you need to perform actions in time intervals - use timers, for example BlynkTimer.

Using delay() will not solve the problem either. It may cause another issue. Use timers!

If sending hundreds of requests is what you need for your product you may increase flood limit on local server and within Blynk library. For local server you need to change user.message.quota.limit property within server.properties file :

    #100 Req/sec rate limit per user.
    user.message.quota.limit=100

For library you need to change BLYNK_MSG_LIMIT property within BlynkConfig.h file :

    //Limit the amount of outgoing commands.
    #define BLYNK_MSG_LIMIT 20

Pete.

Hi Pete, thanks a lot for your answer. The limitation does not seem to be the problem. Maybe it helps if I describe what should be send.
I use a Wemos D1 mini that is connected via MIDI to my Keyboard. Every time a note is played or released this information will be processed. Worked (without implementation of Blynk) perfectly fine to for example light up LEDs based on played key and velocity.
However, as soon as I would like to send this data (so it is a simple integer variable containing a value between 0-87) an a virtual pin I got a delay.
If I play ten notes in a row he is processing all of them, but with a huge delay. So when I finished playing the notes the data is still getting written to the VPIN.
I really can#t imagine that it is too much data streamed over wifi, and the frequency shouldn’t be an issue as well. Even if I would go for the max (MIDI works with a baud rate of 31250) that should be somehow possible, or?