Git Product home page Git Product logo

openremote / fleet-management Goto Github PK

View Code? Open in Web Editor NEW
7.0 8.0 1.0 2.54 MB

The Fleet Management/Telematics implementation on top of the OpenRemote open-source IoT device management platform.

Home Page: https://openremote.io/fleet-telematics/

License: Other

Java 81.03% Dockerfile 0.27% Groovy 18.20% Shell 0.50%
dashboard docker docker-compose fleet fleet-management fleet-telematics fleet-tracking flespi gps-trace gps-tracking

fleet-management's Introduction

OpenRemote Fleet Management Integration v1

CI/CD Open Source? Yes!

This repository contains the OpenRemote custom project that contains full support for fleet management features, like location tracking and session tracking, and also the industry-first complete, automatic data recognition from any Teltonika Telematics device model.

Please look at the wiki for the tutorial on how to set up your own fleet management system, and the Developer Guide to understand the inner workings of the fleet management implementation.

Quickstart

An online demo will be made available to the public shortly, but you can still run the OpenRemote fleet management implementation locally using Docker:

The quickest way to get your own environment with full access is to make use of our docker images (both amd64 and arm64 are supported).

  1. Make sure you have Docker Desktop installed (v18+).
  2. Download the docker compose file: OpenRemote Stack (Right click 'Save link as...')
  3. In a terminal cd to where you just saved the compose file and then run:
    docker-compose -p fleet-management up -d

If all goes well then you should now be able to access the OpenRemote Manager UI at https://localhost. You will need to accept the self-signed certificate, see here for details how to do this in Chrome (similar for other browsers).

To configure the devices and OpenRemote to properly communicate, check the tutorial and quickstart guides in the wiki.

Login credentials

Username: admin
Password: secret

Changing host and/or port

The URL you use to access the system is important, the default is configured as https://localhost if you are using a VM or want to run on a different port then you will need to set the OR_HOSTNAME and OR_SSL_PORT environment variables, so if for example you will be accessing using https://192.168.1.1:8443 then use the following startup command:

BASH:

OR_HOSTNAME=192.168.1.1 OR_SSL_PORT=8443 docker-compose -p fleet-management up -d

or

CMD:

cmd /C "set OR_HOSTNAME=192.168.1.1 && set OR_SSL_PORT=8443 && docker-compose -p fleet-management up -d"

Custom Project Format

To create the OpenRemote fleet management integration, a new custom project was created using OpenRemote's custom-project template. To view the changes of files between the original custom-project repository and the current state of the repository, press here. In this way, you can see the files that have been added since the creation of this repository.

This repository uses the feature/fleet-management branch of the main OpenRemote repository as its core, specifically for adding more UI-related features. If the UI features are not something that interest you, you're encouraged to change the submodule to use the master OpenRemote branch.

Support and Community

For support, comments, questions, and concerns, please head to OpenRemote's forum and post any questions here. Issues and Pull-Requests created here could be ignored, so if they do, please contact us through the forum.

fleet-management's People

Contributors

pankalog avatar richturner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

pankalog

fleet-management's Issues

Attribute.setTimestamp() seems to not be working

When the Teltonika device connects to OpenRemote and there are a lot of payloads to be delivered (that were not able to be delivered while the device cannot get a solid connection to OpenRemote), it seems that the set timestamps for the attributes are not being stored. We can see this by the fact that any attribute of the payload in question does not have the correct timestamp, but the attribute "lastContact", that stores that timestamp, has a completely different value compared to the attributes. The attributes have the timestamp of the current time.

Using a debugger, I can see that the timestamps are being stored properly until and when the attributes are passed to AssetProcessingService.

Investigate Addition of openrouteservice in the OpenRemote stack

I have come across using openrouteservice. It can be hosted locally as a docker container, it is open-source, and it returns the routes in GeoJSON format. It not only allows calculating routes, but also allows isochrone maps, time-distance matrices, and route optimization. In the same way that an mbtiles file is required for Maps to be rendered, openrouteservice requires a PBF file that contains all the metadata for shops, roads, streets, traffic indices etc. to then generate a route. It is able to generate a route by walking, biking, driving, through bus schedules, and even hiking, and the files are easily publically available for all regions of the world.

I have gotten the container up and running within my laptop, and it offers routes between points in stellar accuracy and efficiency, all within localhost, and automatically returns the result in GeoJSON format that is easily understandable by MapLibre. All that with minimal setup.

Using openrouteservice would allow OpenRemote to figure out which assets/cars are closest to a certain point of the map, create pre-planned routes for assets to follow, figure out routes between a car and a location it needs to go to, and even make an optimization feature about the efficiency of the routing a driver preferred over the optimal. By implementing openrouteservice, a considerable amount of features are then allowed to be implemented within OpenRemote.

There is a plethora of use-cases for which an integration of openrouteservice within OpenRemote would make development much faster and more efficient.

Maybe it would be a good idea to implement openrouteservice as a ContainerService, allowing for dependency injection, and thus accordingly disable specific features if the openrouteservice container is not present.

I am imagining something like ManagerKeycloakIdentityProvider or more appropriately MapService, the part of the TileServer implementation. That is, if we are unable to generate a connection to the ORS docker container, use the limited MapLibre functionality.

Implement Asset Types for configuration

To allow different parameter ID lists for different device models, we require to create a new Asset Type that can contain the configuration data for each device type. That would include a list of TeltonikaParameters, maybe some other metadata, etc. We also need to insert a default configuration on handler creation if it does not exist.

We would also need a general configuration asset type, for setting default model number, and any other parameter data we would require.

Add Attribute Description to Teltonika AVL Parameters

The Teltonika parameter list also includes a Description field, that describes exactly what each parameter means. For example, if it is describing a state variable, it explains which value represents which states, etc.

It would be useful to integrate this within each Attribute for OpenRemote.

If there is no pre-implemented UI element for this, I thought of adding a icon like this one next to the update attribute icon (if the asset is not read-only). When pressed, a pop-up appears with a title like "Attribute Description" and the body being the description provided by Teltonika.

Issues keycloak and access to master

Hi
I followed the quick start and tutorial (just had to use docker compose instead of docker-compose). I tried it on a remote server running Server 22.04 LTS with a FQDM and on Docker Desktop on Windows 10. In both cases I get running images, but cannot login or do anything with the fleet-management. There are errors loading parts in the dev tools:
image

image

I tried to install openremote images to see if the issue was on my side. But this one works as expected:
image

image

Is there a known issue? which logs could I check to get what's going wrong?

SendAttributeEvent() - new MetaItems are not added

SendAttributeEvent() ONLY updates the value of the Attribute, not any of the attribute's parameters. We could use this, by retrieving all of the already-created Attributes, seeing if they already exist in the Attribute, and if they do, only parse the value. If we do that, we reduce computation time for each packet.

Demo Data

Got pankalog/solingenDemo back up to working, needed to rebuild docker-compose and reconstruct the OSM graph.

Ideally:

  • Write docker-compose to maybe wget files from geofabriek automatically, and properly mount them to the correct volumes? Users would just enter their PBF file link as an env var and automatically retrieve it and mount it and recreate the graph for it

  • Need to decide if I should use MQTT with paho and native communication or the TCP server ( Python <-> TCP server <-> OpenRemote)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.