  The Internet of Things (IoT) has grown significantly in popularity,
accompanied by increased capacity and lower cost of communications, and
overwhelming development of technologies. At the same time, big data and
real-time data analysis have taken on great importance and have been
accompanied by unprecedented interest in sharing data among citizens, public
administrations and other organisms, giving rise to what is known as the
Collaborative Internet of Things. This growth in data and infrastructure must
be accompanied by a software architecture that allows its exploitation.
Although there are various proposals focused on the exploitation of the IoT at
edge, fog and/or cloud levels, it is not easy to find a software solution that
exploits the three tiers together, taking maximum advantage not only of the
analysis of contextual and situational data at each tier, but also of two-way
communications between adjacent ones. In this paper, we propose an architecture
that solves these deficiencies by proposing novel technologies which are
appropriate for managing the resources of each tier: edge, fog and cloud. In
addition, the fact that two-way communications along the three tiers of the
architecture is allowed considerably enriches the contextual and situational
information in each layer, and substantially assists decision making in real
time. The paper illustrates the proposed software architecture through a case
study of respiratory disease surveillance in hospitals. As a result, the
proposed architecture permits efficient communications between the different
tiers responding to the needs of these types of IoT scenarios.
