{"id":21651904,"url":"https://github.com/mignon-p/esp-opc-server","last_synced_at":"2025-04-11T20:32:47.093Z","repository":{"id":141895586,"uuid":"80040619","full_name":"mignon-p/esp-opc-server","owner":"mignon-p","description":"Open Pixel Control server for ESP8266","archived":false,"fork":false,"pushed_at":"2019-12-04T21:28:09.000Z","size":327,"stargazers_count":15,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-25T16:22:48.458Z","etag":null,"topics":["adafruit-feather-huzzah","esp8266","neopixels","open-pixel-control"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mignon-p.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}},"created_at":"2017-01-25T17:54:23.000Z","updated_at":"2021-03-27T23:08:55.000Z","dependencies_parsed_at":"2023-03-13T10:27:54.674Z","dependency_job_id":null,"html_url":"https://github.com/mignon-p/esp-opc-server","commit_stats":null,"previous_names":["mignon-p/esp-opc-server"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mignon-p%2Fesp-opc-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mignon-p%2Fesp-opc-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mignon-p%2Fesp-opc-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mignon-p%2Fesp-opc-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mignon-p","download_url":"https://codeload.github.com/mignon-p/esp-opc-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248476098,"owners_count":21110210,"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":["adafruit-feather-huzzah","esp8266","neopixels","open-pixel-control"],"created_at":"2024-11-25T07:50:06.962Z","updated_at":"2025-04-11T20:32:47.045Z","avatar_url":"https://github.com/mignon-p.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is an [Arduino][1] sketch which implements an\n[Open Pixel Control][2] server for controlling [NeoPixels][3] from an\n[ESP8266][5], such as the [Adafruit Feather HUZZAH][4].\n\nHere is an example circuit:\n\n\u003cimg src=\"breadboard.png\" width=\"800\" height=\"350\" alt=\"Breadboard with ESP8266 Feather and level shifter\" /\u003e\n\nBill of materials:\n\n* [Adafruit Feather HUZZAH ESP8266][4]\n* [74AHCT125 - Quad Level-Shifter][6]\n* [470 ohm resistor][7]\n* [Big Freaking Capacitor - 4700uF][8]\n* [NeoPixel stick][9]\n\nYou will need to edit the sketch to set the number of pixels you have,\nand your WiFi SSID and password.\n\nOnce the sketch is running, you'll need to figure out which IP address\nit has been assigned.  Generally, your router's web interface will\nhave a way to look at DHCP leases, and you can find it from there.\n\nIt may also be useful to call [WiFi.hostname()][13] to assign a\nhostname to your ESP board.  This may show up as `hostname.lan` in\nyour DNS, although it [depends on your router][14].\n\nOnce you know the IP address or hostname, you can connect with any\nOpen Pixel Control client.  The [openpixelcontrol repository][10] has\nsome [clients in Python][11], and I have [a client in Haskell][12].\n\n## Caveats\n\nThis example is a nice proof-of-concept, but there are a couple of\nreasons it isn't a robust solution.\n\nFirst, interrupts are disabled while writing to NeoPixels.  Interrupts\nare necessary for WiFi to work, so the server may eventually crash and\nneed to be rebooted, especially if you have a lot of NeoPixels.  (This\nproblem could be alleviated by using [DotStars][15] instead of\nNeoPixels, because DotStars are not timing-sensitive and do not need\nto disable interrupts.)\n\nSecond, Open Pixel Control runs over TCP, and\n[TCP is not the best for real-time applications][16].  If a packet is\nlost, TCP will retransmit it, delaying the packets after it.\n[UDP][17] would be more suitable for this application.\n\n[1]: https://www.arduino.cc/\n[2]: http://openpixelcontrol.org/\n[3]: https://www.adafruit.com/category/168\n[4]: https://www.adafruit.com/products/2821\n[5]: https://github.com/esp8266/Arduino\n[6]: https://www.adafruit.com/products/1787\n[7]: https://www.adafruit.com/products/2781\n[8]: https://www.adafruit.com/products/1589\n[9]: https://www.adafruit.com/products/1426\n[10]: https://github.com/zestyping/openpixelcontrol/\n[11]: https://github.com/zestyping/openpixelcontrol/tree/master/python\n[12]: https://github.com/ppelleti/hs-opc-client\n[13]: https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/station-class.html#hostname\n[14]: https://unix.stackexchange.com/questions/92441/whats-the-difference-between-local-home-and-lan\n[15]: https://www.adafruit.com/category/885\n[16]: https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Alternatives\n[17]: https://en.wikipedia.org/wiki/User_Datagram_Protocol\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmignon-p%2Fesp-opc-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmignon-p%2Fesp-opc-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmignon-p%2Fesp-opc-server/lists"}