Giter Club home page Giter Club logo

fleet-management's Introduction

OpenRemote v3

CI/CD Open Source? Yes!

Source · Documentation · Forum · Issues · Docker Images · OpenRemote Inc.

Welcome to OpenRemote; an intuitive user-friendly 100% open source IoT platform. You can build a complete IoT device management solution including: device management and auto provisioning, customisation of asset types, automation via when-then, flow, javascript and groovy rules, data analytics, connectivity via several protocol agents and manager APIs (e.g. MQTT broker, HTTP/REST, WS), Multi-tenancy (realms), Users and roles management, Edge gateway, Front-end UI web components and consoles, and an Insights dashboard builder.

As the code base is 100% open source, applications are limitless. Here's an architecture overview:

Quickstart

You can quickly try the online demo with restricted access, login credentials are smartcity:smartcity:

Online demo

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 pull
    docker-compose -p openremote up

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).

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 openremote up -d

or

CMD:

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

What next

Try creating assets, agents, rules, users, realms, etc. using the Manager UI, please refer to the wiki for more information, some things to try:

Where's the data stored?

Persistent data is stored in a PostgreSQL DB which is stored in the openremote_postgresql-data docker volume which is durably stored independently of the running containers (see all with docker volume ls). Note that historical attribute data is purged daily based on value of OR_DATA_POINTS_MAX_AGE_DAYS; this value can also be overridden for individual attributes by using the dataPointsMaxAgeDays configuration item. See the Developer Guide for details on making backups of the database.

Contributing to OpenRemote

For information and how to set up a development environment, see the Developer Guide.

We work with Java, Groovy, TypeScript, Gradle, Docker, and a wide range of APIs and protocol implementations.

We follow the Github Flow workflow with tags and releases for published versions of our components; when working on the codebase create descriptive branch names (e.g. feature/cool_feature_x, hotfix/flux_capacitor, issue/123, etc.).

When your changes are complete then create a Pull Request ensuring that your branch is up-to-date with the source branch and that code changes are covered by tests and that the full test suite passes.

Discuss OpenRemote

Join us on the community forum.

fleet-management's People

Contributors

pankalog avatar richturner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

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.

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.

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.

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)

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?

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.