louisvillemetro-innovation / IFTTT-Smart-City-Data-Integrator

IFTTT Smart City Data Integrator (SCDI) Project is a system to grab open data updates and send them to IFTTT for action.
https://ifttt.com/smartlouisville
MIT License
6 stars 0 forks source link

IFTTT Smart City Data Integrator (SCDI) Project

Take your open data, and make apps from it!

IFTTT Smart City Data Integrator (SCDI) Project is a new medium for governments to deliver light touch digital services, that empower the citizen to customize their interaction with government while maintaining respect for their privacy. The IFTTT service has a tightly controlled user experience that allows us to present a consistent service to our citizens, in an era of poorly designed government app experiences. It enables us to democratize and operationalize data of all kinds to our citizens, solving a historic issue with Open Data, providing immediate and applicable value to the initiative. Louisville is the first government partner on this platform, which initiated the creation and adoption of Data Access Project by IFTTT.

The IFTTT Smart City Data Integrator (SCDI) Project is an open source API middleware that enables citizens to customize city data sources (Open Data, IoT, Smart City data) to fit their digital needs, using the IFTTT platform.

For example, Louisville Metro Government is exposing an in-house air quality API to this middleware, which connects to the IFTTT service. We have built a predefined applet that connects this to the service that Philips Hue has exposed to IFTTT. This allows the applet to trigger a color change on a Philips Hue lightbulb when the air quality changes. This is only one example, citizens can mix and match services as they like, adapting services in new and exciting ways.

Example: https://ifttt.com/smartlouisville

Louisville Metro is currently exposing the following data sources to IFTTT:

Program Features: The IFTTT Partner program also includes anonymized analytics, application health, performance, API testing and strict branding requirements to ensure a consistent and quality experience for citizens. Additionally it has the ability for a staging environment, private applets for testing, and suggested applets that are frequently created by users. Service implementation documentation is available here.

Cities & Federal Agencies that have signed up to IFTTT due to Louisville's involvement:
City of Tampa
City of Edmonton, Canada
EPA
ClinicalTrials.gov
Department of Labor
Bureau of Economic Analysis
SEC
FCC
Library of Congress
National Science Foundation
Energy Information Administration
USA.gov
Department of Defense
Department of Homeland Security, National Vulnerability Database
World Health Organization
Department of State

Potential Partners: IFTTT
Any cloud provider
Federal agencies (18F, USDS, or any of the active IFTTT customers)
Local businesses, both corporate or small/mid (for instance in Louisville we have UPS & Humana)

Requirements: IFTTT Partner Subscription
PHP/MySQL (current arch, running on a T2.Micro instance on AWS.)

Codebase: https://github.com/louisvillemetro-innovation/IFTTT-Smart-City-Data-Integrator

Open Issues / Feature Requests: https://github.com/louisvillemetro-innovation/IFTTT-Smart-City-Data-Integrator/issues

Media coverage: https://ifttt.com/blog/2017/02/louisville-is-the-first-city-on-IFTTT
https://www.zdnet.com/article/louisville-is-the-first-smart-city-on-the-ifttt-platform/
http://www.govtech.com/civic/Louisville-Ky-Looks-to-IFTTT-as-Future-of-Open-Data-Among-Other-Services.html
https://www.engadget.com/2017/02/06/louisville-ifttt-channel-smart-home-air-quality/
https://www.cnet.com/news/hows-the-air-up-there-in-louisville-you-can-just-ask-your-light-bulbs/
https://ifttt.com/blog/2017/06/introducing-the-data-access-project

Getting Started - Installation Instructions

After cloning this repo, there are a couple of preparation steps that must be taken in order to get everything set up.

  1. Run the composer install at the root of the repo, to pull in all the required dependencies

  2. A config file is required in order to specify your special environment variables such as API keys and special URLs. We have provided an example.config.php file for you to start with. We recommend that you place this file somewhere outside of the project folder. Usually, you will have three of these files, dev.config.php,tst.config.php,prod.config.php which contains the correct variables for each environment.

    With that being said, in src/dependencies.php, you will find an $env variable that is used to load the proper environment configuration file, as well as the location of those files. In this example, the configuration files are located one level up from the root folder, but you can place it anywhere you'd like and point it to the proper location in the src/dependencies.php file.

  3. You will need to create the tables described in the schema file that we've provided at schema/schema.sql.