GitHub - BluemarkInnovations/RemoteID-MQTT-subscriber: BluemarkInnovations/remoteID-MQTT-subscriber · GitHub (https://github.com/BluemarkInnovations/RemoteID-MQTT-subscriber)
citeturn11view0 [wordlim: 200] Crawled: 3 days ago; Content type: text/html; Source: open({"ref_id":"https://github.com/BluemarkInnovations/RemoteID-MQTT-subscriber","lineno":null}); Total lines: 264
L0: cite0†Skip to content L1: ## Navigation Menu
L2: 
L3: cite1†Sign in L4: 
L5: Appearance settings
L6: 
L7:   * Platform
L8: 
L9:     * AI CODE CREATION
L10:       * cite2†GitHub CopilotWrite better code with AI L11:       * cite3†GitHub Copilot appDirect agents from issue to merge L12:       * cite4†MCP RegistryIntegrate external tools L13: 
L14:     * DEVELOPER WORKFLOWS
L15:       * cite5†ActionsAutomate any workflow L16:       * cite6†CodespacesInstant dev environments L17:       * cite7†IssuesPlan and track work L18:       * cite8†Code ReviewManage code changes L19:       * cite9†Code QualityEnforce quality at merge L20:     * APPLICATION SECURITY
L21:       * cite10†GitHub Advanced SecurityFind and fix vulnerabilities L22:       * cite11†Code securitySecure your code as you build L23:       * cite12†Secret protectionStop leaks before they start L24: 
L25:     * EXPLORE
L26:       * cite13†Why GitHub L27:       * cite14†Documentation†docs.github.com L28:       * cite15†Blog†github.blog L29:       * cite16†Changelog†github.blog L30:       * cite17†Marketplace L31: 
L32: cite18†View all features L33: 
L34:   * Solutions
L35:     * BY COMPANY SIZE
L36:       * cite19†Enterprises L37:       * cite20†Small and medium teams L38:       * cite21†Startups L39:       * cite22†Nonprofits L40: 
L41:     * BY USE CASE
L42:       * cite23†App Modernization L43:       * cite24†DevSecOps L44:       * cite25†DevOps L45:       * cite26†CI/CD L46:       * cite27†View all use cases L47: 
L48:     * BY INDUSTRY
L49:       * cite28†Healthcare L50:       * cite29†Financial services L51:       * cite30†Manufacturing L52:       * cite31†Government L53:       * cite32†View all industries L54: 
L55: cite33†View all solutions L56: 
L57:   * Resources
L58:     * EXPLORE BY TOPIC
L59:       * cite34†AI L60:       * cite35†Software Development L61:       * cite36†DevOps L62:       * cite37†Security L63:       * cite38†View all topics L64: 
L65:     * EXPLORE BY TYPE
L66:       * cite39†Customer stories L67:       * cite40†Events & webinars L68:       * cite41†Ebooks & reports L69:       * cite42†Business insights L70:       * cite43†GitHub Skills†skills.github.com L71:     * SUPPORT & SERVICES
L72:       * cite14†Documentation†docs.github.com L73:       * cite44†Customer support†support.github.com L74:       * cite45†Community forum L75:       * cite46†Trust center L76:       * cite47†Partners L77: 
L78: cite48†View all resources L79: 
L80:   * Open Source
L81: 
L82:     * COMMUNITY
L83:       * cite49†GitHub SponsorsFund open source developers L84:     * PROGRAMS
L85:       * cite50†Security Lab†securitylab.github.com L86:       * cite51†Maintainer Community†maintainers.github.com L87:       * cite52†GitHub Stars†stars.github.com L88:       * cite53†Archive Program†archiveprogram.github.com L89: 
L90:     * REPOSITORIES
L91:       * cite54†Topics L92:       * cite55†Trending L93:       * cite56†Collections L94: 
L95:   * Enterprise
L96: 
L97:     * ENTERPRISE SOLUTIONS
L98:       * cite19†Enterprise platformAI-powered developer platform L99:     * AVAILABLE ADD-ONS
L100:       * cite10†GitHub Advanced SecurityEnterprise-grade security features L101:       * cite57†Copilot for BusinessEnterprise-grade AI features L102:       * cite58†Premium SupportEnterprise-grade 24/7 support L103: 
L104:   * cite59†Pricing L105: 
L106: Search`/`
L107: 
L108: cite1†Sign in L109: 
L110: cite60†Sign up L111: 
L112: Appearance settings
L113: You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
L114: 
L115: cite61†BluemarkInnovations / cite62†RemoteID-MQTT-subscriber Public
L116: 
L117:   * cite63†Notifications You must be signed in to change notification settings
L118:   * cite63†Fork 5 L119:   * cite63†Star L120:   * cite62†Code L121:   * cite64†Issues 0 L122:   * cite65†Pull requests 0 L123:   * cite66†Actions L124:   * cite67†Projects L125:   * cite68†Security and quality 0 L126:   * cite69†Insights L127: 
L128: Additional navigation options
L129: 
L130: main
L131: 
L132: cite70†Branches cite71†Tags L133: 
L134: [Input: Go to file]
L135: 
L136: Go to file
L137: 
L138: Code
L139: 
L140: Open more actions menu
L141: ## Latest commit
L142: 
L143: 
L144: 
L145: ## History
L146: 
L147: 50 Commits
L148: ## Folders and files
L149: Name  | Name  | Last commit message  | Last commit date
L150: --- | --- | --- | ---
L151: cite72†img | cite72†img |    |
L152: cite73†logs | cite73†logs |    |
L153: cite74†modules | cite74†modules |    |
L154: cite75†tests | cite75†tests |    |
L155: cite76†LICENSE | cite76†LICENSE |    |
L156: cite77†README.md | cite77†README.md |    |
L157: cite78†config.py | cite78†config.py |    |
L158: cite79†mqtt_sub.py | cite79†mqtt_sub.py |    |
L159: cite80†pytest.ini | cite80†pytest.ini |    |
L160: cite81†requirements-dev.txt | cite81†requirements-dev.txt |    |
L161: cite82†requirements.txt | cite82†requirements.txt |    |
L162: [Button: View all files]
L163: ## Repository files navigation
L164: 
L165:   *   * cite83†README L166:   * cite83†MIT license L167: 
L168: More items
L169: 
L170: # RemoteID-MQTT-subscriber
L171: ## What is it?
L172: 
L173: This repository contains reference code to subscribe to a MQTT broker and parse data from DroneScout receivers (such as ds230, ds240 or DroneScout SDK). These receivers can be purchased at cite84†https://dronescout.co/†dronescout.co The manual can be found here: cite85†manual†download.bluemark.io L174: DroneScout receivers detect broadcast/direct drone Remote ID signals (Bluetooth, WLAN); a "wireless number plate" technology that is or becomes mandatory in several parts of the world e.g. USA, EU, Japan. It supports all frequency bands (2.4 and 5 GHz) and transmission protocols (WLAN Beacon, WLAN NaN, Bluetooth 4 Legacy, Bluetooth 5 Long Range.)
L175: #OpenDroneID #RemoteID #FAA #F3411 #EASA #DIN_EN_4709-002 #dronetechnology
L176: ## Installation
L177: 
L178: The code is Python3 (3.6+) code. It needs these dependencies (tested under Ubuntu):
L179: 
L180:     `sudo apt install python3-paho-mqtt python3-bitstruct
L181:     `
L182: 
L183: or use pip3 to install these dependencies from `requirements.txt`
L184: 
L185:     `pip3 install -r requirements.txt
L186:     `
L187: Avoid `sudo pip3 install`, as it installs into the system Python and can conflict with packages managed by apt. If you're not using a virtual environment and need a system-wide install, prefer `pip3 install --user -r requirements.txt`.
L188: ## Configuration
L189: 
L190: DroneScout receivers output data using cite86†MQTT†en.wikipedia.org . MQTT is a sensor protocol that consists of publishers, subscribers and a broker. DroneScout receivers are a MQTT publisher. You need a MQTT broker where the sensors output their sensor data. This script is a MQTT subscriber.
L191: In the config.py file, enter the correct settings for the `broker`, `port`. Leave the `topic` to "#" to receive messages from all topics. Also add an `username` and `password` if your MQTT broker needs it. Note that `config.py` ships with a placeholder `broker = 'myserver'` — the script will not connect to anything until you replace it with your actual MQTT broker address.
L192: It is also strongly advised to use secure SSL connection to the MQTT broker (`port` 8883). For that also set the client_pem file. In case of non-SSL connections, use the `port` 1883.
L193: 
L194: If you want to log the detected Remote ID signals to a CSV file, please uncomment the `log_path` variable.
L195: 
L196: To disable printing of RemoteID message on the console uncomment `print_messages` variable and set it to False
L197: The subscriber also allows exporting the detections via cite87†SBS BaseStation†woodair.net . See section SBS BaseStation.
L198: ## Add-ons
L199: Besides broadcast/direct drone Remote ID signals, DroneScout receivers can receive other signals as well. This is introduced in firmware 20240927-1205 (and higher). For instance, an ADS-B 1090 MHz receiver can be added to the receiver. ADS-B transponder are used by most civil airplanes. ADS-B signals include the live location, flight ID and other information. Additonally in the USA (and some other countries), UAT at 978 MHz is used as well.
L200: This is a similar technology as ADS-B, but intended for smaller aircraft that fly at a lower alitude. Also DroneScout receivers can be equipped with an UAT 978 MHz receiver. Finally an LTE add-on (modem) can be integrated into the DroneScout receiver. This modem can be used for connectivity, but it can also be used as GNSS (GPS) receiver, so the sensor can tell where it is located. It can also publish mobile network statistics. More information at cite84†https://dronescout.co/†dronescout.co .
L201: ## Usage
L202: 
L203: Start the script to receive and show Remote ID signals of nearby drones.
L204: 
L205:     `python3 mqtt_sub.py
L206:     `
L207: ### SBS BaseStation
L208: 
L209: The subscriber code can output data via cite87†SBS BaseStation†woodair.net on a net socket. To enable this, uncomment the variables sbs_`server_ip_address` and `sbs_server_port` in config.py. Normally you only need to change the port. The IP address needs to be an IP address of the computer where this script runs. Only change it, if you want to have the SBS BaseStation export available on a particular network interface.
L210: This export data format is used by programs that display ADS-B data from airplanes. Examples of such programs that support this data format are: cite88†Virtual Radar Server†www.virtualradarserver.co.uk and cite89†FlightAirMap†www.flightairmap.com . A typical use case is, if you want to view both ADS-B data from airplanes and RemoteID signals from drones in one application. To configure a SBS BaseStation receiver in Virtual Radar Server, see this cite90†link†www.virtualradarserver.co.uk L211: Note: for exporting data, the normal Serial Number of RemoteID is too long. It is decided in this implementation to use an ICAO code starting with FF. This range is not assigned to a country. The remaining 4-digits in the ICAO code are based on the Serial Number of the drone (hash). In this way, each drone has its own unique ICAO code. The 8-character call sign is based on the first 4 digits of the Serial Number (manufacturer code) and the last 4 digits.
L212: ## Testing
L213: 
L214: The repository has a pytest suite covering the opendroneid/aircraft message decoding, CSV export and MQTT message routing. Install the extra test dependency and run it from the repository root:
L215: 
L216:     `pip3 install -r requirements-dev.txt
L217:     pytest
L218:     `
L219: 
L220: ## License
L221: 
L222: This project is licensed under the MIT License. See cite76†LICENSE for details.
L223: 
L224: ## About
L225: 
L226: BluemarkInnovations/remoteID-MQTT-subscriber
L227: 
L228: cite91†dronescout.co/dronescout-remote-id-receiver†dronescout.co L229: ### Topics
L230: 
L231: cite92†drone cite93†en4709-002 cite94†f3411 cite95†mqtt cite96†receiver cite97†remoteid L232: 
L233: ### Resources
L234: 
L235: cite98†Readme L236: 
L237: cite99†MIT license L238: 
L239: cite100†Activity L240: 
L241: ### Stars
L242: 
L243: 19 stars
L244: 
L245: ### Watchers
L246: 
L247: 2 watching
L248: 
L249: ### Forks
L250: 
L251: cite101†5 forks L252: 
L253: cite102†Report repository L254: 
L255: ## Releases
L256: 
L257: ## Packages
L258: 
L259: ## Contributors
L260: 
L261: ## Languages
L262: 
L263: You can’t perform that action at this time.
