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.txt
python main.py
Note: 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 tonmea
for NMEA Rate of Turn Sensor andmodbus
for Modbushost
,port
: ip and port of server where it is runningpublishtopic
: Topic to which the data to be published. Global fornmea
and formodbus
each register needs an topic update.unit
: unit of the data read. Supportcelsius
orfahrenheit
interval
: sensor measurements have an update frequency in secs. Optional fornmea
timeout
: 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. Supportcelsius
orfahrenheit
Note:
- Only
Holding Register
is supported inmodbus
- Default assumption for
Holding Register
isaddress
start 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.