Available online at www.sciencedirect.com
ScienceDirect ScienceDirect
Procedia online Computer 00 (2018) 000–000 Available at Science www.sciencedirect.com Procedia Computer Science 00 (2018) 000–000
ScienceDirect
www.elsevier.com/locate/procedia www.elsevier.com/locate/procedia
Procedia Computer Science 135 (2018) 155–162
3rd International Conference on Computer Science and Computational Intelligence 2018 3rd International Conference on Computer Science and Computational Intelligence 2018
Experiences in building an IoT infrastructure for agriculture Experiences in building an IoT infrastructure for agriculture education education
Kutila Gunasekeraa*, Armando Navas Borrerob, Fabian Vasuianb, Kim P Brycesonb Kutila Gunasekeraa*, Armando Navas Borrerob, Fabian Vasuianb, Kim P Brycesonb Department of Computer Science & Engineering, University of Moratuwa, Katubedda, Sri Lanka of Agriculture andScience Food Science, The University of Queensland, St Lucia, QLD, Sri Australia Department of Computer & Engineering, University of Moratuwa, Katubedda, Lanka b School of Agriculture and Food Science, The University of Queensland, St Lucia, QLD, Australia a
ba School
Abstract Abstract The Internet of Things (IoT) is rapidly spreading, and creating unprecedented opportunities in verticals such as agriculture, healthcare, and (IoT) home isautomation. Agriculture needs to produce professionals who are able use of The Internetindustry of Things rapidly spreading, andeducation creating unprecedented opportunities in verticals such toasmake agriculture, these opportunities the IoT. Towards this goal, we are needs building IoT infrastructure support education healthcare, industrypresented and homebyautomation. Agriculture education to an produce professionalstowho are University able to make use of in Agriculture and Science. is to Towards build an this infrastructure which allows building of multiple diverse IoT applications these opportunities presentedOur by aim the IoT. goal, we are building anrapid IoT infrastructure to support University education with minimumand technical Theisproposed solution also supports sensor ofdevices, is scalable to handle in Agriculture Science.skills. Our aim to build an infrastructure which heterogeneous allows rapid building multipleand diverse IoT applications increasing sensor populations. thisproposed paper wesolution present aalso software-centric descriptionsensor of the devices, design and of our with minimum technical skills.InThe supports heterogeneous andimplementation is scalable to handle IoT solution. We present detailsInofthis thepaper resultant system, adiscuss lessons learnt during the and and alsoimplementation identify the directions increasing sensor populations. we present software-centric description of project the design of our in which we are the work. IoT solution. Wecontinuing present details of the resultant system, discuss lessons learnt during the project and also identify the directions in which we are continuing the work. © 2018The Authors. Published by Elsevier Ltd. © 2018The 2018 The Authors. Published byElsevier Elsevier Ltd. This is an open accessPublished article under the CC BY-NC-ND license(https://creativecommons.org/licenses/by-nc-nd/4.0/) © Authors. by Ltd. This is an open access article under the CC BY-NC-ND license (https://creativecommons.org/licenses/by-nc-nd/4.0/) Selection under responsibility of the 3rdlicense(https://creativecommons.org/licenses/by-nc-nd/4.0/) International Conference on Computer Science and Computational This is an and openpeer-review access article under the CC BY-NC-ND Selection and peer-review under responsibility of the 3rd International Conference on Computer Science and Computational Intelligence 2018. Selection and peer-review under responsibility of the 3rd International Conference on Computer Science and Computational Intelligence 2018. Intelligence 2018. Keywords:Internet of Things; Cloud Computing Application; IoT platforms; Agriculture Education Keywords:Internet of Things; Cloud Computing Application; IoT platforms; Agriculture Education
1. Introduction 1. Introduction With the rapid growth of the Internet of Things (IoT), estimates state that there will be 26.3 billion “things” With thetorapid growth by of 2020 the Internet (IoT), state that there will be 26.3 billion “things” connected the Internet [1]. IoTofisThings spreading intoestimates many domains such as home automation, healthcare, connected to the Internet by 2020 [1]. IoT is spreading into many domains such as home automation, healthcare,
* Corresponding author. Tel.: +94-77-1423877; fax: +94-11-2650912 address:
[email protected] * E-mail Corresponding author. Tel.: +94-77-1423877; fax: +94-11-2650912 E-mail address:
[email protected] 1877-0509© 2018 The Authors. Published by Elsevier Ltd. This is an open access under the CC by BY-NC-ND license(https://creativecommons.org/licenses/by-nc-nd/4.0/) 1877-0509© 2018 Thearticle Authors. Published Elsevier Ltd. Selection under responsibility of the 3rdlicense(https://creativecommons.org/licenses/by-nc-nd/4.0/) International Conference on Computer Science and Computational Intelligence 2018. This is an and openpeer-review access article under the CC BY-NC-ND Selection and peer-review under responsibility of the 3rd International Conference on Computer Science and Computational Intelligence 2018. 1877-0509 © 2018 The Authors. Published by Elsevier Ltd. This is an open access article under the CC BY-NC-ND license (https://creativecommons.org/licenses/by-nc-nd/4.0/) Selection and peer-review under responsibility of the 3rd International Conference on Computer Science and Computational Intelligence 2018. 10.1016/j.procs.2018.08.161
156 2
Kutila Gunasekera et al. / Procedia Computer Science 135 (2018) 155–162 Author name / Procedia Computer Science 00 (2018) 000–000
smart grids, industry, agriculture etc. As such, there is a need to produce professionals in these fields who are knowledgeable on what IoT holds for the future and are able to make use of the immense opportunities presented therein [2]. Towards this goal, at the University of Queensland Gatton campus, we are building an IoT infrastructure for use in Agriculture and Science education. The usual approach to build an IoT solution (or most kinds of software-centric systems) considers a set of end user requirements. While software requirements are notoriously dynamic in nature, there is usually some notion as to the general high-level use cases when one ventures into building a system. However, in the current situation, it was clear that we need to build a solution that would be able to fulfill currently unknown future requirements. That is, our aim was to build an infrastructure which allows rapid building of multiple diverse IoT applications for educational and research purposes. This infrastructure will be used in courses such as Agronomy, Animal Science, Horticulture, Wildlife Ecology, Water Management, Statistics and Chemistry. Due to the differing nature of these requirements, the infrastructure should also be able to support heterogeneous sensing devices. It is also expected that various end-user applications will need to be built for these different courses/academics. A significant limitation is that as the institute may not always have access to a software developer, it should be possible for non-programmers to build new applications. Our mandate therefore was to build an IoT infrastructure which: a) supports different types of IoT sensor devices; b) is scalable to handle an increasing sensor population; c) allows easily building diverse UIs for different/unknown user requirements; d) can be extended to provide feedback and control sensors/actuators in addition to sensing. With IoT application development still in its infancy, a key significance of this mandate is that it has an added criteria of being required to accommodate future requirements with potentially no programmer available. In this paper we describe the outcome of the first iteration of building an IoT infrastructure to fulfill these requirements. It should be noted that we deliberately take a software-centric perspective. The hardware implementation side of the project, covering sensor nodes, mesh technology used, and their deployment is described in [3]. The key contributions of this paper include: a comparison of existing IoT platforms and visualization toolkits; description of the proposed IoT infrastructure, its design and implementation; and a discussion of lessons learnt including identified drawbacks and future improvements. The rest of this paper is structured as follows. In the next section we briefly introduce the proposed IoT4SSAE system, compare several existing IoT tools for use in the current project, and describe the reasons for our selections. Then, section 3 describes the IoT4SSAE system’s design and implementation. This is followed by a discussion, and the conclusions. 2. IoT4SSAE system The proposed IoT4SSAE (Internet of Things for Smart Science and Agriculture Education) system is a cloudbased IoT Infrastructure which is sensor and end-user application agnostic. Its two key objectives are: a) collecting and storing real-time biophysical data streamed from a range of field-deployed sensors, and b) providing a platform for rapid development of diverse Web/Mobile/other applications that can visualize/analyze this IoT sensor data.
Fig 1. Architecture of proposed Internet of Things infrastructure
Figure 1 provides an architectural overview of the proposed infrastructure. While the focus of the system is on developing innovative eLearning applications for Agriculture and Science education, it is envisioned that the platform will also support research as well as farm-management in future.
Kutila Gunasekera et al. / Procedia Computer Science 135 (2018) 155–162 Author name / Procedia Computer Science 00 (2018) 000–000
157 3
Some expected features of the proposed infrastructure are as follows. Since the infrastructure is sensor device agnostic, and different devices could use differing communication mechanisms, it should provide multiple paths for data ingress. It should also be scalable to support growth in terms of number of sensors, end-users and data volume. The infrastructure should provide mechanisms to easily assemble new user interfaces and applications. While it is expected to be built using existing software components, in order to reduce costs and avoid vendor lock-in, free/open-source software is preferred. A comparison between existing IoT software tools and a discussion on the selection of tools for building the IoT infrastructure is described next. 2.1. Selecting an IoT platform With the growing popularity of the IoT, the Internet is abuzz with various "IoT enabling" software, and new ones turn up almost on a daily basis [4]. Many vendors are also repurposing their software products to the IoT domain with all major cloud vendors having dedicated IoT offerings (e.g. Azure IoT Suite [5], AWS IoT [6], Google Cloud IoT [7], IBM Watson IoT [8]). These “IoT enabling” software range from applications which can Internet-enable a household device using a Raspberry-Pi to complex platforms that provide a multitude of features and scale to millions of devices. There are also both open source and commercial applications with many providing at least some form of limited free usage. While many IoT software describe themselves as "IoT platforms" or "IoT frameworks", their functionality can vary significantly [9]. In the context of the current project, the primary purpose of an IoT platform is to act as a hub which links heterogeneous sensor devices and data from them to multiple applications. As such, it should: • be able to receive data from heterogeneous sensors and store them in a flexible format • provide mechanisms to build applications that make use of live and historical data • be robust and scalable (as number of devices, data volume and application usage increases) • be deployable on premises (as opposed to being a cloud-based service) • provide sensor device management capabilities (i.e. maintain a registry of sensors and have the ability to send commands to devices), and • have the support of an active community or vendor. After an initial search of many available IoT platforms/frameworks/toolkits, five platforms were selected as potential candidates to form the core of IoT4SSAE. A brief description of each platform is presented next followed by a discussion of the reasons for our selection. ThingWorx (www.thingworx.com) is a comprehensive commercial end-to-end solution for IoT which includes a Web-based IDE with drag-and-drop visualization building, and support for analytics. It can be deployed on-premises and also has multiple data ingress mechanisms including MQTT [10] protocol support, REST Application Programming Interfaces (API), programming language specific SDKs (i.e. Software Development Kits) and dedicated connectors for many types of devices. Sentilo [11] is an open source “Sensor and Actuator Platform” for smart cities pioneered by the City of Barcelona Council. It supports data ingress and application creation through a REST API. Sentilo comes with a basic administration application which contains a Map-based visualization and simple time series chart viewing facility. SiteWhere [12] is an open source IoT platform with an active community and detailed documentation. It supports multiple data ingress mechanisms including MQTT, REST, AMQP [13] and Stomp [14]. It does not have any inbuilt visualization capabilities. External applications can be connected to it via the provided REST APIs. Furthermore, SiteWhere consists of an administrative UI with comprehensive support for device management and the ability to send commands to devices. Kaa [15] is a high-performance open source middleware platform for IoT with commercial support also available. The “Kaa server” handles communications with devices and external systems for analytics, visualizations etc. and can be deployed in a cluster for better scalability. The “Kaa SDK” needs to be deployed on the IoT devices for them to establish communication links with the server. The SDK is available in C, C++, Objective-C and Java versions to support most device platforms. ThingSpeak [16] identifies itself as an open source application and API to “store and retrieve data from things”. While it is described as a cloud-based service (i.e. Software as a Service), since its source code is freely available, the application can be deployed on premises. Visualizations and data analysis are supported with the aid of MatLab.
158 4
Kutila Gunasekera et al. / Procedia Computer Science 135 (2018) 155–162 Author name / Procedia Computer Science 00 (2018) 000–000
ThingWorx was one of the first considered options as it is a complete end-to-end IoT solution incorporating platform components as well as the ability to easily create visualizations. A cost structure based on number of devices and message volume meant that as the system grows over the years, costs involved with ThingWorx would be too high. Sentilo is free and open source software, and provides a simple visualization out of the box which is useful. However, it does not support IoT specific protocols such as MQTT. Furthermore, technical issues encountered during initial testing, and the fact that we could not find evidence of very large clustered deployments of Sentilo led us to look for other solutions. While the Kaa project seemed a desirable option, its primary drawback was the requirement that the Kaa client SDK should be installed on IoT devices. ThingSpeak, being closely integrated to MatLab provides powerful analytic and visualization capabilities. However, it is only free for small deployments and therefore was not further considered. SiteWhere is free and open source software, supports several IoT communication protocols, and also has an active user community. While it does not have any in-built visualization capabilities, it consists of a comprehensive administrative UI with device management capabilities. Most of all, during initial testing it proved to be easy to use and stable. Therefore, it was decided to use SiteWhere as the foundation for the current project. 2.2. Selecting a visualization tool In addition to an IoT platform, it was also necessary to select tools for generating Web-based visualizations. This sub-section describes the selection criteria, candidates and final selection outcome. The required features were: a) ability to generate different types of charts to display “Time Series” data; b) ability to generate map-based views of data; c) visualizations embeddable in Web applications; d) support viewing data in near real-time; e) ability to create new types of visualizations without having programming skills; and f) be free or open source software. The software tools considered were Tableau (www.tableau.com), ZoomData (www.zoomdata.com), Freeboard.io (http://freeboard.io), Grafana (https://grafana.com) and DGLux5 [17]. Due to the requirement of creating new visualizations without programming skills, libraries such as D3.js (https://d3js.org) and leaflet.js (http://leafletjs.com) were not considered. While Tableau is a leading analytics/visualization tool with powerful features, it is designed for data at rest, and has a 15 minute limit for refreshing data connections and requires JavaScript workarounds to achieve more frequent refreshes. Due to this limitation and high-price, Tableau was not considered for use in the current project. ZoomData is a less costly commercial analytics and visualization tool with emphasis on visualizing Big Data. It is capable of handling real-time data, but in ZoomData charts, the vertical axis should always be either “volume” or one of sum, average, minimum or maximum, which makes it problematic to plot simple Time Series data. Freeboard.io is a hosted service for creating visualizations for IoT applications. It allows easy creation of most components (e.g. charts, maps, images) needed in IoT dashboards using a drag-and-drop approach. It only provides “public” dashboards free and requires subscriptions to create private dashboards. Furthermore, only the client component of Freeboard is available as open source. Grafana is a similar visualization service that is free and open source software. It focuses on Time Series data and does not support map-based visualizations out of the box. Some support for map based visualizations can be gained using Grafana Plugins. DGLux5 is a commercial Rapid Application Development tool for IoT. It consists of a browser based IDE and uses a drag-and-drop visual programming approach for creating logic sequences. It supports multiple back-end data connectors and also can generate mapbased visualizations. There is also an academic program which allows educational institutions free use of DGLux5. From the above, DGLux5 was chosen for creating visualizations and dashboards because of its powerful features, support of drag-and-drop building of visualizations and zero cost (for academic purposes). It should be noted though that this selection does not prevent the use of other software tools for creating visualization apps and dashboards.
Kutila Gunasekera et al. / Procedia Computer Science 135 (2018) 155–162
Author name / Procedia Computer Science 00 (2018) 000–000
159
5
Fig 2. IoT4SSAE system overview
3. Design and implementation The design and implementation of the IoT4SSAE system is described in this section. Figure 2 illustrates the components which make up the system, their communication paths and interaction with external entities. The system does not directly communicate with IoT sensors and instead relies on intermediate gateway devices to relay information to/from the sensors. Sensor data (i.e. measurements) are ingested using two approaches: a) via MQTT messages, and b) MySQL database synchronization. The following description of components covers these two approaches. MQTT broker - MQTT is a lightweight machine-to-machine connectivity protocol targeted towards the Internet of Things and supported in many IoT devices/platforms. The IoT4SSAE system contains an MQTT messaging broker which accepts IoT sensor data from gateway devices. The field network currently consists of multiple Gateway devices from the manufacturer Libelium which have in-built MQTT connector software. Each Gateway publishes JSON (http://json.org) formatted messages to a “Topic” on the broker. The format of a Topic is MESHLIUM/
where is unique for each gateway device. Swdatabroker - The function of this in-house developed Java (Spring Framework) application is to filter and clean incoming MQTT messages to be compatible with SiteWhere. It subscribes to the MQTT Topic “MESHLIUM/#” and receives all incoming messages. Messages incompatible with the expected message format are discarded. Data values are converted to numeric values and in cases where the data value is non-numeric (e.g. wind direction) it is moved to a meta-data section of the message. Cleaned messages are then published back to the MQTT broker under the topic “SiteWhere/input/json”. SiteWhere - Data ingested to the system via MQTT and processed through the swdatabroker is accepted by SiteWhere and stored in its backend MongoDB (http://mongodb.com) database. SiteWhere has comprehensive IoT device management capabilities supported by a Web-based administrative application. It also exposes a comprehensive set of RESTful APIs (Application Programming Interfaces). These allow device management as well as retrieval of IoT sensor data and are used to create end-user applications. SiteWhere has many other functionalities in addition to the above, key amongst which are triggers and the ability to send commands to IoT devices which are not being used by IoT4SSAE at present. MySql - The second approach to data ingestion is implemented using the MySQL Relational Database Management System. Currently, sensor data from the field comes via Libelium Meshlium Gateways which have a feature that allows synchronizing all recorded measurements to a remote MySQL database. All IoT sensor measurement data is stored in a MySQL database table. Unlike the MQTT data ingestion approach, this method retains non-numeric data measurements in their original format. As seen below, this approach involves fewer software components compared to the MQTT approach and has proven to be more reliable. • MQTT: Gateway → MQTT Broker → swdatabroker → MQTT Broker → SiteWhere → MongoDB • MySQL: Gateway → MySQL
Kutila Gunasekera et al. / Procedia Computer Science 135 (2018) 155–162 Author name / Procedia Computer Science 00 (2018) 000–000
160 6
The use of SiteWhere/MongoDB and MySQL for storage provides the system with redundancy of data as well as flexibility in selecting data sources depending on application requirements. DGLux5 - DGLux5 is used in IoT4SSAE to create Web-based end-user applications that visualize sensor data. Currently, several demonstration dashboards have been built and hosted on a DGLux5 server. Currently, from within DGLux5 a REST connector is used to access SiteWhere APIs and a JDBC connector is used to access the MySQL database. In the Web-browser based DGLux5 IDE functionality is developed using drag-and-drop visual programming blocks and when necessary supplemented with “Script” blocks which supports writing program snippets in a JavaScript like language. 3.1. Device object model and assignments SiteWhere is used as the device registry for IoT4SSAE, and its object model has been adapted for use within IoT4SSAE. A unique IoT device is represented as a Device. A Device has a unique hardware ID and conforms to a Device Specification. A Device Specification, in turn is based on a device Asset which encapsulates its basic details. Thus, a Device, Device Specification, and device Asset form a hierarchy. While a device Asset is representative of a particular type of device (e.g. iPad 3, Libelium Smart City node), a person Asset represents a live person or animal. A location Asset represents a unique location which is identifiable with a latitude, longitude and elevation. Figure 3 illustrates this hierarchy.
Fig 3. Relationships between key device concepts
A sensor node in the current context is stationary. However, it could be manually moved around to different locations in the field, and also may need to be taken to the laboratory for repairs from time to time. It is necessary to track these movements and distinguish data sent from different locations. The concept of Device Assignment which associates a Device with a location Asset is used for this purpose. For example, “SmartWater Node 1” (Device) could initially be assigned to “Lake Galletley” (location Asset). Then it develops a fault and is taken to the lab for repairs while “SmartWater Node 2” is placed in “Lake Galletley”. This is represented by releasing the initial Device Assignment and creating two new assignments: one to represent Node 2 in the Lake and another to represent Node 1 being in the Lab for test purposes. This scenario is illustrated in Table 1. Table 1. Device assignment example Location Asset
Device
From
To
Explanation
1
Lake Galletley
SW_01
2018-01-02 08:12:00
2018-04-05 11:23:00
Node 1 in lake
2
Lake Galletley
SW_02
2018-04-05 11:39:00
Present
Node2 in lake
3
Lab Test
SW_01
2018-04-05 11:30:00
Present
Node1 in lab for test
Kutila Gunasekera et al. / Procedia Computer Science 135 (2018) 155–162 Author name / Procedia Computer Science 00 (2018) 000–000
161 7
3.2. Implementation details
Fig 4. Map view showing heat map of air temperature in Darbalara farm (left), and Chart view showing air temperature and soil temperature variation (right).
The IoT infrastructure was deployed on an Ubuntu Virtual Machine on the NeCTAR (http://nectar.org.au) research cloud platform. Apache ActiveMQ (http://activemq.apache.org) is the MQTT broker used. The system currently receives data from two sites: the Gatton campus, and the Darbalara farm which is located 11km from the Gatton campus. A Dashboard application was built using DGLux5 as an initial end-user application. Figure 4 (left) shows the “Map View” of the dashboard where sensor locations and data are shown on a map. It is possible to select a sensor, time, and a heatmap view. When a particular date and time is selected, the system searches up to 1 hour before the specified time for a data value to display. Figure 4 (right) shows the “Chart View” where a selected location’s sensor readings are shown as a time series chart. Currently it is possible to display two series simultaneously. For users who want to process the data offline using specific tools, the dashboard provides a “Data Service” from where data can be downloaded as a CSV (Comma Separated Value) file. 4. Discussion Our implementation of the IoT4SSAE system provides: a) multiple mechanisms for sensor data ingress and storage; b) an object model and comprehensive UI for device management; c) multiple mechanisms for third-party applications to extract stored sensor data (RDBMS, REST, MQTT); d) a Web-based graphical IDE for rapid development of new applications; and e) a Web-based dashboard to visualize or download sensor data for offline analysis. While we have achieved the initial objectives, two issues were also observed as described next. The first observation is that while DGLux5 is an excellent tool for rapidly building User Interfaces and connecting to data sources, its graphical programming paradigm is cumbersome for implementing anything more than the simplest programming logic. This is especially noticeable when using “loop” constructs. Therefore, it is advisable to offload any data wrangling tasks to a micro-service outside DGLux5. This micro-service would retrieve data from the appropriate data sources (i.e. SiteWhere via REST API or from MySQL) as necessary, do the data wrangling tasks, and expose the properly formatted data as REST services for consumption by DGLux5. A second observation is that SiteWhere’s administration UI which provides device management functionality requires multiple steps to carry out a single task. This was a deterrent when system maintainers needed to add/remove/modify sensor node details. Since SiteWhere also exposes these tasks as REST services, this inconvenience can be overcome by creating a simpler administrative UI using DGLux5.
Kutila Gunasekera et al. / Procedia Computer Science 135 (2018) 155–162 Author name / Procedia Computer Science 00 (2018) 000–000
162 8
5. Conclusion We have proposed, designed and implemented IoT4SSAE as an IoT infrastructure for Science and Agriculture education. Built using open source and freely obtained software components, IoT4SSAE achieves the initial objectives of creating this infrastructure. Furthermore, we presented a comparison of existing IoT platforms and visualization tools from the perspective of our requirements, and described the IoT4SSAE system’s architecture, design and implementation. Two issues in the current implementation were identified and solutions for them suggested. The second phase of the project is currently in progress where we are consulting academics to identify their course-specific requirements and building the requested eLearning applications. We discuss details of sample problem-based learning modules in [3]. This phase will provide us with feedback on how well our infrastructure supports rapid application building. At present, our work can be categorized as an information aggregation service as defined in [18]. As future work, we intend to incorporate the ability to send commands to sensor nodes, which would then enable IoT4SSAE to be categorized as a collaborative-aware service. While SiteWhere already possesses the necessary functionality, it is necessary to enable command reception in the currently used sensor nodes. This would enable remotely controlling the sensor nodes and would be a step towards expanding the current infrastructure into a Supervisory Control and Data Acquisition (SCADA) system for agriculture. While there are multiple IoT projects in fields such as smart cities and precision agriculture, there is a shortage of literature on IoT projects targeting higher education, and describing the challenges therein. In this paper, we have taken a first step towards filling that gap. Acknowledgements This work was supported by the University of Queensland under a Technology Enhanced Learning Grant (TEL Grant 2015-2017). We also acknowledge the resources received from DGLogik and Nectar Research Cloud. References 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Rayes A, Salam S. Internet of Things from hype to reality. Springer International Publishing AG; 2017. Kortuem G, Bandara AK, Smith N, Richards M, Petre M. Educating the Internet-of-Things generation. Computer 2013 Feb;46(2):53–61. Bryceson KP, Borrero AN, Gunasekera K. Internet of Things (IoT)-smart agriculture education at the University of Queensland. In 8th International Conference on Education and New Learning Technologies; Barcelona, Spain; 2016:8036-8044. Huang P. Awesome IoT. [Online] 2018 [cited 2018 May 10]. Available from: https://github.com/phodal/awesome-iot. Microsoft Azure. Azure IoT suite. [Online] 2018 [cited 2018 May 10]. Available from: https://azure.microsoft.com/en-us/suites/iot-suite/ Amazon Web Services. AWS IoT. [Online] 2018 [cited 2018 May 10]. Available from: https://aws.amazon.com/iot/ Google. Google cloud IoT. [Online] 2018 [cited 2018 May 10]. Available from: https://cloud.google.com/solutions/iot/ IBM. IBM Watson Internet of Things (IoT). [Online] 2018 [cited 2018 May 10]. Available from: https://www.ibm.com/internet-of-things/ Scully P. 5 things to know about the IoT platform ecosystem. [Online] 2016 [cited 2018 May 10]. Available from: https://iotanalytics.com/5-things-know-about-iot-platform/ Banks A. Gupta R. MQTT Version 3.1. 1. Vol. 29, OASIS standard. 2014. Bain M. Sentilo - sensor and actuator platform for smart cities. [Online] 2014 [cited 2018 May 10]. Available from: https://joinup.ec.europa.eu/document/sentilo-sensor-and-actuator-platform-smart-cities. SiteWhere. SiteWhere - the open platform for the Internet of Things. [Online] 2016 [cited 2018 May 10]. Available from: http://www.sitewhere.org/ Vinoski S. Advanced Message Queuing Protocol. IEEE Internet Computing 2006 Nov;10(6):87–9. STOMP. [Online] 2017 [cited 2017 Oct 22]. Available from: https://stomp.github.io/ Kaa Open-Source IoT Platform. [Online] 2017 [cited 2017 Oct 22]. Available from: https://www.kaaproject.org/ Gómez Maureira MA, Oldenhof D, Teernstra L. ThingSpeak – an API and web service for the Internet of Things. World Wide Web. 2014. Available from: https://staas.home.xs4all.nl/t/swtr/documents/wt2014_thingspeak.pdf DGLux5 IoE Application Platform. [Online] 2018. Available from: http://www.dglogik.com/products/dglux5-ioe-application-platform Gigli M, Koo S. Internet of Things: services and applications categorization. Advances in Internet of Things 2011 Jul;1(2):27–31.