{"id":18340126,"url":"https://github.com/f33rni/seismohome","last_synced_at":"2025-07-12T12:12:19.391Z","repository":{"id":154097000,"uuid":"631401386","full_name":"F33RNI/SeismoHome","owner":"F33RNI","description":"MPU-6050 based earthquake detector with alarm, uninterruptible power supply, data logging and web interface","archived":false,"fork":false,"pushed_at":"2023-04-27T05:02:36.000Z","size":1900,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-21T18:21:16.775Z","etag":null,"topics":["alarm","alert","arduino","atmega328p","earthquakes","flask","javascript","linux","mpu-6050","mpu6050","platformio","uplot","web","windows"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/F33RNI.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}},"created_at":"2023-04-22T22:54:47.000Z","updated_at":"2025-02-11T16:44:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"dd5f8a13-f79c-4b82-958b-2bc908e98cc9","html_url":"https://github.com/F33RNI/SeismoHome","commit_stats":{"total_commits":45,"total_committers":1,"mean_commits":45.0,"dds":0.0,"last_synced_commit":"edcf303a140cb55780858251da29c245e204e4de"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F33RNI%2FSeismoHome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F33RNI%2FSeismoHome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F33RNI%2FSeismoHome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/F33RNI%2FSeismoHome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/F33RNI","download_url":"https://codeload.github.com/F33RNI/SeismoHome/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247440644,"owners_count":20939223,"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":["alarm","alert","arduino","atmega328p","earthquakes","flask","javascript","linux","mpu-6050","mpu6050","platformio","uplot","web","windows"],"created_at":"2024-11-05T20:21:05.190Z","updated_at":"2025-04-06T05:32:24.721Z","avatar_url":"https://github.com/F33RNI.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SeismoHome\n## MPU-6050 based earthquake detector with alarm, uninterruptible power supply, data logging and web interface\n\n\u003cdiv style=\"width:100%;text-align:center;\"\u003e\n   \u003cp\u003e\n      \u003ca href=\"https://f3rni.bandcamp.com\"\u003e\u003cimg alt=\"Bandcamp\" src=\"https://img.shields.io/badge/-Bandcamp-cyan\" \u003e\u003c/a\u003e\n      \u003ca href=\"https://soundcloud.com/f3rni\"\u003e\u003cimg alt=\"SoundCloud\" src=\"https://img.shields.io/badge/-SoundCloud-orange\" \u003e\u003c/a\u003e\n      \u003ca href=\"https://www.youtube.com/@F3RNI\"\u003e\u003cimg alt=\"YouTube\" src=\"https://img.shields.io/badge/-YouTube-red\" \u003e\u003c/a\u003e\n   \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv style=\"width:100%;text-align:center;\"\u003e\n    \u003cp align=\"center\"\u003e\n        \u003cimg src=\"device_photo_1.jpg\" alt=\"Seismograph photo 1\" width=\"auto\" height=\"300\"\u003e\n        \u003cimg src=\"device_photo_2.jpg\" alt=\"Seismograph photo 2\" width=\"auto\" height=\"300\"\u003e\n    \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv style=\"content: ''; clear: both; display: table;\"\u003e\n   \u003cimg src=\"web_screenshot.png\" alt=\"Web page screenshot\" style=\"width:100%; padding: 0.5em;\"\u003e\n\u003c/div\u003e\n\n----------\n\n## What is it and how does it work?\n\nSeismoHome is a home seismometer / seismograph project capable of recording acceleration data and determining the intensity of an earthquake to trigger an alarm.\nAlso, there is a web page that displays current data, including accelerations on all 3 axes and spectrograms (FFT) for each axis. Also, on this page you can download (in RAW / WAV or CSV format) / delete data files, set alarm thresholds and time, and test the alarm in two modes (low ang high).\n\nThe main part of the seismometer is the popular MPU-6050 IMU, operating in +/-2g mode (the most sensitive mode) and updating data 40 times per second (with a low-pass filter set to ~20Hz).\nTogether with further software filters, the range of the seismograph is 0.1-15Hz.\n\nThe IMU is connected to an Atmega328P (Arduino) which handles receiving data from the IMU, managing battery charging, measuring other data, and communicating with the main data handler (Python script) using UART\n\n\n\n----------\n\n## Dependencies\n\n- **Flask**: https://github.com/pallets/flask\n- **numpy**: https://github.com/numpy/numpy\n- **pyserial**: https://github.com/pyserial/pyserial\n- **TimerOne**: https://github.com/PaulStoffregen/TimerOne\n- **imerTwo**: https://github.com/theAndreas/TimerTwo\n- **uPlot**: https://github.com/leeoniya/uPlot\n- **js-colormaps**: https://github.com/timothygebhard/js-colormaps\n\n----------\n\n## Get started\n\n1. Find all the necessary components and assemble a seismograph =) *(if you want me to make a schematic and instructions, open an issue, because I doubt that this project will be of interest to anyone)*\n2. Download PlatformIO source code and upload it to your MCU (you can simply rename src/main.cpp to main.ino and use Arduino IDE for it)\n3. Attach the seismograph securely. Best of all - stick to the floor in a room where people walk the least. An example in the photo below\n\n\n\u003cimg src=\"device_photo_3.jpg\" alt=\"The seismograph is hot-glued to the floor\" style=\"height: 300px; width: auto; padding: 0.5em;\"\u003e\n\n4. Download release (or clone repo, install all requirements from requirements.txt)\n5. For linux, copy `seismohome.service` to `/etc/systemd/system/` and edit `WorkingDirectory` and `ExecStart`. Reload systemd daemon (`sudo systemctl daemon-reload`), enable service on boot (`sudo systemctl enable seismohome`) and start it (`sudo systemctl start seismohome`).\n6. Make sure all working correctly (ADC LED should blink) and open web page\n7. Set thresholds to high values, wait for an hour or more and write down maximum intensity (This will be the intensity of the noise). Next, set this intensity as the threshold for low alarm mode, and for high add 0.5 (For example 1.5 and 2 JMA)\n\nIf you want more detailed instructions, please open an issue. If I understand that someone has an interest in the project, I will make more detailed instructions and even a schematic.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff33rni%2Fseismohome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ff33rni%2Fseismohome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff33rni%2Fseismohome/lists"}