{"id":20317590,"url":"https://github.com/dynatrace/ufo-esp32","last_synced_at":"2025-07-14T21:33:07.257Z","repository":{"id":78172826,"uuid":"87304055","full_name":"Dynatrace/ufo-esp32","owner":"Dynatrace","description":"2nd generation of Dynatrace UFO with ESP32 microcontroller","archived":false,"fork":false,"pushed_at":"2024-07-16T13:20:28.000Z","size":9717,"stargazers_count":18,"open_issues_count":10,"forks_count":20,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-11T17:58:40.905Z","etag":null,"topics":["tool"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dynatrace.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-04-05T11:58:30.000Z","updated_at":"2024-10-16T17:39:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"acc3af6e-f027-4cf2-bf13-e0431729b16d","html_url":"https://github.com/Dynatrace/ufo-esp32","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Dynatrace/ufo-esp32","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dynatrace%2Fufo-esp32","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dynatrace%2Fufo-esp32/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dynatrace%2Fufo-esp32/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dynatrace%2Fufo-esp32/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dynatrace","download_url":"https://codeload.github.com/Dynatrace/ufo-esp32/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dynatrace%2Fufo-esp32/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265351882,"owners_count":23751816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["tool"],"created_at":"2024-11-14T18:33:41.474Z","updated_at":"2025-07-14T21:33:07.245Z","avatar_url":"https://github.com/Dynatrace.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dynatrace UFO\nThe 2nd generation of the Dynatrace UFO runs now with ESP32 microcontroller [(specs)](doc/SPECS.md). Also, since not everyone has the time print, solder and assemble themselves, we have produced a limited batch of ufos for your convienience. [https://dynatrace.com/ufo\n![](ufofeatures.png)](https://dynatrace.com/ufo)\n\n# How can i foster a DevOps culture with the Dynatrace UFO?\n## See the status of your CI and DevOps process in real-time\nFor companies that face the challenges of a distributed team, the Dynatrace DevOps UFO is a highly visible IoT gadget to share the status of a project. Using our UFOs, a quick stroll through the office, or a glance to the other side of the room, can alert you to problems.\n## Improve quality and protect digital performance\nThe UFO monitors progress at every stage of the continuous delivery process, with a separate device for each team or feature. If there are issues that impact getting a build completed, such as code that doesn’t compile, the LEDs turn red.\n\n\n[![ufo builds devops culture](ufobuildsdevopsculture.jpg) https://www.youtube.com/watch?v=6z9BTHhvWSU](https://www.youtube.com/watch?v=6z9BTHhvWSU)\n\n## Any other visualization need...\nSince the UFO has an open REST interface you can use it freely for any other visualization need. For the nerds amongst you, the UFO is also open source. So at your own risk, you are free to hack the UFO for any of your own visualization needs. \n\n# How do I use the UFO?\n## Hanging - Cafeteria, Hallway use.....\n![ufo hanging](ufohanging.jpg)\nNote: Assembly of the UFO (in particular mounting the device on the ceiling) may only be carried out by qualified personnel. \n\n## Desktop - Office desk, ...\n![ufo on desktop](ufodesktop.jpg)\n* mount the 3 rubber feet that came in the box with the UFO\n* slide the stabilizing tube along the cable towards the USB plug, so you can bend the cable properly\n\n# Configuring the UFO\n\n## Wifi\nWhen you have not configured a wifi endpoint in the web-interface yet or every time you press the button on the top, the UFO starts up in Ad-Hoc mode which is symbolized by blue flashing LED rings. The SSID is \"Ufo\" and the IP address 192.168.4.1. Use a notebook, tablet or phone to connect to the \"Ufo\" net and open \"http://192.168.4.1/\" in a browser. This will open up the web-interface of the UFO where you now can configure your Wifi setting. After applying the settings the UFO will restart and try to connect to the configured Wifi, which is symbolized by yellow flashing LED rings. Once a connection has been made the LED display starts to display the retrieved (DHCP) IP address. If this does not succeed switch back to Ad-Hoc mode and check the settings.\n\nIf the connections succeeds there are several options to connect to the UFO:\n* Option 1: Open your browser, make sure its connected to the same Wifi as the UFO. Goto \u003ca href=\"http://ufo\"\u003ehttp://ufo\u003c/a\u003e\n\nIf that doesnt work you will need to use `http://\u003cipaddress\u003e`.\n\nThere are multiple ways to discover the IP address of the Dynatrace UFO in case you need it:\n* The rings visualizes the current IP address digit by digit. 192.168... will light 1 LED then 9 (5+4)\tthen 2 and so on. A dot is visualized as 3 white LEDs. The individuL digits are separated by a short white flash. The IP is visualized over and over again until the first api rest call is issued. To stay in sync every IP address visualization run uses a different color.\n* After a successful connection to the Wifi switch back to Access Point mode (push the button) and look at the info section for the latest IP adress retrieved by DHCP.\n* Lookup the MAC address in your Wifi Access Point and get the IP address assigned by DHCP\n\n## API\nAll LEDs can be controlled through an API. By calling the API, you can separately control the bottom row, the top row\nand the 4 LEDs that show the Dynatrace logo.\n\n#### Controlling the logo\nThe four LEDs that form the Dynatrace logo can be given different colors using the following API query parameter:\n\n`logo=\u003ccolor\u003e|\u003ccolor\u003e|\u003ccolor\u003e|\u003ccolor\u003e`\n\nExample where the colors will be set to red, green, blue and white:\n\n`/api?logo=ff0000|00ff00|0000ff|ffffff`\n\nTo reset the colors back to its initial state, execute the following API call:\n\n`/api?logo_reset`\n\n#### Controlling the top row\nAll 15 LEDs of the top row can be controlled using the `top` query parameter in the API call. The format is as follows:\n\n`top=\u003cstarting LED\u003e|\u003cnumber of LEDs\u003e|\u003chex color\u003e`\n\nExamples:\n- Turn all LEDs red on the top row: `/api?top=0|15|ff0000`\n- First seven LEDs red, the rest green: `/api?top=0|7|ff0000\u0026top=7|8|00ff00`\n\nTo reset the row back to its black state, execute the following API call:\n\n`/api?top_init`\n\nThe backgroud color (default is black) can be set by `top_bg=\u003chex color\u003e`\n\n#### Controlling the bottom row\nControlling the LEDs on the bottom row works similar as the top row. Instead of using the `top` query parameter, it should\nbe renamed to `bottom`.\n\n#### Animations\nBesides having static colors, it is also possible to add some animations, like:\n- morph - from foreground to background and back\n- whirl - rotate either clockwise, or counter clockwise\n\n##### Morph\n`\u003crow\u003e_morph=\u003cperiod\u003e|\u003cspeed\u003e`\n\nFirst parameter indicates the period between the morphs. The seconds parameter is the speed of the morph, where the\nmaximum speed is 10.\n\nExample:\n\n`/api?top=0|15|00ff00\u0026top_morph=80|8`\n\n##### Whirl\n`\u003crow\u003e_whirl=\u003cspeed\u003e|\u003cdirection\u003e`\n\nFirst parameter indicates the speed of the whirl, with a maximum of 255. The second parameter indicated if it should go \nclockwise, or counter clockwise. The default here is clockwise. If the opposite is needed, the direction parameter has \nto be set to `ccw`.\n\nExamples:\n- Have two blue LEDs go around over a green circle in a clockwise direction: \n`/api?top_bg=00ff00\u0026top=0|2|0000ff\u0026top_whirl=240`\n\n# Firmware\n\n## Update\n\n## Nerd Zone\n[Firmware build instructions](doc/BUILD.md)\n\n\n# Legal Stuff\n\nDear Customer,\n\n\nPlease read the operating instructions carefully before putting into operation for the first time.\n\n* The UFO device may only be operated with a USB power adapter with a voltage of 5V and at least a 2A DC. Only use power adapters that are legally approved for the respective country.\n\n* Connecting the UFO device to your PC or laptop requires a special development environment, which is permitted only to trained developers. The user is liable for any possible damage to the PC or UFO.\n\n* Avoid using USB extension cables, as this may lead to the UFO being damaged or displaying unwanted behaviour.\n\n* Assembly of the UFO (in particular mounting the device on the ceiling) may only be carried out by qualified personnel.\n\n* The UFO is to be used exclusively in interior spaces.\n\n\n### LIMITED SUPPORT \u0026 WARRANTY\n\nFor replacement of faulty hardware within 90 days of purchase, \u003ca href=\"mailto:office.linz@dynatrace.com\"\u003econtact Dynatrace\u003c/a\u003e.\n\nFirmware updates are available for \u003ca href=\"https://github.com/Dynatrace/ufo-esp32\"\u003edownload from Github\u003c/a\u003e.\n\nFor all software issues and support, \u003ca href=\"https://github.com/Dynatrace/ufo-esp32/issues\"\u003eraise an issue on our GitHub site\u003c/a\u003e.\n\n1.1. Limited Warranty. Dynatrace warrants to Buyer that, for a period of 90 days from the date of shipment of the Goods, such Goods will materially conform to Dynatrace’s published specifications in effect as of the date of manufacture.\n\n1.2. Disclaimer. EXCEPT FOR THE WARRANTY SET FORTH IN SECTION 1.1 ABOVE, DYNATRACE MAKES NO WARRANTY WHATSOEVER WITH RESPECT TO THE GOODS, INCLUDING ANY (A) WARRANTY OF MERCHANTABILITY; (B) WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE; (C) WARRANTY OF TITLE; OR (D) WARRANTY AGAINST INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OF A THIRD PARTY, WHETHER EXPRESS OR IMPLIED BY LAW, COURSE OF DEALING, COURSE OF PERFORMANCE, USAGE OF TRADE OR OTHERWISE.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdynatrace%2Fufo-esp32","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdynatrace%2Fufo-esp32","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdynatrace%2Fufo-esp32/lists"}