Increasingly projects are carried on so-called 'Smart Cities', supported by Big Data, Internet of Things... and the good news is that most of them are made with Open Source technologies. We can share, from TodoBI.com our insights about these technologies
Making a city “smart” involves a set of areas we will outline below: Without IOT (Internet Of Things), there will be no Smart City.
Since automatic collected data is the most efficient way to get huge amounts of information, devices connected to the internet are an essential part of a Smart City.
The way we store and process data from city is generally using Big Data and Real Time Streaming technologies.
The final goal where more innovative and custom analysis can be achieved using Artificial Intelligence and Machine Learning. Finally I would include Apps, as usually this kind of solutions is consumed in mobile devices.
Here we outline the common process of building a Smart City solution:
-Design Data Storage Infrastructure
-Real Time Events and Notifications
-Analytics -Visualization (Dashboards)
1) Choosing Data
In a city there are three basic sources of data: citizens, systems, sensors. Use the available information of users, on social networks, informations systems, public statistical information offered by the administration.
A typical example is user with geolocalization enabled in twitter. Information about the systems and services in a city are sometimes available in open data sources. An example could be the water or electricity consumption.
Last but not least, sensors. A city hoping to become “Smart” has to intend to provide automatic information of its environment, and that could be achieved using sensors. Sensors can be anywhere
2) Connecting Devices
Devices (sensors) connects with the real time data streaming and the storage infrastructure using efficient communications protocols, that using light weight packaging and asynchronous communications.
Examples of some communications protocols used:
MQTT (Message Queuing Telemetry Transport) Websocket (bi-directional web communication and connection management)
STOMP (The Simple Text Oriented Messaging Protocol)
XMPP (Extensible Messaging and Presence Protocol)
3) Design Data Storage Infraestructure
The Data Storage Infrastructure for a Smart City solutions has special characteristics, due to the diversity and dynamism of its sources.
Time series DB are frequently used, because of the time evolution of data catched by sensors Some examples of this kind of DB are InfluxDB and Druid.
Another DB commonly used in Smart Cities project are MongoDB (json format advantages), Cassandra (fast insertion advantages), Hadoop (big data frameworks advantages)
4) Real Time events and notifications
Usually Smart Cities solutions have needs for real time notifications on events. To accomplish such requirements the system must have a Stream Analytic engine, that can react to events in real time and send notification. This characteristics bring us some technologies related to this; Storm, Spark Streaming, Flink, WebSocket, Socket.IO
PubNub has 5 main tools:
-Publish Subscribe (Allows Real Time Notifications of Events to users)
-Stream Controller (Allows managing channels and groups of channels)
-Presence (Allows notifications when users login or leave the system, or similar behaviour, device availability for example)
-Access Manager (Allows administrators, to grant or deny permitson users of the systems)
-Storage & Playback (Provide storage for messages,and allows messages retrieval at later time)
Other Open Source projects for Smart Cities -IoT:
- AllSeen Alliance
- Bug Labs dweet and freeboard
- Eclipse IoT (Kura)
- Home Assistant
- Open Connectivity Foundation
- Physical Web/Eddystone
- The Thing System