sapienzaapps / galileo-terremoti

SeismoCloud is a warning system for earthquakes (Earthquake Early Warning -- EEW) based on a low cost sismometers' network.
http://www.seismocloud.com
GNU General Public License v3.0
12 stars 5 forks source link

Info request #12

Closed lorenzo-pizzari closed 6 years ago

lorenzo-pizzari commented 6 years ago

Hi, I was looking at the code. Nice job!

I've seen that the device send his status every 14 mins and when an event occurs send a data packet every 5 seconds.

My question is: Why there is this 5 seconds delay during the event? More data isn't better?

Enrico204 commented 6 years ago

Hi @lorenzo-pizzari , thanks! Actually, the (server-side) earthquake-detection algorithm doesn't need data beyond the initial threshold violation (by now, at least). This is mainly because not all sensors are capable of doing accurate measurements after few seconds (in seismic wave). For instance, a smartphone (with SeismoCloud app which implements a similar algorithm) begins to vibrate and shift (because it's not fixed to a wall or whatever, but usually in a flat table). However, we'll add a feature to export a data-flow (eg. for long-term storage and analysis) in the near future :-)

lorenzo-pizzari commented 6 years ago

Thanks Enrico,

I'm just looking around for my thesis project that's about scalable infrastructure for management of traffic peaks coming from wireless sensor networks.

Enrico204 commented 6 years ago

If you're interested in, we're switching to MQTT (with a fallback to HTTP) also because of traffic peaks: based on tests that I've done for my BSc thesis, an MQTT implementation is capable to handle hundred of thousands of "messages per seconds" (in this case, wave signaling), as opposite to HTTP which is capable to handle just 1-3k messages per seconds. (test environment includes Apache HTTP client libraries, and Eclipse Paho MQTT client library)

Also, some MQTT broker implementations (such as RabbitMQ) have features that allows the creation of scalable stateless instances, which can be used in a container platform (Docker-based, for example) to build an (automatic) scalable system. We're doing just this on the backend.