Maritime-IoT-Gateway is a solution designed to facilitate secure and reliable data exchange between maritime IoT devices and cloud or on-premises systems. It acts as a bridge, enabling real-time monitoring, control, and analytics for maritime operations.
- Python 3.10+
- Git
git clone https://github.com/your-org/Maritime-IoT-Gateway.git
cd Maritime-IoT-Gateway
pip install -r requirements.txtpython main.pyNote: Data Acquisition depends on simulation script on Github: https://github.com/ChiquiTi2/CraneIoT
Edit the config.json file to set up device connections, protocols, and cloud endpoints.
config.json:
-
log_level- Set the Log Level for Gateway can be set toINFO,DEBUG,WARN. -
Data Acquisition:
protocol: Set tonmeafor NMEA Rate of Turn Sensor andmodbusfor Modbushost,port: ip and port of server where it is runningpublishtopic: Topic to which the data to be published. Global fornmeaand formodbuseach register needs an topic update.unit: unit of the data read. Supportcelsiusorfahrenheitinterval: sensor measurements have an update frequency in secs. Optional fornmeatimeout: connection timeout interval.register: JSON Object with key value pair of each registry containing (only formodbus)address: Modbus Register addressname: Name or Descriptionpublishtopic: Topic to which the data to be publishedunit: unit of the data read. Supportcelsiusorfahrenheit
Note:
- Only
Holding Registeris supported inmodbus - Default assumption for
Holding Registerisaddressstart from 0 and total count is based on number of item in array.
-
Data Transformation:
syncInterval: Interval to sync data when no change has occurred in last x duration.offset: Offset value to publish the data.publish: Protocol to publish the data to North bound. Supported Protocol ismqtt
-
MQTT (North bound):
host: IP or URL of mqtt brokerport: Port of mqtt brokerenable_lwt: enable LWT (Last Will & Testament) send message to each topic with the content: "connection lost"username: username of authentication.password: password of authentication.keepalive: kept alive duration for connection.
Contributions are welcome! Please open issues or submit pull requests.
This project is licensed under the MIT License.