├── docs ├── README.md ├── screenshots │ ├── listing.png │ └── raspiscan.jpg ├── DOCKER.md ├── SERVER.md └── FRONTEND.md ├── frontend ├── dist │ └── prod │ │ └── version ├── .gitignore ├── src │ ├── scss │ │ ├── app.scss │ │ ├── modules │ │ │ ├── topics │ │ │ │ ├── _index.scss │ │ │ │ ├── add.scss │ │ │ │ └── topics.scss │ │ │ ├── _index.scss │ │ │ ├── home │ │ │ │ └── _index.scss │ │ │ ├── excludes │ │ │ │ └── _index.scss │ │ │ ├── navigation │ │ │ │ └── _index.scss │ │ │ └── devices │ │ │ │ └── _index.scss │ │ └── global │ │ │ ├── button.scss │ │ │ ├── _index.scss │ │ │ ├── background.scss │ │ │ ├── tab.scss │ │ │ ├── base.scss │ │ │ ├── form.scss │ │ │ ├── modal.scss │ │ │ ├── typo.scss │ │ │ ├── colors.scss │ │ │ └── responsive.scss │ ├── app.js │ └── lib │ │ ├── Global │ │ ├── Globals.js │ │ ├── Log.js │ │ ├── Events.js │ │ ├── Utils.js │ │ └── Module.js │ │ ├── Locale │ │ ├── Translations.js │ │ ├── index.js │ │ ├── en.json │ │ └── de.json │ │ ├── Home │ │ ├── Templates │ │ │ ├── layout.html │ │ │ ├── Exclude.html │ │ │ ├── DeviceTopics.html │ │ │ ├── TopicAdd.html │ │ │ ├── Topic.html │ │ │ └── Device.html │ │ ├── index.js │ │ ├── excludes.js │ │ ├── devices.js │ │ ├── topic.js │ │ └── topics.js │ │ ├── Icons │ │ ├── stop.html │ │ ├── svg │ │ │ ├── stop.svg │ │ │ ├── play.svg │ │ │ ├── pause.svg │ │ │ ├── skip-next.svg │ │ │ ├── home.svg │ │ │ ├── check.svg │ │ │ ├── user.svg │ │ │ ├── eye_alt.svg │ │ │ ├── skip-prev.svg │ │ │ ├── plus.svg │ │ │ ├── options.svg │ │ │ ├── eye.svg │ │ │ ├── pen.svg │ │ │ ├── heart.svg │ │ │ ├── mouth.svg │ │ │ ├── book.svg │ │ │ ├── close.svg │ │ │ ├── music.svg │ │ │ └── podcast.svg │ │ ├── play.html │ │ ├── pause.html │ │ ├── skip-next.html │ │ ├── home.html │ │ ├── check.html │ │ ├── user.html │ │ ├── eye_alt.html │ │ ├── skip-prev.html │ │ ├── plus.html │ │ ├── options.html │ │ ├── eye.html │ │ ├── pen.html │ │ ├── heart.html │ │ ├── mouth.html │ │ ├── book.html │ │ ├── close.html │ │ ├── music.html │ │ ├── podcast.html │ │ └── index.js │ │ ├── Tab.js │ │ ├── Navigation │ │ ├── Templates │ │ │ └── navigation.html │ │ └── index.js │ │ └── Main.js ├── public │ ├── favicon.ico │ ├── css │ │ └── fonts │ │ │ └── Barlow │ │ │ ├── barlow-v12-latin-100.woff2 │ │ │ ├── barlow-v12-latin-200.woff2 │ │ │ ├── barlow-v12-latin-300.woff2 │ │ │ ├── barlow-v12-latin-500.woff2 │ │ │ ├── barlow-v12-latin-600.woff2 │ │ │ ├── barlow-v12-latin-700.woff2 │ │ │ ├── barlow-v12-latin-800.woff2 │ │ │ ├── barlow-v12-latin-900.woff2 │ │ │ └── barlow-v12-latin-regular.woff2 │ ├── index_template.html │ ├── dev.html │ └── index.html ├── Dockerfile ├── .editorconfig ├── .eslintrc.json ├── config │ ├── WebpackConfigClass.js │ ├── BrowserSync.js │ ├── WebpackConfigCommon.js │ ├── WebpackConfigDev.js │ ├── WebpackConfigProd.js │ └── WebpackRun.js ├── package.json └── .stylelintrc ├── server ├── lib │ ├── Server │ │ ├── base64.js │ │ ├── routes │ │ │ ├── Home.js │ │ │ ├── Topics.js │ │ │ ├── Excludes.js │ │ │ ├── index.js │ │ │ ├── Device.js │ │ │ ├── Exclude.js │ │ │ ├── Topic.js │ │ │ └── Devices.js │ │ ├── Route.js │ │ └── index.js │ ├── Mqtt │ │ ├── index.js │ │ └── Client.js │ ├── Globals.js │ └── RTL433 │ │ ├── DeviceTopic.js │ │ ├── Topics.js │ │ ├── Excludes.js │ │ ├── Device.js │ │ └── index.js ├── config │ ├── excludes.json.example │ ├── types.json │ ├── default.conf.example │ └── mapping.json.example ├── .dockerignore ├── index.js ├── entrypoint.sh ├── .babelrc ├── app.js ├── testing.js ├── webpack-app-pkg.config.js ├── Dockerfile └── package.json ├── .gitignore ├── docker-compose-rtl433.yaml ├── zigbee2mqtt └── configuration.yaml.example ├── shared ├── package.json └── lib │ ├── Log.js │ ├── Events.js │ ├── Utils.js │ ├── Module.js │ └── Config.js ├── setupBuildx.sh ├── docker-compose-portainer.yml ├── docker-compose-zigbee2mqtt.yml ├── .github └── workflows │ └── build_and_deploy.yml ├── docker-compose-frontend.yml ├── docker-compose.yml ├── docker-compose-server.yml ├── .env.example ├── setup.sh ├── README.md └── rtl_433 └── rtl-sdr.rules /docs/README.md: -------------------------------------------------------------------------------- 1 | # node-rtl433-ui 2 | 3 | -------------------------------------------------------------------------------- /frontend/dist/prod/version: -------------------------------------------------------------------------------- 1 | 444213de7856819f27b9 -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .hot 3 | node_modules 4 | npm-debug.log 5 | -------------------------------------------------------------------------------- /server/lib/Server/base64.js: -------------------------------------------------------------------------------- 1 | export default 'U2NoZWlzcyBkaWUgV2FuZCBhbg=='; -------------------------------------------------------------------------------- /server/config/excludes.json.example: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "model": "Toyota" 4 | } 5 | ] -------------------------------------------------------------------------------- /frontend/src/scss/app.scss: -------------------------------------------------------------------------------- 1 | @import "global/_index.scss"; 2 | @import "modules/_index.scss"; 3 | -------------------------------------------------------------------------------- /frontend/src/scss/modules/topics/_index.scss: -------------------------------------------------------------------------------- 1 | @import "./topics.scss"; 2 | @import "./add.scss"; 3 | -------------------------------------------------------------------------------- /docs/screenshots/listing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seekwhencer/node-rtl433-ui/HEAD/docs/screenshots/listing.png -------------------------------------------------------------------------------- /frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seekwhencer/node-rtl433-ui/HEAD/frontend/public/favicon.ico -------------------------------------------------------------------------------- /docs/screenshots/raspiscan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seekwhencer/node-rtl433-ui/HEAD/docs/screenshots/raspiscan.jpg -------------------------------------------------------------------------------- /frontend/src/app.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Author: Matthias Kallenbach, Berlin 2023 3 | * 4 | */ 5 | import Main from './lib/Main.js'; 6 | window.APP = Main; 7 | -------------------------------------------------------------------------------- /server/config/types.json: -------------------------------------------------------------------------------- 1 | { 2 | "boolean": [ 3 | "DEBUG" 4 | ], 5 | "int": [ 6 | "SERVER_PORT", 7 | "MQTT_PORT" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /frontend/src/lib/Global/Globals.js: -------------------------------------------------------------------------------- 1 | import './Log.js'; 2 | import './Utils.js'; 3 | import ModuleClass from './Module.js'; 4 | window.MODULECLASS = ModuleClass; 5 | 6 | -------------------------------------------------------------------------------- /frontend/src/lib/Locale/Translations.js: -------------------------------------------------------------------------------- 1 | import DE from './de.json'; 2 | import EN from './en.json'; 3 | 4 | export default { 5 | 'de' : DE, 6 | 'en' : EN 7 | } 8 | -------------------------------------------------------------------------------- /frontend/public/css/fonts/Barlow/barlow-v12-latin-100.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seekwhencer/node-rtl433-ui/HEAD/frontend/public/css/fonts/Barlow/barlow-v12-latin-100.woff2 -------------------------------------------------------------------------------- /frontend/public/css/fonts/Barlow/barlow-v12-latin-200.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seekwhencer/node-rtl433-ui/HEAD/frontend/public/css/fonts/Barlow/barlow-v12-latin-200.woff2 -------------------------------------------------------------------------------- /frontend/public/css/fonts/Barlow/barlow-v12-latin-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seekwhencer/node-rtl433-ui/HEAD/frontend/public/css/fonts/Barlow/barlow-v12-latin-300.woff2 -------------------------------------------------------------------------------- /frontend/public/css/fonts/Barlow/barlow-v12-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seekwhencer/node-rtl433-ui/HEAD/frontend/public/css/fonts/Barlow/barlow-v12-latin-500.woff2 -------------------------------------------------------------------------------- /frontend/public/css/fonts/Barlow/barlow-v12-latin-600.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seekwhencer/node-rtl433-ui/HEAD/frontend/public/css/fonts/Barlow/barlow-v12-latin-600.woff2 -------------------------------------------------------------------------------- /frontend/public/css/fonts/Barlow/barlow-v12-latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seekwhencer/node-rtl433-ui/HEAD/frontend/public/css/fonts/Barlow/barlow-v12-latin-700.woff2 -------------------------------------------------------------------------------- /frontend/public/css/fonts/Barlow/barlow-v12-latin-800.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seekwhencer/node-rtl433-ui/HEAD/frontend/public/css/fonts/Barlow/barlow-v12-latin-800.woff2 -------------------------------------------------------------------------------- /frontend/public/css/fonts/Barlow/barlow-v12-latin-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seekwhencer/node-rtl433-ui/HEAD/frontend/public/css/fonts/Barlow/barlow-v12-latin-900.woff2 -------------------------------------------------------------------------------- /frontend/public/css/fonts/Barlow/barlow-v12-latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/seekwhencer/node-rtl433-ui/HEAD/frontend/public/css/fonts/Barlow/barlow-v12-latin-regular.woff2 -------------------------------------------------------------------------------- /server/.dockerignore: -------------------------------------------------------------------------------- 1 | config/*.json 2 | config/*.conf 3 | dist 4 | .babelrc 5 | testing.js 6 | webpack-app-pkg.config.js 7 | .env 8 | 9 | !config/*.example 10 | !config/types.json -------------------------------------------------------------------------------- /docs/DOCKER.md: -------------------------------------------------------------------------------- 1 | ## *node-rtl433-ui* 2 | # Docker 3 | 4 | You can drop all files from this repo, except: 5 | 6 | ```bash 7 | .env 8 | docker-compose.yml 9 | server/config/default.conf 10 | ``` 11 | 12 | 13 | ## Todo -------------------------------------------------------------------------------- /frontend/src/scss/modules/_index.scss: -------------------------------------------------------------------------------- 1 | @import "./navigation/_index.scss"; 2 | @import "./home/_index.scss"; 3 | @import "./devices/_index.scss"; 4 | @import "./topics/_index.scss"; 5 | @import "./excludes/_index.scss"; 6 | 7 | -------------------------------------------------------------------------------- /frontend/src/scss/global/button.scss: -------------------------------------------------------------------------------- 1 | button { 2 | border: none; 3 | background-color: rgba(255, 255, 255, 0.6); 4 | font-size: 1em; 5 | line-height: 1em; 6 | margin: 0; 7 | padding: 3px 6px; 8 | border-radius: 3px; 9 | } 10 | -------------------------------------------------------------------------------- /server/config/default.conf.example: -------------------------------------------------------------------------------- 1 | # for development 2 | DEBUG=true 3 | # webserver 4 | SERVER_PORT=3000 5 | # secons to forget a unmapped device 6 | DEVICE_UNMAPPED_AGE_MAX=120 7 | # mqtt broker 8 | MQTT_HOST=CHANGE_ME 9 | MQTT_PORT=1883 10 | MQTT_CLIENT_ID=raspiscan 11 | -------------------------------------------------------------------------------- /frontend/src/scss/global/_index.scss: -------------------------------------------------------------------------------- 1 | @import "colors.scss"; 2 | @import "typo.scss"; 3 | @import "responsive.scss"; 4 | @import "base.scss"; 5 | @import "tab.scss"; 6 | @import "button.scss"; 7 | @import "form.scss"; 8 | @import "modal.scss"; 9 | @import "background.scss"; 10 | -------------------------------------------------------------------------------- /frontend/src/lib/Home/Templates/layout.html: -------------------------------------------------------------------------------- 1 |
| ${t.data.field} | 5 |6 | ${data[t.data.field]} 7 | | 8 |${t.data.topic} | 9 |
| ${field} | 10 |${data[field]} 12 | | 13 |
| ID ${id} | 7 |PROTOCOL ${protocol} | 8 |CHANNEL ${channel} | 9 |MODEL 10 | ${model} 11 | | 12 |HASH 13 | ${hash} 14 | | 15 |16 | 26 | | 27 |
|
36 | ${f} 38 | ${data[f]} 40 | |
41 | `).join('')}
42 |