{"id":13395645,"url":"https://github.com/roccomuso/iot-433mhz","last_synced_at":"2025-10-24T03:53:43.631Z","repository":{"id":57276255,"uuid":"48773253","full_name":"roccomuso/iot-433mhz","owner":"roccomuso","description":":globe_with_meridians: IoT System to control 433 MHz RC power sockets, PIR, Door Sensors and much more.","archived":false,"fork":false,"pushed_at":"2023-10-09T21:41:19.000Z","size":44430,"stargazers_count":338,"open_issues_count":19,"forks_count":47,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-03-29T05:06:11.682Z","etag":null,"topics":["alarm","arduino","domotic","iot","iot-433mhz","node","nodejs","npm","radio-frequency","raspberry-pi","telegram-bot","transmitter","webhooks"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/roccomuso.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2015-12-30T00:32:24.000Z","updated_at":"2025-03-14T02:42:18.000Z","dependencies_parsed_at":"2022-08-25T01:21:09.868Z","dependency_job_id":"e4a34041-e81a-473c-a2c0-656315332b3a","html_url":"https://github.com/roccomuso/iot-433mhz","commit_stats":{"total_commits":355,"total_committers":4,"mean_commits":88.75,"dds":"0.12957746478873244","last_synced_commit":"cdaf9ca709f777d91326ee26ac0301d9bcff9115"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roccomuso%2Fiot-433mhz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roccomuso%2Fiot-433mhz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roccomuso%2Fiot-433mhz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roccomuso%2Fiot-433mhz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roccomuso","download_url":"https://codeload.github.com/roccomuso/iot-433mhz/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294536,"owners_count":20915340,"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","arduino","domotic","iot","iot-433mhz","node","nodejs","npm","radio-frequency","raspberry-pi","telegram-bot","transmitter","webhooks"],"created_at":"2024-07-30T18:00:27.098Z","updated_at":"2025-10-24T03:53:38.595Z","avatar_url":"https://github.com/roccomuso.png","language":"JavaScript","funding_links":["https://patreon.com/roccomuso"],"categories":["Framework"],"sub_categories":[],"readme":"![IoT 433Mhz Logo](https://github.com/roccomuso/iot-433mhz/blob/master/other/pics/logo128x128.png?raw=true \"Iot 433Mhz Logo\")\n[![Build Status](https://travis-ci.org/roccomuso/iot-433mhz.svg?branch=master)](https://travis-ci.org/roccomuso/iot-433mhz) [![NPM Version](https://img.shields.io/npm/v/iot-433mhz.svg)](https://www.npmjs.com/package/iot-433mhz) [![Dependency Status](https://david-dm.org/roccomuso/iot-433mhz.png)](https://david-dm.org/roccomuso/iot-433mhz)\n\u003cspan class=\"badge-patreon\"\u003e\u003ca href=\"https://patreon.com/roccomuso\" title=\"Donate to this project using Patreon\"\u003e\u003cimg src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /\u003e\u003c/a\u003e\u003c/span\u003e\n\n      ___    _____     _  _  __________ __  __ _\n     |_ _|__|_   _|   | || ||___ /___ /|  \\/  | |__  ____\n      | |/ _ \\| |_____| || |_ |_ \\ |_ \\| |\\/| | '_ \\|_  /\n      | | (_) | |_____|__   _|__) |__) | |  | | | | |/ /\n     |___\\___/|_|        |_||____/____/|_|  |_|_| |_/___|\n\n\n# Summary\n\nIot-433mhz is a home automation framework for 433mhz devices that runs on node.js. You can control 433MHz RC power sockets, PIR sensors, Door Sensors and much more.\nTo get started you just need a:\n- 433mhz transmitter and receiver, both connected to an Arduino with the iot-433mhz sketch on it.\n- A PC/RaspberryPi that runs the iot-433mhz platform, connected to Arduino through USB.\n\n# UI Demo\n\n![iot-433mhz UI](https://github.com/roccomuso/iot-433mhz/blob/master/other/pics/web-ui.gif?raw=true \"Iot-433mhz Web UI\")\n\n# Features\n\n- Multi-platform (Windows, Mac OS X, Linux).\n- Basic Authentication.\n- Intuitive API \u0026 WebHooks to build your own interface.\n- Built-In Material design cards-based template.\n- Real-time UI refresh.\n- Detect Radio Frequency codes (433mhz).\n- Generate Cards and assign it to your rooms.\n- Control RC power sockets, PIR sensors, Door sensors and much more.\n- Telegram Bot for alarm notifications.\n- Totally Open Source \u0026 Open Hardware.\n\n## Recommended Hardware\n\nFor more about the required 433mhz transmitter/receiver and the supported hardware see the [hardware-layer page](https://github.com/roccomuso/iot-433mhz/tree/master/hardware-layer).\n\n# General Install\n\n[![NPM](https://nodei.co/npm-dl/iot-433mhz.png)](https://nodei.co/npm/iot-433mhz/)\n\nYou can get it on [npm](https://www.npmjs.com/package/iot-433mhz):\n\n    npm install iot-433mhz -g\n\nand then execute it from console with:\n\n    iot-433mhz\n\nor Clone this Repo:\n\n\u003ccode\u003egit clone https://github.com/roccomuso/iot-433mhz.git\u003c/code\u003e\n\nThen don't forget to use the right Node version (install *nvm* to handle Node.js versions) and install all the dependencies.\n\nTested and fully-working with `Node 6.17.1` and `Yarn 1.10.0`:\n\n```\nnvm install 6.17.1\nnpm i -g yarn@1.10.0\nyarn install\n```\n\n**Heads Up**: On Raspberry Pi, you can encounter some issue installing all the dependencies, due to permission errors. If that happens try this: \u003ccode\u003esudo chown -R $USER:$GROUP ~/.npm\u003c/code\u003e combined with running \u003ccode\u003enpm cache clean\u003c/code\u003e to get any busted packages out of your cache. In addition, if the error still persist, try adding the flag \u003ccode\u003e--unsafe-perm\u003c/code\u003e:\n\n    sudo npm install --unsafe-perm   (if installing from git)\n    or\n    sudo npm install iot-433mhz -g --unsafe-perm   (if installing from npm)\n\nNote: the reason for using the `--unsafe-perm` option is that when node-gyp tries to recompile any native libraries (eg. serialport) it tries to do so as a \"nobody\" user and then fails to get access to certain directories. Allowing it root access during install allows the dependencies to be installed correctly during the upgrade.\n\nIf running on different platforms follow the platform-specific setup below:\n\n## Browser Support\n\n![IE](https://cloud.githubusercontent.com/assets/398893/3528325/20373e76-078e-11e4-8e3a-1cb86cf506f0.png \"Internet Explorer\") | ![Chrome](https://cloud.githubusercontent.com/assets/398893/3528328/23bc7bc4-078e-11e4-8752-ba2809bf5cce.png \"Google Chrome\") | ![Firefox](https://cloud.githubusercontent.com/assets/398893/3528329/26283ab0-078e-11e4-84d4-db2cf1009953.png \"Firefox\") | ![Opera](https://cloud.githubusercontent.com/assets/398893/3528330/27ec9fa8-078e-11e4-95cb-709fd11dac16.png \"Opera\") | ![Safari](https://cloud.githubusercontent.com/assets/398893/3528331/29df8618-078e-11e4-8e3e-ed8ac738693f.png \"Safari\")\n--- | --- | --- | --- | --- |\nIE 11+ ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ |\n\n# Specific Setup\n\nIot-433Mhz is built on top of Node.js.\nThe server is multi-platform, can run on different hardware combinations shown below:\n\n## A. Computer with Arduino connected and a 433 MHz transmitter and receiver.\n\n![tx rx arduino](https://github.com/roccomuso/iot-433mhz/blob/master/other/schemes/arduino-transmitter-and-receiver.jpg?raw=true \"Arduino Interface and 433mhz\")\n\n### Mac, Linux\n\nThe iot-433mhz server should run smoothly. Remember to install with root permission (*sudo*):\n\n    sudo npm install iot-433mhz -g\n\nand then execute with:\n\n    iot-433mhz\n\n### Windows\n\nTo run the server on windows make sure to install **python 2.7** and **Microsoft Visual Studio Express 2013**. (Required by [node-serialport](https://github.com/voodootikigod/node-serialport)).\nThen just do a:\n\n    npm install iot-433mhz -g\n\nand then execute with:\n\n    iot-433mhz\n\n## B. Raspberry Pi (Raspbian Jessie) with 433 MHz transmitter and receiver\n\nTo use iot-433mhz on Raspberry Pi first do a **system update**:\n- Update \u003ccode\u003e/etc/apt/sources.list\u003c/code\u003e to have \u003ccode\u003ejessie\u003c/code\u003e wherever you've currently got \u003ccode\u003ewheezy\u003c/code\u003e.\n- \u003ccode\u003esudo apt-get update \u0026\u0026 sudo apt-get dist-upgrade\u003c/code\u003e.\n- \u003ccode\u003esudo rpi-update\u003c/code\u003e.\n- Reboot.\n\nThen install Node.js:\n\n    wget http://node-arm.herokuapp.com/node_latest_armhf.deb\n    sudo dpkg -i node_latest_armhf.deb\n    # Check installation\n    node -v\n\n### Transmitter and Receiver connected to GPIO\n\nOne way to go is directly connecting the radio transmitter and receiver to the GPIO as shown in the following picture, but first remember to install **wiringPi** ([link](http://wiringpi.com/download-and-install/)) and to execute the app with root permission (*sudo*):\n\n![rpi 433mhz](https://github.com/roccomuso/iot-433mhz/blob/master/other/schemes/raspberry-pi-rxb6-kxd10036-on-3.3v.jpg?raw=true \"IoT-433mhz with RPi\")\n\n**Heads Up**. The RF receiver module operates at 5V. THE GPIO data pins can only support 3.3V! If you put your receiver on 5V, the data io pin of the raspberry will also receive 5V which is way too high. A simple resistor (4.7k) should be fine, as already outlined in many forum posts, but is recommendend a **logic level converter** / level shifter or a simple **voltage divider**:\n\n![level shifter](https://github.com/roccomuso/iot-433mhz/blob/master/other/schemes/rpi-llc-receiver.jpg?raw=true \"Level Shifter\")\n\nhere the voltage divider:\n\n![voltage divider](https://github.com/roccomuso/iot-433mhz/blob/master/other/schemes/voltage-divider.jpg?raw=true \"Voltage Divider\")\n\nThe important thing here is the ratio of R1 to R2; R1 should be just over half R2's value to ensure 5V is divided down to 3.3V. The values shown here should be suitable for most uses.\n\n**NB**. For this configuration the Raspberry Pi platform uses the 433mhz-utils library through the rpi-433 module. But notice that RFSniffer (compiled c) appears to chew up all the RPi CPU (95%). Not ideal at all, therefore an external Arduino is the recommended solution.\n\n### Using RPi with an external Arduino.\n\n- Remember to install with **root** permission.\n\nThe system can run on RPi using an external Arduino like the other platforms. To do that, just set to \u003ccode\u003etrue\u003c/code\u003e the \u003ccode\u003euse-external-arduino\u003c/code\u003e option in the \u003ccode\u003econfig.json\u003c/code\u003e file.\n- In this way we'll force the RPi to use an Arduino through USB, using the node.js serialport module.\n\n- I'm not sure if strictly necessary but it's worth installing the arduino IDE and related drivers with \u003ccode\u003eapt-get install arduino\u003c/code\u003e.\n\n**Heads Up!** Sometimes the USB doesn't get detected on the fly (you should be able to see it with \u003ccode\u003els /dev/tty*\u003c/code\u003e - [USB not working?](https://www.raspberrypi.org/forums/viewtopic.php?f=28\u0026t=53832)). Just plug-it and then reboot your RPi.\n\nIs recommended to run the server on the RPi through a \"terminal session\". (see [screen](https://www.raspberrypi.org/forums/viewtopic.php?t=8099\u0026p=101209)).\n\n# Config\n\nThrough the Settings page from the Web Interface, you can more or less change the general settings (stored in \u003ccode\u003econfig.json\u003c/code\u003e). Few of those settings are there listed with their default values:\n\n    DEBUG: true, // Start the app in Debugging mode.\n    username: root, // Username required to authenticate (required also during API calls)\n    password: root,  // Password required to authenticate (required also during API calls)\n    arduino_baudrate: 9600, // The arduino default baudrate (no need to change it)\n    server_port: 8080, // Choose on which port you wanna run the web interface\n    db_compact_interval: 12, // Database needs to be compacted to have better performance, by default every 12 hours it will be compacted, put 0 to avoid DB compacting.\n    \"backend_urls\": \"...\" // You can specify a backend json file containing the urls to carry out notifications. (NB. this requires the iot-433mhz-backend repo)\n\niot-433mhz makes use of the node DEBUG module. It's enabled by default, but you can enable or disable it using the environment variable \u003ccode\u003eDEBUG=iot-433mhz:*\u003c/code\u003e. You could also debug a specific part of the application providing as secondary param the file name, like \u003ccode\u003eDEBUG=iot-433mhz:socketFunctions.js\u003c/code\u003e.\n\nIf you made a change to the settings from the Web interface, then to make it effective, you need to restart the app.\nThe best way to set custom settings is through the CLI optional parameters, shown below.\n\n# Usage\n\nStart the system with the console global command:\n\n    iot-433mhz\n\nThen you'll have to select the correct serial port to which the Arduino is attached to\n\n![start iot-433mhz](https://github.com/roccomuso/iot-433mhz/blob/master/other/pics/start-iot-433mhz.PNG?raw=true \"Console start iot-433mhz\")\n\nOnce selected you're ready to go!\nYou're then free to use the system through the beautiful web interface (thumbs up for material-design) or use the API to build your own interface.\n\nTo custom your system settings simply use the CLI options:\n\n    iot-433mhz --help\n\nThat shows something like that:\n\n![iot-433mhz cli options](https://github.com/roccomuso/iot-433mhz/blob/master/other/pics/iot-433mhz-cli-options.PNG?raw=true \"iot-433mhz cli options\")\n\nYou can provide some parameter also as ENV variables:\n\n    NODE_ENV=development  # for virtual serial port\n    PORT=8080  # web server port\n    SERIAL_PORT=/dev/ttyUSB0  # serial port\n\n\n## Built-in Web Interface\n\nReachable on the \u003ccode\u003ehttp://serverAddress:PORT\u003c/code\u003e, the web \u003ccode\u003eserver_port\u003c/code\u003e is defined in \u003ccode\u003econfig.json\u003c/code\u003e, default's value is 8080. It works well in browsers like Chrome (*reccomended*), Firefox, Safari, Opera, Microsoft Edge (it doesn't on Internet Explorer, avoid it).\n\n**It also announce itself over mdns on the address `iot-433mhz.local`**, so you don't have to struggle to get the server ip address.\n\nOnce you open the address on your browser an **authentication is required**.\nUsername and password are stored inside the *config.json* file (default values are: root, root).\n\nIf you wanna have a **live console** output of your iot-433mhz running on Node. There's a real time console-mirroring web-console on \u003ccode\u003ehttp://serverAddress:PORT/console.html\u003c/code\u003e. (Thanks to [console-mirroring](https://github.com/roccomuso/console-mirroring)).\n\n### Add to Homescreen\n\nThe web interface provides along with supported browsers the ability to add the page on your homescreen like a native application. The first time you'll open it, a pop up will come out.\n\n![Added to Homescreen](https://github.com/roccomuso/iot-433mhz/blob/master/other/pics/added-to-homescreen.JPG?raw=true \"Added to Homescreen\")\n\n**Heads Up!** If your server is running on a RPi, make sure to have a static ip address assigned to your server. Otherwise the linked app on the homescreen will not work anymore.\n\n### What kind of devices the system works with\n\nSee the [Hardware page](https://github.com/roccomuso/iot-433mhz/tree/master/hardware-layer).\n\n## API\n\nBelow every single API available is documented. Too lazy to copy and paste? just download and import the Postman collection ([download](https://github.com/roccomuso/iot-433mhz/blob/master/other/IoT-433Mhz.json.postman_collection)).\n\n**Tip**: The iot-433mhz server requires a basic Authentication also for the API calls. Username and Password are defined inside the *config.json* file (default username and password: root, root). What you need to take into account is to set the following header field during your HTTP requests: \u003ccode\u003eAuthorization: Basic cm9vdDpyb290\u003c/code\u003e where the last string is the base64 encoding of \u003ccode\u003eroot:root\u003c/code\u003e, if you changed default username and password you should update the base64 text too ([learn more](https://en.wikipedia.org/wiki/Basic_access_authentication) on Basic Authentication Access).\n\n- \u003ccode\u003eGET /api/settings/get\u003c/code\u003e\nReturn the current settings. Useful to see notification status.\n\n- \u003ccode\u003eGET /api/system/get/uid\u003c/code\u003e\nReturn the unique IoT System UID (a unique random ID generated from the system).\n\n- \u003ccode\u003eGET /api/system/new/uid\u003c/code\u003e\nGenerate a new unique IoT System UID (a unique random ID generated from the system).\n\n- \u003ccode\u003eGET /api/system/telegram/enable\u003c/code\u003e\nEnable notification through Telegram Bot.\n\n- \u003ccode\u003eGET /api/system/telegram/disable\u003c/code\u003e\nDisable notification through Telegram Bot.\n\n- \u003ccode\u003eGET /api/system/email/enable\u003c/code\u003e\nEnable notification through Email.\n\n- \u003ccode\u003eGET /api/system/email/disable\u003c/code\u003e\nDisable notification through Email.\n\n- \u003ccode\u003eGET /api/code/send/[RFcode]\u003c/code\u003e\nsend the specified rfcode. Return a status object: \u003ccode\u003e{\"status\": \"ok\"}\u003c/code\u003e or \u003ccode\u003e{\"status\": \"error\", \"error\": \"error description..\"}\u003c/code\u003e\n\n- \u003ccode\u003eGET /api/codes/ignored\u003c/code\u003e\nReturn a list of ignored codes stored in DB.\n\n- \u003ccode\u003eGET /api/codes/all\u003c/code\u003e\nReturn all the registered codes stored in DB.\n\n- \u003ccode\u003eGET /api/codes/available\u003c/code\u003e\nReturn all the available codes stored in DB. Available codes can be assigned to a new device card.\n\n- \u003ccode\u003eGET /api/cards/all\u003c/code\u003e\nReturn all the cards stored in DB.\n\n- \u003ccode\u003eGET /api/cards/get/[shortname]\u003c/code\u003e\nReturn a single card with the specified shortname.\n\n- \u003ccode\u003ePOST /api/cards/new\u003c/code\u003e\nform-data required parameters:\n\n        headline - a brief headline.\n        shortname - lower case, no spaces.\n        card_body - a description, html allowed.\n        room - lower case, no spaces.\n        type - must be one of the following types: switch/alarm/info\n        device - if type==switch gotta have on_code and off_code parameters. if type==alarm just the trigger_code parameter\n\nOptional parameter: \u003ccode\u003ecard_img\u003c/code\u003e, \u003ccode\u003ebackground_color\u003c/code\u003e (must be an hex color with).\nJson response: 200 OK - \u003ccode\u003e{\"done\": true, \"newCard\": ...}\u003c/code\u003e where newCard is the json card just inserted. Or \u003ccode\u003e{\"done\": \"false\", \"error\": \"error description...\"}\u003c/code\u003e\n\n- \u003ccode\u003eGET /api/cards/delete/[shortname]\u003c/code\u003e\nDelete the card with the specified shortname, it returns \u003ccode\u003e{\"status\": \"ok\", cards_deleted: 1}\u003c/code\u003e or \u003ccode\u003e{\"status\": \"error\", \"error\": \"error description..\"}\u003c/code\u003e\n\n- \u003ccode\u003ePOST /api/cards/arm-all\u003c/code\u003e\nArm all the alarm type cards. It returns \u003ccode\u003e{\"status\": \"ok\", cards_affected: n, armed: true}\u003c/code\u003e or \u003ccode\u003e{\"status\": \"error\", \"error\": \"error description..\"}\u003c/code\u003e\n\n- \u003ccode\u003ePOST /api/cards/disarm-all\u003c/code\u003e\nDisarm all the alarm type cards. It returns \u003ccode\u003e{\"status\": \"ok\", cards_affected: n, armed: false}\u003c/code\u003e or \u003ccode\u003e{\"status\": \"error\", \"error\": \"error description..\"}\u003c/code\u003e\n\n- \u003ccode\u003eGET /api/alarm/[shortname]/arm\u003c/code\u003e\nOnly alarm type cards can be armed.\n\n- \u003ccode\u003eGET /api/alarm/[shortname]/disarm\u003c/code\u003e\nOnly alarm type cards can be disarmed. (If disarmed no WebHook callbacks or any kind of notifications will be sent)\n\n- \u003ccode\u003eGET /api/switch/[shortname]/on\u003c/code\u003e\nTurn on a switch.\n\n- \u003ccode\u003eGET /api/switch/[shortname]/off\u003c/code\u003e\nTurn off a switch\n\n- \u003ccode\u003eGET /api/switch/[shortname]/toggle\u003c/code\u003e\nToggle a switch\n\n## WebHooks\n\nWebhooks allow you to build or set up integrations which subscribe to certain events on the iot-433mhz system. When one of those events is triggered, we'll send a HTTP POST payload to the webhook's configured URL. (thanks to [node-webhooks](https://github.com/roccomuso/node-webhooks))\nWebhooks can be used to catch several events:\n- alarm triggered event.\n- new card event.\n- card deleted event.\n- new code detected event.\n- switch toggle event.\n\nNB. In this current release WebHooks are not card-specific. For example, a single *alarmTriggered* event type catches every alarm trigger. It's up to you parse the payload and make sure that was the sensor you were wishing for.\n\nUse the API below to set up and interacts with WebHooks.\n\n- \u003ccode\u003ePOST /api/webhook/add/[WebHookShortname]\u003c/code\u003e\nAdd a new URL for the selected webHook.\nRequired parameters:\n\n        webHookShortname - Provided in url, it must be one of these*: alarmTriggered, newCard, cardDeleted, newCode, switchToggle.\n        url - the URL to which a HTTP POST request will be sent when the event get fired (the request carries a JSON payload field that gotta be parsed).\n\nLet's describe every event JSON payload you're gonna listen for according to the supplied \u003ccode\u003ewebHookShortname\u003c/code\u003e:\n\n\u003ccode\u003ealarmTriggered = {\"card_id\": \"...\", \"last_alert\": 1453..., \"code\": ..., \"shortname\": \"...\", \"room\": \"...\" }\u003c/code\u003e * NB. an alarmTriggered WebHook callback will be executed only if the alarm card is armed!\n\n\u003ccode\u003enewCard = {\"card_id\":\"...\", \"headline\": \"\", \"shortname\": \"\", \"card_body\": \"\", \"img\": \"\", \"type\": \"switch/alarm/info\", \"room\": \"\", \"device\": { \\*\\*\\* }}\u003c/code\u003e NB. device depends on **type**: if *switch*, we would look for these properties: on_code, off_code, notification_sound, is_on. If *alarm*: last_alert, trigger_code, notification_sound. If *info* device got no properties.\n\n\u003ccode\u003ecardDeleted = {\"card_id\": \"...\"}\u003c/code\u003e\n\n\u003ccode\u003enewCode = {\"code\": \"...\", \"bitlength\": ..., \"protocol\": ...}\u003c/code\u003e NB. The detected code could be ignored or already attached to a device card.\n\n\u003ccode\u003eswitchToggle = {\"card_id\": \"...\", \"is_on\": true/false, \"sent_code\": ..., \"timestamp\": 1453... }\u003c/code\u003e\n\n- \u003ccode\u003eGET /api/webhook/get\u003c/code\u003e\nReturn the whole webHook DB file.\n\n- \u003ccode\u003eGET /api/webhook/get/[WebHookShortname]\u003c/code\u003e\nReturn the selected WebHook.\n\n- \u003ccode\u003eGET /api/webhook/delete/[WebHookShortname]\u003c/code\u003e\nRemove all the urls attached to the selected webHook.\n\n- \u003ccode\u003ePOST /api/webhook/delete/[WebHookShortname]\u003c/code\u003e\nRemove only one single url attached to the selected webHook.\nA json body with the url parameter is required: { \"url\": \"http://...\" }\n\n- \u003ccode\u003ePOST /api/webhook/trigger/[WebHookShortname]\u003c/code\u003e\nTrigger a webHook. It requires a JSON body that will be turned over to the webHook URLs.\n\n# Telegram Bot \u0026 Notifications\n\nOut of the box, the iot-433mhz provides notifications through email and through a Telegram Bot. Of course you're free to develop your own notification system using our WebHooks API.\n**Notifications should be enabled and configured through the \u003ccode\u003eMenu \u003e Settings\u003c/code\u003e page.** This is how the Settings page looks like:\n\n![Telegram settings](https://github.com/roccomuso/iot-433mhz/blob/master/other/pics/iot-433mhz-telegram-settings.PNG?raw=true \"Telegram Settings\")\n\nBy default there is a 5 second notification delay (editable from \u003ccode\u003econfig.json:notificationDelay\u003c/code\u003e). So you won't be flooded by alarms signals.\n\nThe Email notification system is under construction [#18](https://github.com/roccomuso/iot-433mhz/issues/18).\n\n# Android \u0026 iOS Apps\n\nSoon will be available the official app on both the stores.\n\n# Pull requests\n\nIf you submit a pull request, thanks! There are a couple rules to follow though to make it manageable:\n\n- The pull request should be atomic, i.e. contain only one feature. If it contains more, please submit multiple pull requests. Reviewing massive, 1000 loc+ pull requests is extremely hard.\n- Likewise, if for one unique feature the pull request grows too large (more than 200 loc tests not included), please get in touch first.\n- Please stick to the current coding style. It's important that the code uses a coherent style for readability.\n- Do not include sylistic improvements (\"housekeeping\"). If you think one part deserves lots of housekeeping, use a separate pull request so as not to pollute the code.\n- Don't forget tests for your new feature.\n\n# Inspiration\n\nInspired by [pimatic-homeduino](https://www.npmjs.com/package/pimatic-homeduino-dst-dev) this is a project in his Beta stage. Documentation is under construction.\n\n# Author\n\n### Rocco Musolino - [@roccomuso](https://twitter.com/roccomuso)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froccomuso%2Fiot-433mhz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froccomuso%2Fiot-433mhz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froccomuso%2Fiot-433mhz/lists"}