{"id":13719747,"url":"https://github.com/raspishake/rsudp","last_synced_at":"2026-04-05T11:32:49.022Z","repository":{"id":36183145,"uuid":"221754685","full_name":"raspishake/rsudp","owner":"raspishake","description":"Continuous visual display, sudden motion monitoring, and historical replay of Raspberry Shake data","archived":false,"fork":false,"pushed_at":"2025-04-25T20:33:21.000Z","size":19308,"stargazers_count":70,"open_issues_count":6,"forks_count":40,"subscribers_count":11,"default_branch":"master","last_synced_at":"2026-03-28T08:29:36.754Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://raspishake.github.io/rsudp/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raspishake.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":"docs/contributing.html","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":"2019-11-14T17:44:38.000Z","updated_at":"2025-12-26T05:28:58.000Z","dependencies_parsed_at":"2024-01-14T17:04:24.254Z","dependency_job_id":"e6823f46-3a40-4bce-bf34-463fd5297624","html_url":"https://github.com/raspishake/rsudp","commit_stats":{"total_commits":870,"total_committers":9,"mean_commits":96.66666666666667,"dds":"0.037931034482758585","last_synced_commit":"d481606827aff9d4550b5368d1b18f104d865c8e"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/raspishake/rsudp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raspishake%2Frsudp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raspishake%2Frsudp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raspishake%2Frsudp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raspishake%2Frsudp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raspishake","download_url":"https://codeload.github.com/raspishake/rsudp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raspishake%2Frsudp/sbom","scorecard":{"id":762468,"data":{"date":"2025-08-11","repo":{"name":"github.com/raspishake/rsudp","commit":"467e8c01fbc878232487e1fcca62da03426f4eaf"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"name":"Code-Review","score":0,"reason":"Found 2/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/deploy_docs_from_docsrc.yaml:18","Warn: topLevel 'contents' permission set to 'write': .github/workflows/add_package_to_release.yaml:9","Warn: no topLevel permission defined: .github/workflows/deploy_docs_from_docsrc.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/add_package_to_release.yaml:55"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/add_package_to_release.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/raspishake/rsudp/add_package_to_release.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/add_package_to_release.yaml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/raspishake/rsudp/add_package_to_release.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/add_package_to_release.yaml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/raspishake/rsudp/add_package_to_release.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/add_package_to_release.yaml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/raspishake/rsudp/add_package_to_release.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/add_package_to_release.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/raspishake/rsudp/add_package_to_release.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/add_package_to_release.yaml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/raspishake/rsudp/add_package_to_release.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/add_package_to_release.yaml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/raspishake/rsudp/add_package_to_release.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/add_package_to_release.yaml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/raspishake/rsudp/add_package_to_release.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy_docs_from_docsrc.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/raspishake/rsudp/deploy_docs_from_docsrc.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy_docs_from_docsrc.yaml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/raspishake/rsudp/deploy_docs_from_docsrc.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy_docs_from_docsrc.yaml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/raspishake/rsudp/deploy_docs_from_docsrc.yaml/master?enable=pin","Warn: pipCommand not pinned by hash: bin/unix-install.sh:269","Warn: pipCommand not pinned by hash: bin/unix-install.sh:271","Warn: pipCommand not pinned by hash: bin/unix-update.sh:123","Warn: pipCommand not pinned by hash: bin/unix-update.sh:125","Warn: pipCommand not pinned by hash: unix-start-rsudp.sh:29","Warn: pipCommand not pinned by hash: .github/workflows/add_package_to_release.yaml:25","Warn: pipCommand not pinned by hash: .github/workflows/add_package_to_release.yaml:26","Warn: pipCommand not pinned by hash: .github/workflows/deploy_docs_from_docsrc.yaml:28","Warn: pipCommand not pinned by hash: .github/workflows/deploy_docs_from_docsrc.yaml:29","Info:   0 out of  10 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   9 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 2.2.1 not signed: https://api.github.com/repos/raspishake/rsudp/releases/214311458","Warn: release artifact 2.1.0 not signed: https://api.github.com/repos/raspishake/rsudp/releases/203612891","Warn: release artifact 2.0.1 not signed: https://api.github.com/repos/raspishake/rsudp/releases/194321247","Warn: release artifact 2.0.0 not signed: https://api.github.com/repos/raspishake/rsudp/releases/173036929","Warn: release artifact 1.1.0 not signed: https://api.github.com/repos/raspishake/rsudp/releases/55000123","Warn: release artifact 2.2.1 does not have provenance: https://api.github.com/repos/raspishake/rsudp/releases/214311458","Warn: release artifact 2.1.0 does not have provenance: https://api.github.com/repos/raspishake/rsudp/releases/203612891","Warn: release artifact 2.0.1 does not have provenance: https://api.github.com/repos/raspishake/rsudp/releases/194321247","Warn: release artifact 2.0.0 does not have provenance: https://api.github.com/repos/raspishake/rsudp/releases/173036929","Warn: release artifact 1.1.0 does not have provenance: https://api.github.com/repos/raspishake/rsudp/releases/55000123"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T23:48:33.422Z","repository_id":36183145,"created_at":"2025-08-22T23:48:33.422Z","updated_at":"2025-08-22T23:48:33.422Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31428645,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T02:22:46.605Z","status":"ssl_error","status_checked_at":"2026-04-05T02:22:33.263Z","response_time":75,"last_error":"SSL_read: 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":[],"created_at":"2024-08-03T01:00:54.928Z","updated_at":"2026-04-05T11:32:48.970Z","avatar_url":"https://github.com/raspishake.png","language":"Python","funding_links":[],"categories":["Software","Software and Tools"],"sub_categories":["Seismic and Seismology"],"readme":"![Raspberry Shake event logo](https://raw.githubusercontent.com/raspishake/rsudp/master/docs/_static/logo.png)\n# rsudp\n### Continuous sudden motion and visual monitoring of Raspberry Shake data\n*Written by Ian Nesbitt (@iannesbitt), Richard Boaz, and Justin Long (@crockpotveggies)*\n\n*Maintained by Raspberry Shake, S.A. for use by the citizen science and seismology-in-schools communities.*\n\n[![PyPI](https://img.shields.io/pypi/v/rsudp)](https://pypi.org/project/rsudp/)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/rsudp)](https://pypi.org/project/rsudp/)\n[![GitHub](https://img.shields.io/github/license/raspishake/rsudp)](https://github.com/raspishake/rsudp/blob/master/LICENSE)\n[![Documentation](https://img.shields.io/badge/docs-passed-brightgreen)](https://raspishake.github.io/rsudp/)\n[![Build Status](https://scrutinizer-ci.com/g/raspishake/rsudp/badges/build.png?b=master)](https://scrutinizer-ci.com/g/raspishake/rsudp/build-status/master)\n[![Code Coverage](https://scrutinizer-ci.com/g/raspishake/rsudp/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/raspishake/rsudp/?branch=master)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/raspishake/rsudp/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/raspishake/rsudp/?branch=master)\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.02565/status.svg)](https://doi.org/10.21105/joss.02565)\n\n`rsudp` is a tool for receiving and interacting with data casts from [Raspberry Shake](https://raspberryshake.org) personal seismographs and Raspberry Boom pressure transducer instruments.\n\n`rsudp` has [full documentation here](https://raspishake.github.io/rsudp/). We also have [tutorial instructions](https://raspishake.github.io/rsudp/index.html#tutorial) to install, set up, and run `rsudp` there. Additionally, our documentation features [YouTube walkthroughs](https://raspishake.github.io/rsudp/youtube.html), [notes for contributors](https://raspishake.github.io/rsudp/contributing.html), a brief [Developer's guide](https://raspishake.github.io/rsudp/theory.html), and [module documentation](https://raspishake.github.io/rsudp/#code-documentation).\n\nWe now have [a paper](https://doi.org/10.21105/joss.02565) published in The Journal of Open Source Software! You can reference `rsudp` using the following citation:\n\n\u003e Nesbitt et al., (2021). rsudp: A Python package for real-time seismic monitoring with Raspberry Shake instruments. Journal of Open Source Software, 6(68), 2565, https://doi.org/10.21105/joss.02565\n\n\n`rsudp` contains ten main features:\n1. **Alert** - an earthquake/sudden motion alert trigger, complete with a bandpass filter and stream deconvolution capabilities\n2. **AlertSound** - a thread that plays a MP3 audio file in the event of the alert module signalling an alarm state\n3. **Plot** - a live-plotting routine to display data as it arrives on the port, with an option to save plots some time after an alarm\n4. **Tweeter** - a thread that broadcasts a Twitter message when the alert module is triggered, and optionally can tweet saved plots from the plot module\n5. **Telegrammer** - a thread similar to the Tweeter module that sends a [Telegram](https://telegram.org) message when an alarm is triggered, which can also broadcast saved images\n6. **Writer** - a simple miniSEED writer\n7. **Forward** - forward a data cast to one or several IP/port destinations\n8. **RSAM** - computes RSAM (Real-time Seismic AMplitude) and either prints or forwards it to an IP/port destination\n9. **Custom** - run custom code when an `ALARM` message is received\n10. **Print** - a debugging tool to output raw data to the command line\n\n`rsudp` is written in Python but requires no coding knowledge to run. Simply follow the [instructions to install the software](https://raspishake.github.io/rsudp/installing.html), go to your Shake's web front end, [configure a UDP datacast](https://manual.raspberryshake.org/udp.html#configuring-a-data-stream-the-easy-way) to your computer's local IP address, [start the software](https://raspishake.github.io/rsudp/running.html) from the command line, and watch the data roll in.\n\n![Earthquake plot recorded on a Raspberry Shake 4D](https://raw.githubusercontent.com/raspishake/rsudp/master/docs/_static/4d-event.png)\n\n(Above) a plot of an earthquake on the four channels of a Raspberry Shake 4D (EHZ---the geophone channel, and EHE, EHN, and ENZ---the accelerometer east, north, and vertical channels).\n\n\n### DISCLAIMER\n\nRSUDP source code and software is provided \"as is\". No guarantee of functionality, performance, or advertised intent is implicitly or explicitly provided.\n\nThis project is free-to-use and free-to-copy, located in the public domain, and is provided in the hope that it may be useful.\n\nRaspberry Shake, S.A., may, from time to time, make updates to the code base, be these bug fixes or new features.  However, the company does not formally support this software / program, nor does it place itself under any obligation to respond to bug reports or new feature requests in any prescribed time frame.\n\nLike all public projects, end-users are encouraged to provide their own bug fixes and new features as they desire: create a new branch, followed by a merge request, to have the code reviewed and folded into the main branch.\n\nWe hope you enjoy RSUDP, playing with it, and perhaps even diving into the code to see how it can be made better!\n\nTEAM RS\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraspishake%2Frsudp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraspishake%2Frsudp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraspishake%2Frsudp/lists"}