{"id":22823176,"url":"https://github.com/okeuday/odroid_fish","last_synced_at":"2025-11-07T02:02:27.619Z","repository":{"id":29874086,"uuid":"33419333","full_name":"okeuday/odroid_fish","owner":"okeuday","description":"Make service requests swim!","archived":false,"fork":false,"pushed_at":"2023-10-27T22:34:05.000Z","size":507,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-06T05:16:32.264Z","etag":null,"topics":["cloudi","microservice","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/okeuday.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-04-04T20:31:21.000Z","updated_at":"2023-07-25T13:55:40.000Z","dependencies_parsed_at":"2023-01-14T15:49:37.711Z","dependency_job_id":null,"html_url":"https://github.com/okeuday/odroid_fish","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/okeuday%2Fodroid_fish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/okeuday%2Fodroid_fish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/okeuday%2Fodroid_fish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/okeuday%2Fodroid_fish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/okeuday","download_url":"https://codeload.github.com/okeuday/odroid_fish/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246395572,"owners_count":20770240,"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":["cloudi","microservice","python"],"created_at":"2024-12-12T16:14:41.088Z","updated_at":"2025-10-05T14:08:14.331Z","avatar_url":"https://github.com/okeuday.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Odroid-C1 Fish for [CloudI](http://cloudi.org)\n==============================================\n\nUse [`odroid_display`](https://github.com/okeuday/odroid_display/) to\ndisplay CloudI service requests as UTF8-art fish on a 16x2 (blue) LCD display.\nThis is mainly for demonstration purposes and was inspired by\n[https://github.com/lericson/fish](https://github.com/lericson/fish)\n(which is also in Python).\n\n4 Odroid-C1 CloudI nodes are used to demonstrate both local and remote\nservice request communication, with the \"lake\" configuration\n(Odroid-C1 node positions with 16x2 LCD displays) as:\n\n    \n    (node 2)        (node 0)\n    \n    (node 3)        (node 1)\n    \n\nThe separate CloudI configuration files for each node are provided\nalong with the fish.py Python CloudI service.\n\nDetails\n-------\n\nEach UTF8 fish contains the node integer that created the fish, so the\nnode integer follows the fish in the LCD display as it swims to other nodes.\nThe types of fish are shown below (for node 0):\n\n    \u003e0)°\u003e       bass\n    \u003e←0{{·\u003e     salmon\n    \u003e←0[[[[θ\u003e   carp\n\nThe fish are JSON data sent within CloudI service requests, with a timeout\nthat determines the lifetime of the fish.  Separate service requests\nmanage the hatchery and view updates with regular \"tick\" intervals.\n\nThe 16x2 LCD display also provides 7 status LEDs below the LCD.  These LEDs\nare toggled whenever a view update comes from a specific node\n(so a view update from node X toggles LED #X on the destination node Y).\nOnce a fish's position crosses a node boundary, the fish's service request\npasses to the remote node (as shown at the end of `FishState.__render_move`).\nThe internal time kept within the fish's JSON data is reset before the send\nto a remote node, since it is assumed that there is no clock synchronization\nin-place.\n\nRunning CloudI with the provided configurations on the 4 Odroid-C1s\n(not including a Netgear GS108 Gigabit Switch) consumes a total of ~14 watts.\n\nExample\n-------\n\n![](https://raw.githubusercontent.com/okeuday/odroid_fish/master/fishbowl.gif)\n\nInstall (Node 0)\n----------------\n\n    cd ~\n    mkdir src\n    cd src\n    git clone https://github.com/CloudI/CloudI.git\n    cd CloudI/src\n    ./autogen.sh \u0026\u0026 CLOUDI_ARG_NODE_NAME_SHORT=odroid CLOUDI_ARG_NODE_COOKIE=odroid ./configure --with-cxx-backtrace --with-boost-libdir=/usr/lib/arm-linux-gnueabihf/ \u0026\u0026 ./make_dev\n    sudo ./make_dev install\n    cd ../../\n    git clone https://github.com/hardkernel/wiringPi.git\n    cd wiringPi\n    ./build\n    cd ..\n    git clone https://github.com/okeuday/odroid_display.git\n    cd odroid_display/src\n    make\n    cd ../../\n    git clone https://github.com/okeuday/odroid_fish.git\n    sudo mv -f /usr/local/etc/cloudi/cloudi.conf /usr/local/etc/cloudi/cloudi.conf.old\n    sudo cp -f odroid_fish/odroid0_cloudi.conf /usr/local/etc/cloudi/cloudi.conf\n    # make sure /etc/hostname and /etc/hosts allow the nodes to find each other\n    # (i.e., change \"odroid\" to \"odroid0\" and add IP addresses for 1-3)\n    sudo cloudi start\n\nAuthor\n------\n\nMichael Truog (mjtruog at protonmail dot com)\n\nLicense\n-------\n\nMIT License\n\nThematic Inspiration\n--------------------\n[![Find The Fish (1983)](http://img.youtube.com/vi/UGBZnfB46es/0.jpg)](https://www.youtube.com/watch?v=UGBZnfB46es \"Find The Fish (1983)\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fokeuday%2Fodroid_fish","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fokeuday%2Fodroid_fish","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fokeuday%2Fodroid_fish/lists"}