{"id":20589485,"url":"https://github.com/ciscodevnet/choochoo","last_synced_at":"2026-03-09T19:07:50.590Z","repository":{"id":49893244,"uuid":"51041128","full_name":"CiscoDevNet/choochoo","owner":"CiscoDevNet","description":"ChooChoo is an application designed for OpenDaylight (ODL). It controls the operation of a train as it rolls over sensors on a 76 ft long track. A demo of this setup along with a learning lab was available at Cisco Live! in Berlin.","archived":false,"fork":false,"pushed_at":"2021-06-08T19:31:38.000Z","size":3266,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-05-22T17:34:46.294Z","etag":null,"topics":["iot","opendaylight","sensor","yang-model"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CiscoDevNet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-02-04T00:27:21.000Z","updated_at":"2021-06-08T19:31:37.000Z","dependencies_parsed_at":"2022-08-29T17:51:52.481Z","dependency_job_id":null,"html_url":"https://github.com/CiscoDevNet/choochoo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CiscoDevNet/choochoo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CiscoDevNet%2Fchoochoo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CiscoDevNet%2Fchoochoo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CiscoDevNet%2Fchoochoo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CiscoDevNet%2Fchoochoo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CiscoDevNet","download_url":"https://codeload.github.com/CiscoDevNet/choochoo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CiscoDevNet%2Fchoochoo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30308720,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T17:35:44.120Z","status":"ssl_error","status_checked_at":"2026-03-09T17:35:43.707Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["iot","opendaylight","sensor","yang-model"],"created_at":"2024-11-16T07:29:32.425Z","updated_at":"2026-03-09T19:07:50.575Z","avatar_url":"https://github.com/CiscoDevNet.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenDaylight IOT Train Controller - ChooChoo\n\nChooChoo is an application designed for OpenDaylight (ODL). It controls the operation of a train as it rolls over sensors on\na 76 ft long track. A demo of this setup along with a learning lab will be available at Cisco Live! in Berlin.\n\nThe track has 12 sensors evenly spaced along the track. As the train nears the even numbered sensors, the ODL application\nwill respond to this by sounding the horn.  When the train nears the odd numbered sensors, the\ntrain will turn off the horn, turn on the head light.  The solution is a bit contrived but it \ndemonstrates how Opendaylight can detect when IOT sensor's send updates, perform some \"control\" logic to effect the state\nof the train, send HTTP messages to the arduino running the train controller.\n\nThis application was developed as a educational tool to show how ODL can be used to manage IOT networks.  Typically, the\nintroductory exposure to ODL is a \"Hello World\" tutorial.  The purpose of the learning lab is to show, 1) \nODL is NOT just for SDN development, ie it has applicability to IOT control and data collection, and 2) introduce the student\nto a more complex tutorial.\n\n## Team:\n\n- John Burns\n- Lionel Florit\n- Varun Seereeram\n- Kareem Iskander\n- Mike Mackay\n\n### Project demo Link:\n\n[Find the code here](https://github.com/CiscoDevNet/choochoo)\n\n### Social Tags:\n\nIOT, Open Source, Train, Sensors, MQTT, RESTCONF API, YANG\n\n### Project Kick-off Date:\n\nDecember 2015\n\n### Current Status:\n\nBeta - send questions to johnburn@cisco.com\n\n## Application Overview:\n\nThe IOT solution consists of the following components:\n - ChooChoo application running on ODL - a YANG model of the train(s), a module listening to MQTT topics which indicate what\nis happening with the IOT sensors along the track, a module that reacts to changes in the sensors by sending HTTP commands\nto the train, an API so the the ChooChoo GUI can send commands to the train.\n - ChooChoo GUI - a basic graphical user interface is provided to show the discovered trains on the track.  It allows certain aspects of the train to be controlled, such as sounding the horn, or turning on the headlamp.\n - YANG-UI - a GUI that allows users to view the YANG model for the ChooChoo app.\n - Train, track, and track sensors - arduinos are employed to monitor track sensors and to effect control of the train.\n\nFigure 1 depicts the architecture of the components used in this application.\n\n![](media/image1.png)\n\n Figure 1 ODL IOT Train Controller and Track Sensor Architecture\n\n\n## Features:\n\n- Developed to run on top of ODL\n- Leverages RESTCONF APIs based on YANG models to model train topology\n- Leverages RESTCONF APIs based on YANG models to enable train control via RPCs\n- Leverages oneM2M APIs based on modelling of sensors in the oneM2M IOT data store\n- Leverages the open source NeXt UI framework for topology visualization\n- Source code in HTML5/CSS/Javascript, NeXt and node js\n\n### References\n\n- [https://wiki.opendaylight.org/view/IoTDM:Main](https://wiki.opendaylight.org/view/IoTDM:Main)\n\n- [https://developer.cisco.com/site/neXt/](https://developer.cisco.com/site/neXt/)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fciscodevnet%2Fchoochoo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fciscodevnet%2Fchoochoo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fciscodevnet%2Fchoochoo/lists"}